DTR Flow Control

lawson_whitney at juno.com lawson_whitney at juno.com
Sat Mar 2 22:42:47 CST 2002


On Thu, 28 Feb 2002, Michael Cardenas wrote:

> The parts of the source I'm using are not very different from yours.
>
> I picked up the latest source and tried the app and it still has the same
> behavior. It can talk to the modem enough to get it to connect to the ppp
> server, but it cannot communicate over the network.
>
> I've attached a trace using my app with the latest source. The application
> seems to be stuck waiting for data and using ClearCommError to check the
> number of bytes received. It calls GetOverlappedResult along with
> GetLastError to check when the pending io operation has completed.
>
> Maybe there's something wrong with the way overlapped io is implemented when
> it interacts with a serial port. The documentation calls for the user to
> manually set the file pointer when using overlappedio, which doesn't seem
> like it would work on a serial port. The set_file_pointer function in
> server.c doesn't check for serial ports, but I'm not familiar enough with
> serial communications under linux to know if it matters. I tried to disable
> set_file_pointer for serial ports, but this didn't seem to have any effect.
>
That doesn't make much sense to me.  I can't see why a comm port should
be lseekable, if that is what you mean.  I don't much trust Microsoft
doco either.  The app doesn't seem to be doing set_file_pointer on the
modem either.

> michael

I don't know about that yet, but it seems to me that GetCommState is
incorrectly creating lpdcb with fParity - if that is indeed what it is
and the structure and names are correct, and then the dumb app is just
using it.  Could you try it this helps?


diff -ur was/dlls/kernel/comm.c is/dlls/kernel/comm.c
--- was/dlls/kernel/comm.c	Fri Mar  1 15:19:45 2002
+++ is/dlls/kernel/comm.c	Sat Mar  2 23:22:09 2002
@@ -1235,19 +1235,17 @@
 	        default:
 		        ERR("unknown size %x \n",port.c_cflag & CSIZE);
 	}	
-	
-        if(port.c_iflag & INPCK)
-            lpdcb->fParity = TRUE;
-        else
-            lpdcb->fParity = FALSE;
+
 #ifdef CMSPAR
 	switch (port.c_cflag & (PARENB | PARODD | CMSPAR))
 #else
 	switch (port.c_cflag & (PARENB | PARODD))
 #endif
 	{
+                lpdcb->fParity = TRUE;
 		case 0:
 			lpdcb->Parity = NOPARITY;
+                        lpdcb->fParity = FALSE;
 			break;
 		case PARENB:
 			lpdcb->Parity = EVENPARITY;


________________________________________________________________
GET INTERNET ACCESS FROM JUNO!
Juno offers FREE or PREMIUM Internet access for less!
Join Juno today!  For your FREE software, visit:
http://dl.www.juno.com/get/web/.




More information about the wine-devel mailing list