home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / cprog / spp.zip / SPPDEMO.CPP < prev    next >
C/C++ Source or Header  |  1991-02-07  |  6KB  |  260 lines

  1. //============================================================================
  2. //
  3. //  SPPDEMO.CPP
  4. //
  5. //  Demo program for Serial++ Library SPP.LIB Ver. 1.0
  6. //
  7. //  Copyright (c) 1991 Cortlandt Technologies, All rights reserved.
  8. //
  9. //     Cortlandt Technologies, P.O. Box 195, Pleasantville NY 10570
  10. //
  11. //  Please direct all inquiries to the above address,
  12. //  or via Compuserve: 71066,155
  13. //
  14. //============================================================================
  15. #include <stdlib.h>
  16. #include <stdio.h>
  17. #include <string.h>
  18. #include <ctype.h>
  19. #include <dos.h>
  20.  
  21. #include "serial.h"
  22.  
  23. //============================================================================
  24. //
  25. //    Setup up command line defaults
  26.  
  27.     CommPorts cp = COM_1;        // COM1:
  28.  
  29.     Baud      bd = B_1200;       // 1200 baud
  30.  
  31.     DataBits  db = D_8;          // 8 data bits
  32.  
  33.     Parity     ps = P_N;          // no parity
  34.  
  35.     StopBits  sb = S_1;          // 1 stop bit
  36.  
  37.  
  38. //============================================================================
  39. //
  40. //    Globals
  41.  
  42.     char buffer[255];            // buffer for messages
  43.  
  44.     SerialPort *com;             // pointer to a SerialPort -- used in
  45.                                           // main routine to establish port
  46.  
  47. //============================================================================
  48. //
  49. //    Prototypes of functions in this file
  50.  
  51.     StopBits  cl_StopBits(const char *cltok);
  52.     Parity    cl_Parity(const char *cltok);
  53.     DataBits  cl_DataBits(const char *cltok);
  54.     Baud      cl_Baud(const char *cltok);
  55.     CommPorts cl_CommPorts(const char *cltok);
  56.     void      printUsage(void);
  57.  
  58. //============================================================================
  59. //
  60. //    Main program
  61. //
  62. //----------------------------------------------------------------------------
  63. void
  64. main(void)
  65. {
  66.     unsigned char cc;
  67.  
  68. // Banner
  69.     printf("\n SPPDEMO - Demo program for SPP.LIB\n Copyright (c) 1991 Cortlandt Technologies, All rights reserved.\n\n Type $$$ at prompt or press Ctrl-Break to exit.\n");
  70.  
  71. //    parse command line
  72.     switch (_argc)                         // depending on number of
  73.         {                                   // command line arguments
  74.         case 6:
  75.                 sb = cl_StopBits(_argv[5]);   // override stop bits
  76.  
  77.         case 5:
  78.                 ps = cl_Parity(_argv[4]);     // override parity
  79.  
  80.         case 4:
  81.                 db = cl_DataBits(_argv[3]);   // override data bits
  82.  
  83.         case 3:
  84.                 bd = cl_Baud(_argv[2]);       // override baud
  85.  
  86.         case 2:
  87.                 cp = cl_CommPorts(_argv[1]);   // override port
  88.                 break;
  89.  
  90.         default:                            // bad command line -
  91.                 printUsage();                 // print help and exit
  92.                 exit(0);
  93.         }
  94.  
  95. // establish port
  96.     com = new SerialPort(cp,bd,db,ps,sb);  // taking defaults for buffer size
  97.                                                         // and break trapping: see SERIAL.H
  98.     if (com->lineOK())
  99.         {
  100. //        loop sending messages back and forth
  101.         do {
  102.             printf("\n  To port>>");
  103.             gets(buffer);
  104.  
  105. //            string "$$$" causes program to exit
  106.             if (strcmp(buffer,"$$$")==0)
  107.                 break;
  108.  
  109. //            send message out port
  110.             com->outstr(buffer);     // the message as a string
  111.             com->outbyte(0x0d);      // add a carriage return
  112.  
  113. //            clear buffer to use for incoming message
  114.             memset(buffer,'\0',sizeof(buffer));
  115.  
  116. //            read port until quiet for 2 seconds
  117.             int ii=0;
  118.  
  119.             while (   (com->inbyte((unsigned char)buffer[ii++],2000))
  120.                       &&(ii<sizeof(buffer)));
  121.  
  122.             printf("\nFrom port<<%s",buffer);
  123.             }
  124.             while (1);
  125.  
  126.         }
  127.     else
  128.         printf("\n Unable to establish port!\n");
  129.  
  130.     delete com;  // VERY IMPORTANT! Delete SerialPort before exit...
  131.                      // Destructor resets captured interrupt vectors!
  132. }
  133. //============================================================================
  134. //
  135. //    Command line parse routines
  136. //
  137. //----------------------------------------------------------------------------
  138. StopBits
  139. cl_StopBits(const char *cltok)
  140. {
  141.     switch (atoi(cltok))
  142.         {
  143.         case 2:
  144.                 return S_2;
  145.  
  146.         case 1:
  147.                 return S_1;
  148.  
  149.         default:
  150.                 printf("\n Stop bits incorrect!\n");
  151.                 printUsage();
  152.                 exit(0);
  153.         }
  154. }
  155.  
  156. //----------------------------------------------------------------------------
  157. Parity
  158. cl_Parity(const char *cltok)
  159. {
  160.     switch (toupper(*cltok))
  161.         {
  162.         case 'N':
  163.                 return P_N;
  164.  
  165.         case 'E':
  166.                 return P_E;
  167.  
  168.         case 'O':
  169.                 return P_O;
  170.  
  171.         default:
  172.                 printf("\n Parity selection incorrect!\n");
  173.                 printUsage();
  174.                 exit(0);
  175.         }
  176. }
  177.  
  178. //----------------------------------------------------------------------------
  179. DataBits
  180. cl_DataBits(const char *cltok)
  181. {
  182.     switch (atoi(cltok))
  183.         {
  184.         case 8:
  185.                 return D_8;
  186.  
  187.         case 7:
  188.                 return D_7;
  189.  
  190.         case 6:
  191.                 return D_6;
  192.  
  193.         case 5:
  194.                 return D_5;
  195.  
  196.         default:
  197.                 printf("\n Data bits incorrect!\n");
  198.                 printUsage();
  199.                 exit(0);
  200.         }
  201. }
  202.  
  203. //----------------------------------------------------------------------------
  204. Baud
  205. cl_Baud(const char *cltok)
  206. {
  207.     switch (atoi(cltok))
  208.         {
  209.         case 2400:
  210.                 return B_2400;
  211.  
  212.         case 1200:
  213.                 return B_1200;
  214.  
  215.         case 300:
  216.                 return B_300;
  217.  
  218.         default:
  219.                 printf("\n Baud incorrect!\n");
  220.                 printUsage();
  221.                 exit(0);
  222.         }
  223. }
  224.  
  225. //----------------------------------------------------------------------------
  226. CommPorts
  227. cl_CommPorts(const char *cltok)
  228. {
  229.  
  230.     switch (atoi(cltok+strlen(cltok)-1)) // look at last byte of token
  231.         {
  232.         case 2:
  233.                 return COM_2;
  234.  
  235.         case 1:
  236.                 return COM_1;
  237.  
  238.         default:
  239.                 printf("\n Port incorrect!\n");
  240.                 printUsage();
  241.                 exit(0);
  242.         }
  243. }
  244.  
  245. //============================================================================
  246. //
  247. //    Usage screen print
  248. //
  249. //----------------------------------------------------------------------------
  250. void
  251. printUsage(void)
  252. {
  253.     printf("\nUsage: [sppdemo [port [baud [databits [parity [stopbits]]]]]]");
  254.     printf("\n\n      port = COM1 | COM2\n      baud = 2400 | 1200 | 300\n  databits =    8 |    7\n    parity = NONE | EVEN | ODD\n  stopbits =    1 |    2");
  255.     printf("\n\n  Example (defaults):   sppdemo COM1 1200 8 N 1\n");
  256. }
  257.  
  258. //============================================================================
  259. //============================================================================
  260.