#include <windows.h>#include <stdio.h>#include <conio.h>int main(void)
{
   COMMTIMEOUTS timeouts;
   HANDLE handle;
   DCB dcb;   char buffer[1000] = "abcdefghijklmnopqrstuvwxyz";
   DWORD dwLen;

   handle = CreateFile("\\\\.\\COM1", GENERIC_READ | GENERIC_WRITE,               0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);   if (handle == INVALID_HANDLE_VALUE)
   {
      printf("CreateFile() Failed\n");      return 1;
   }   timeouts.ReadIntervalTimeout        = 300;   timeouts.ReadTotalTimeoutMultiplier = 0;   timeouts.ReadTotalTimeoutConstant   = 0;   timeouts.WriteTotalTimeoutMultiplier= 0;   timeouts.WriteTotalTimeoutConstant  = 0;   if (!SetCommTimeouts(handle, &timeouts))
   {
      printf("SetCommTimeouts() Failed\n");      return 2;
   }

   ZeroMemory(&dcb, sizeof(dcb));

   dcb.DCBlength           = sizeof(dcb);
   dcb.BaudRate            = 19200; 
   dcb.fParity             = TRUE;
   dcb.fOutxCtsFlow        = false;
   dcb.fOutxDsrFlow        = false;
   dcb.fDtrControl         = DTR_CONTROL_ENABLE;
   dcb.fDsrSensitivity     = FALSE;
   dcb.fTXContinueOnXoff   = FALSE;
   dcb.fOutX               = false;
   dcb.fInX                = false;
   dcb.fNull               = FALSE;
   dcb.fRtsControl         = RTS_CONTROL_ENABLE;
   dcb.fAbortOnError       = false;
   dcb.ByteSize            = 8;
   dcb.Parity              = ODDPARITY;
   dcb.StopBits            = ONESTOPBIT;   if (!SetCommState(handle, &dcb))
   {
      printf("SetCommState() Failed\n");      return 1;
   }   while (! _kbhit() )
   {
      printf("W");      if (!WriteFile(handle, buffer, 40, &dwLen, 0))
         printf("\rWriteFile() returned %d\n", GetLastError());

      printf("R");      if ( !ReadFile(handle, buffer, 100, &dwLen, 0) )
         printf("\rReadFile() returned %d\n", GetLastError());
   }

   printf("\nDone!\n");

   CloseHandle(handle);   return 0;
}