home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / gio-201.zip / giovio2.c < prev    next >
C/C++ Source or Header  |  1994-03-16  |  3KB  |  129 lines

  1. ///////////////////////////////////////////////////////////////////////////
  2. // GIOVIO2
  3. //
  4.  
  5. #define INCL_BASE
  6. #include <os2.h>
  7.  
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <stdlib.h>
  11. #include <ctype.h>
  12. #include <io.h>
  13.  
  14. // GIO
  15. #include "gio2.h"
  16.  
  17. #define EXITKEY 0x2D
  18. #define CLRSCRN 0x2E
  19.  
  20. LONG CommIn(HCOMINFO);
  21. LONG CommOut(HCOMINFO);
  22.  
  23. CHAR TempString[300];
  24.  
  25. void main(INT ArgCount, CHAR **ArgVars)
  26. {
  27.     BOOL    KeepLooping = TRUE;
  28.     CHAR    ComPort[6];
  29.     KBDINFO KBStatus;
  30.     HCOMINFO hComInfo;
  31.  
  32.     if (ArgCount < 2)
  33.     {
  34.         printf("\nUsage:  GIOVIO comport#\n");
  35.  
  36.         exit(1);
  37.     }
  38.  
  39.     strcpy(TempString, "GIOVIO... A VIO test pgm for Gern's IO routines...\n\r");
  40.     VioWrtTTY(TempString, strlen(TempString), 0);
  41.  
  42.     // Set up keyboard
  43.  
  44.     KBStatus.cb = sizeof(KBStatus);
  45.     KbdGetStatus(&KBStatus, 0);
  46.  
  47.     KBStatus.fsMask &= 0xFFF0;
  48.     KBStatus.fsMask |= KEYBOARD_ECHO_OFF | KEYBOARD_BINARY_MODE;
  49.     KbdSetStatus(&KBStatus, 0);
  50.  
  51.     sprintf(ComPort, "COM%c", ArgVars[1][0]);
  52.  
  53.     if (ComOpen(ComPort, 0, 19200, 'N', 8, 1, 0, &hComInfo))
  54.     {
  55.         printf("\nCan't Open '%s' (%ld)!\n", ComPort, hComInfo);
  56.  
  57.         exit(1);
  58.     }
  59.  
  60.     ComRXPurge(hComInfo);
  61.  
  62.     do
  63.     {
  64.         CommIn(hComInfo);
  65.  
  66.         KeepLooping = (BOOL) CommOut(hComInfo);
  67.  
  68.     } while (KeepLooping);
  69.  
  70.     ComClose(hComInfo);
  71.  
  72.     strcpy(TempString, "\r\nTerminating...\r\n\n");
  73.     VioWrtTTY(TempString, strlen(TempString), 0);
  74.  
  75.     DosExit(EXIT_PROCESS, 0);
  76. }
  77.  
  78. LONG CommOut(HCOMINFO hComInfo)
  79. {
  80.     KBDKEYINFO KBInfo;
  81.  
  82.     KbdCharIn(&KBInfo, IO_NOWAIT, 0);
  83.  
  84.     if (! KBInfo.fbStatus)
  85.         return(1);
  86.  
  87.     if ((KBInfo.chChar == 0) || (KBInfo.chChar == 0xE0))
  88.     {
  89.         switch (KBInfo.chScan)
  90.         {
  91.             case CLRSCRN:
  92.                 VioWrtTTY("\x1B[2J", 4, 0);
  93.                 break;
  94.             case EXITKEY:
  95.                 return (0);
  96.  
  97.         }
  98.     }
  99.  
  100.     ComTXChar(hComInfo, KBInfo.chChar, FALSE);
  101.  
  102.     return (1);
  103. }
  104.  
  105. LONG CommIn(HCOMINFO hComInfo)
  106. {
  107.     BYTE     TrueChar;
  108.     SHORT    InChar;
  109.  
  110.     if (! ComRXEmpty(hComInfo))
  111.     {
  112.         if (! ComRXChar(hComInfo, &InChar, 0))
  113.         {
  114.             if (InChar == 12)
  115.                 VioWrtTTY("\x1B[2J", 4, 0);
  116.             else
  117.             {
  118.                 TrueChar = (BYTE) InChar;
  119.                 VioWrtTTY(&TrueChar, 1, 0);
  120.             }
  121.         }
  122.     }
  123.     else
  124.         DosSleep(5);
  125.  
  126.     return(0);
  127. }
  128.  
  129.