home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / win_lrn / comm / wrtcomm.c < prev    next >
Text File  |  1988-08-10  |  4KB  |  109 lines

  1. /*
  2.  *  WriteComm
  3.  *
  4.  *  This program demonstrates the use of the function WriteComm.
  5.  *  It attempts to write a specified number of characters to the 
  6.  *  communication device that has already been opened. Before 
  7.  *  attempting to do any write, the communication device must have 
  8.  *  its device control block set up properly to a correct configuration.
  9.  */
  10.  
  11. #include "windows.h"
  12.  
  13. /* Procedure called when the application is loaded for the first time */
  14. BOOL WinInit( hInstance )
  15. HANDLE hInstance;
  16. {
  17.     WNDCLASS   wcClass;
  18.  
  19.     /* registering the parent window class */
  20.     wcClass.hCursor        = LoadCursor( NULL, IDC_ARROW );
  21.     wcClass.hIcon          = LoadIcon (hInstance, (LPSTR)"WindowIcon");
  22.     wcClass.lpszMenuName   = (LPSTR)NULL;
  23.     wcClass.lpszClassName  = (LPSTR)"Wrtcomm";
  24.     wcClass.hbrBackground  = (HBRUSH)GetStockObject( WHITE_BRUSH );
  25.     wcClass.hInstance      = hInstance;
  26.     wcClass.style          = CS_HREDRAW | CS_VREDRAW;
  27.     wcClass.lpfnWndProc    = DefWindowProc;
  28.     wcClass.cbClsExtra     = 0;
  29.     wcClass.cbWndExtra     = 0;
  30.  
  31.     RegisterClass( (LPWNDCLASS)&wcClass );
  32.     return TRUE;        /* Initialization succeeded */
  33. }
  34.  
  35. int PASCAL WinMain( hInstance, hPrevInstance, lpszCmdLine, cmdShow )
  36. HANDLE hInstance, hPrevInstance;
  37. LPSTR lpszCmdLine;
  38. int cmdShow;
  39. {
  40.     HWND  hWnd;            /* Handle to the parent window             */
  41.     short nCid;            /* Short integer identifying the opened
  42.                             * communication device                    */
  43.     short nBytes;          /* The number of characters written        */
  44.     DCB   dcb;             /* The device control block                */
  45.        
  46.     WinInit( hInstance );
  47.  
  48.     hWnd = CreateWindow((LPSTR)"Wrtcomm",
  49.                         (LPSTR)"Writing to Communication Devices",
  50.                         WS_OVERLAPPEDWINDOW,
  51.                         50,                /* x         */
  52.                         50,                /* y         */
  53.                         600,               /* width     */
  54.                         250,               /* height    */
  55.                         (HWND)NULL,        /* no parent */
  56.                         (HMENU)NULL,       /* use class menu */
  57.                         (HANDLE)hInstance, /* handle to window instance */
  58.                         (LPSTR)NULL        /* no params to pass on */
  59.                         );
  60.  
  61.     /* Make window visible according to the way the app is activated */
  62.     ShowWindow( hWnd, cmdShow );
  63.     UpdateWindow( hWnd );
  64.  
  65.     /* attempt to open the com1 port */
  66.     nCid = OpenComm ((LPSTR)"COM1", 25, 25);
  67.     if (nCid < 0) 
  68.       {
  69.         MessageBox (hWnd, (LPSTR)"Com port not opened!!",(LPSTR)NULL,MB_OK); 
  70.         return 0;
  71.       }
  72.  
  73.     /* the communication device control block must be set to the appropriate
  74.      * settings of the other dumb terminal in order to read and write
  75.      * properly
  76.      */
  77.     if (GetCommState (nCid, (DCB FAR *) &dcb) >= 0)
  78.       { dcb.BaudRate = 9600;
  79.         dcb.ByteSize = 8;
  80.         dcb.StopBits = ONESTOPBIT;
  81.         dcb.Parity   = NOPARITY;
  82.         dcb.fRtsflow = FALSE;
  83.         dcb.fDtrflow = FALSE;
  84.         dcb.fOutX    = FALSE;
  85.         dcb.fInX     = FALSE;
  86.         dcb.fNull    = FALSE;
  87.         dcb.XonLim   = 1;
  88.         dcb.XoffLim  = 20;
  89.       }
  90.  
  91.     SetCommState ((DCB FAR *) &dcb);
  92.  
  93.     nBytes = WriteComm (nCid, (LPSTR)"Writing to COM port #1", 22);
  94.     if (nBytes > 0)
  95.       MessageBox (hWnd, (LPSTR)"Written successfully", (LPSTR)"OK", MB_OK);
  96.     else
  97.       /* Error should be checked by calling GetCommError at this point 
  98.        * so that other communiation function will work properly
  99.        */
  100.       MessageBox (hWnd, (LPSTR)"Error Occurred", (LPSTR)"ERROR", MB_OK);
  101.  
  102.     /* must close the communication device before leaving the program */
  103.     CloseComm (nCid);
  104.  
  105.     return 0; 
  106. }
  107.  
  108.  
  109.