home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / win_lrn / comm / trncomch.c < prev    next >
C/C++ Source or Header  |  1988-08-10  |  3KB  |  102 lines

  1. /*
  2.  *  TransmitCommChar
  3.  *  trncomch.c
  4.  *
  5.  *  This program demonstrates the use of the function TransmitCommChar.
  6.  *  It puts the specified character at the header of the transmit queue
  7.  *  of the communication device for immediate transmission.
  8.  *
  9.  *  Note: Depending on how com1 is set up, this may have unusual side
  10.  *  effects.
  11.  *
  12.  */
  13.  
  14. #include <windows.h>
  15. #include <stdio.h>
  16.  
  17. int    PASCAL WinMain (hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  18. HANDLE hInstance, hPrevInstance;
  19. LPSTR lpszCmdLine;
  20. int    cmdShow;
  21. {
  22.   HWND  hWnd;
  23.   short    nCid;            /* identifer for open com device */
  24.   short    nFlag;           /* Result of the TransmitCommChar function */
  25.   DCB   dcb;             /* The device control block */
  26.   BYTE  nChar;           /* Byte value of the char transmitted */
  27.   char    szBuffer[40];
  28.   WNDCLASS   wcClass;
  29.  
  30.   wcClass.hCursor        = LoadCursor (NULL, IDC_ARROW);
  31.   wcClass.hIcon          = LoadIcon (hInstance, "WindowIcon");
  32.   wcClass.lpszMenuName   = NULL;
  33.   wcClass.lpszClassName  = "Trncomch";
  34.   wcClass.hbrBackground  = GetStockObject (WHITE_BRUSH);
  35.   wcClass.hInstance      = hInstance;
  36.   wcClass.style          = CS_HREDRAW | CS_VREDRAW;
  37.   wcClass.lpfnWndProc    = DefWindowProc;
  38.   wcClass.cbClsExtra     = 0;
  39.   wcClass.cbWndExtra     = 0;
  40.  
  41.   RegisterClass ( (LPWNDCLASS) & wcClass);
  42.  
  43.   hWnd = CreateWindow ("Trncomch", "Transmitting Characters",
  44.       WS_OVERLAPPEDWINDOW, 50, 50, 600, 250,
  45.       NULL, NULL, hInstance, NULL);
  46.  
  47.   ShowWindow (hWnd, cmdShow);
  48.   UpdateWindow (hWnd);
  49.  
  50.   nCid = OpenComm ("COM1", 20, 20);
  51.  
  52.   if (nCid < 0)
  53.   {
  54.     MessageBox (hWnd, "Com port not opened!!", "OpenComm", MB_OK);
  55.     return 0;
  56.   }
  57.  
  58. /* set the device control block of the communication device */
  59.   if (GetCommState (nCid, (DCB FAR * ) & dcb) >= 0)
  60.   {
  61.     dcb.BaudRate = 9600;
  62.     dcb.ByteSize = 8;
  63.     dcb.StopBits = ONESTOPBIT;
  64.     dcb.Parity   = NOPARITY;
  65.     dcb.fRtsflow = FALSE;
  66.     dcb.fDtrflow = FALSE;
  67.     dcb.fOutX    = FALSE;
  68.     dcb.fInX     = FALSE;
  69.     dcb.fNull    = FALSE;
  70.     dcb.XonLim   = 1;
  71.     dcb.XoffLim  = 20;
  72.   }
  73.  
  74.   SetCommState ( (DCB FAR * ) & dcb);
  75.  
  76.   MessageBox (hWnd, "Ready to transmit char", "Ready?", MB_OK);
  77.  
  78. /* Sending the alphabets over to a dumb terminal immediately. nFlag
  79.    * is negative if the character cannot be transmitted. 
  80.    */
  81.   for (nChar = 65; nChar <= 90; nChar++)
  82.   {
  83.     nFlag = TransmitCommChar (nCid, nChar);
  84.     if (!nFlag)
  85.     {
  86.       sprintf (szBuffer, "Character %c transmitted", nChar);
  87.       MessageBox (hWnd, szBuffer, "OK", MB_OK);
  88.     }
  89.     else
  90.     {
  91.       sprintf (szBuffer, "Character %c not transmitted", nChar);
  92.       MessageBox (hWnd, szBuffer, "FAIL", MB_OK);
  93.     }
  94.   }
  95.  
  96. /* must close the communication device before leaving the program */
  97.   CloseComm (nCid);
  98.   return 0;
  99. }
  100.  
  101.  
  102.