Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Serial port ReadFile problem

53 views
Skip to first unread message

aleksa

unread,
Apr 19, 2013, 6:37:48 AM4/19/13
to
I'm having a problem with the serial port code.

The code is below.

I just do:
opencomm();
send();
closecomm();

and the ClearCommError() (inside recv()) returns in
comstat.cbInQue the same amount that was sent.

So, if sizeof (sendbuff) is 100,
I get 100 in comstat.cbInQue.

After reading one byte with ReadFile,
comstat.cbInQue decrements.
(after subsequent ClearCommError() of course)

The values read are not the ones that were written.

The same code works in another app,
so I'm puzzled why it doesn't work here.

Aleksa


static HANDLE hComm;

static void opencomm (void)
{
static COMMTIMEOUTS timeouts = {0,0,0,0,0};

static DCB dcb = {
sizeof (DCB), // DCBlength
115200, // * BaudRate
1, // fBinary
0, // * fParity
0, // fOutxCtsFlow
0, // fOutxDsrFlow
0, // fDtrControl
0, // fDsrSensitivity
1, // fTXContinueOnXoff
0, // fOutX
0, // fInX
0, // fErrorChar
0, // fNull
0, // fRtsControl
0, // fAbortOnError
0, // fDummy2
0, // wReserved
8*k, // XonLim
2*k, // XoffLim
8, // * ByteSize
0, // * Parity
0, // * StopBits
0, // XonChar
0, // XoffChar
0, // ErrorChar
0, // EofChar
0, // EvtChar
0 // wReserved1
};

hComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hComm != INVALID_HANDLE_VALUE) {
SetupComm(hComm, 16*k, 16*k);
SetCommState(hComm, &dcb);
SetCommTimeouts(hComm, &timeouts);
}
}

static void closecomm (void)
{
CloseHandle(hComm);
}

static BYTE recv (void)
{
BYTE text;
DWORD temp;

COMSTAT comstat;

while (1) {
ClearCommError(hComm, &temp, &comstat);
if (comstat.cbInQue != 0) break;

Sleep(1);
}

ReadFile(hComm, &text, 1, &temp, NULL);

return text;
}

static void send (void)
{
DWORD temp;

// send to other comp
WriteFile(hComm, sendbuff, sizeof (sendbuff), &temp, NULL);

// check other comp done
if (recv() != 0xAA) {
Beep(1000, 100);
quit(); // comm error
}
}


aleksa

unread,
Apr 19, 2013, 7:45:52 AM4/19/13
to
I should have clarified that no device is
actually connected to the serial port.


aleksa

unread,
Apr 20, 2013, 2:38:11 AM4/20/13
to
Any idea what could have happen to my system?
I've tried two older programs that have the same code and they both don't work anymore.

BTW, the first 10 bytes I receive are FE FE 33 FE FF FF FF FF 9F FE
does that mean something to someone?

Jasen Betts

unread,
Apr 20, 2013, 3:39:17 AM4/20/13
to
have you connected to in IRDA adaptoro instead of to an RS232 port?

--
⚂⚃ 100% natural

--- news://freenews.netfront.net/ - complaints: ne...@netfront.net ---

aleksa

unread,
Apr 20, 2013, 4:50:19 AM4/20/13
to
> have you connected to in IRDA adaptoro instead of to an RS232 port?

No.

It was the cable. Not properly shielded and too long.
0 new messages