Hi all,
We have an application that communicates over serial. For large data sets,
if the application writes/reads data in chunks of ~4k then it might either
unable to send or receive data intermittently. There are no line errors
set when it fails to send/receive data. This happens only on dell laptops
but works fine on dell desktops. If I make the chunk size as 1k, it works
on laptops also. For every chunk that an end writes, it will receive an
ack from the other end. We have to increase the chunk size for
performance.
Flow control is hardware. Here are the dcb settings:
dcb.fBinary = TRUE;
dcb.ByteSize = 8; // 8; // DATABITS_8;
dcb.Parity = eNoParity; // NOPARITY; PARITY_NONE;
dcb.fParity = FALSE;
dcb.StopBits = eOneBit; // ONESTOPBIT; STOPBITS_10;
dcb.fOutX = 0;
dcb.fInX = 0;
dcb.BaudRate = 115200; // 9600; BAUD_9600;
dcb.fOutxDsrFlow = FALSE;
//set XonLim and Xoff limit
dcb.XonLim = 500;
dcb.XoffLim = 500;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity = FALSE;
dcb.fOutxCtsFlow = TRUE;
dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
I have tried setting up the Queue sizes for IN and OUT to 20k but it is
still failing on laptops.
Is there anything that I need to set?
Let me know.
Thanks in advance.
Mmmm … since you are using Xon/Xoff, you could try to set off all handshaking, also at the hardware side ( not wired through) !
Check also again if
dcb.fOutxCtsFlow = TRUE;
dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
match with :
dcb.fOutxDsrFlow = FALSE;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
----- Original Message -----
From:
To: “Windows System Software Devs Interest List”
Sent: Tuesday, September 16, 2003 6:31 AM
Subject: [ntdev] Serial Port read/write problems on dell laptops
> Hi all,
>
> We have an application that communicates over serial. For large data sets,
> if the application writes/reads data in chunks of ~4k then it might either
> unable to send or receive data intermittently. There are no line errors
> set when it fails to send/receive data. This happens only on dell laptops
> but works fine on dell desktops. If I make the chunk size as 1k, it works
> on laptops also. For every chunk that an end writes, it will receive an
> ack from the other end. We have to increase the chunk size for
> performance.
>
> Flow control is hardware. Here are the dcb settings:
> dcb.fBinary = TRUE;
> dcb.ByteSize = 8; // 8; // DATABITS_8;
> dcb.Parity = eNoParity; // NOPARITY; PARITY_NONE;
> dcb.fParity = FALSE;
> dcb.StopBits = eOneBit; // ONESTOPBIT; STOPBITS_10;
> dcb.fOutX = 0;
> dcb.fInX = 0;
> dcb.BaudRate = 115200; // 9600; BAUD_9600;
> dcb.fOutxDsrFlow = FALSE;
>
> //set XonLim and Xoff limit
>
> dcb.XonLim = 500;
> dcb.XoffLim = 500;
>
> dcb.fDtrControl = DTR_CONTROL_DISABLE;
> dcb.fDsrSensitivity = FALSE;
> dcb.fOutxCtsFlow = TRUE;
> dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;
>
> I have tried setting up the Queue sizes for IN and OUT to 20k but it is
> still failing on laptops.
>
> Is there anything that I need to set?
>
> Let me know.
>
> Thanks in advance.
>
> —
> Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@compaqnet.be
> To unsubscribe send a blank email to xxxxx@lists.osr.com
>