Code: Select all
#include <windows.h>
#include <stdio.h>
int main(int argc, char **argv)
{
unsigned char szBuffer[1];
DCB dcb = {0};
DWORD dwRead;
HANDLE hComm;
OVERLAPPED ovlr = {0};
COMMTIMEOUTS cto;
// Create events for overlapped operation
ovlr.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
// Open the port
hComm = CreateFile("\\\\.\\COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
// Get the state of the device and modify it
dcb.DCBlength = sizeof(dcb);
GetCommState(hComm, &dcb);
dcb.BaudRate = CBR_115200;
dcb.StopBits = ONESTOPBIT;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.fParity = FALSE;
SetCommState(hComm, &dcb);
// Set the timeout parameters nonsensically
cto.ReadIntervalTimeout = 1000;
cto.ReadTotalTimeoutConstant = 1000;
cto.ReadTotalTimeoutMultiplier = 1000;
cto.WriteTotalTimeoutConstant = 1000;
cto.WriteTotalTimeoutMultiplier = 1000;
SetCommTimeouts(hComm, &cto);
while (1){
ReadFile (hComm, szBuffer, sizeof(szBuffer), &dwRead, &ovlr);
if ( GetOverlappedResult(hComm, &ovlr, &dwRead, TRUE) )
{
// Process data in szBuffer buffer
}
}
// Close the device
CloseHandle(hComm);
return 0;
}