home *** CD-ROM | disk | FTP | other *** search
/ Shareware 1 2 the Maxx / sw_1.zip / sw_1 / PROGRAM / PCL4C30.ZIP / MODEM_IO.C < prev    next >
Text File  |  1992-01-04  |  2KB  |  89 lines

  1. /*** MODEM_IO.C ***/
  2.  
  3. #include <stdio.h>
  4. #include "pcl4c.h"
  5. #include "ascii.h"
  6.  
  7. #define FALSE 0
  8. #define TRUE !FALSE
  9. #define SECONDS 18
  10.  
  11. /*** send string to modem & get echo ***/
  12.  
  13. int SendTo(Port,String)
  14. int Port;       /* port to talk to */
  15. char *String;   /* string to send to mdoem */
  16. {int i;
  17.  char c;
  18.  int Code;
  19.  SioRxFlush(Port);
  20.  SioDelay(SECONDS/4);
  21.  for(i=0;i<strlen(String);i++)
  22.     {/* fetch character */
  23.      c = toupper( String[i] );
  24.      switch(c)
  25.         {case '!':
  26.             /* replace ! with carriage return */
  27.             c = CR;
  28.             break;
  29.          case '~':
  30.             /* delay 1/2 second */
  31.             SioDelay(SECONDS/2);
  32.             c = ' ';
  33.             break;
  34.          case ' ':
  35.             /* delay 1/4 second */
  36.             SioDelay(SECONDS/4);
  37.             break;
  38.         } /* end switch */
  39.      /* transmit as 7 bit character */
  40.      SioPutc(Port,0x7f&c);
  41.      /* delay 1/9 th of a second */
  42.      SioDelay(SECONDS/9);
  43.      /* wait up to 1 second for the echo */
  44.      Code = SioGetc(Port,SECONDS);
  45.      if(Code>0) SioCrtWrite(Code);
  46.     }
  47. } /* end SendTo */
  48.  
  49. /*** wait for incoming string from modem ***/
  50.  
  51. int WaitFor(Port,String)
  52. int Port;       /* Port to talk to */
  53. char *String;   /* string to wait for */
  54. {int i, k;
  55.  char c;
  56.  int Code;
  57.  SioCrtWrite(LF);
  58.  while(1)
  59.     {/* get next incoming character */
  60.      Code = SioGetc(Port,2*SECONDS);
  61.         /* printf("{\n%x}",Code); */
  62.      if(Code==-1) break;
  63.      /* skip any leading CR & LF */
  64.      if(((char)Code!=LF)&&((char)Code!=CR))
  65.         {/* stuff character back & break out of loop */
  66.          SioUnGetc(Port,Code);
  67.          break;
  68.         }
  69.      SioDelay(SECONDS/5);
  70.     }
  71.  /* wait for string */
  72.  for(i=0;i<strlen(String);i++)
  73.     {c = String[i];
  74.      /* wait up 1 second for next character */
  75.      Code = SioGetc(Port,SECONDS);
  76.         /* printf("(\n%x)",Code);*/
  77.      if(Code==-1) return(FALSE);
  78.      SioCrtWrite(Code);
  79.      if((char)Code != c)
  80.         {printf("\nExpecting %xH not %xH\n",c,Code);
  81.          return(FALSE);
  82.         }
  83.     } /* end for(i) */
  84.  /* another character ? */
  85.  Code = SioGetc(Port,SECONDS);
  86.  if(Code>0) SioCrtWrite(Code);
  87.  return(TRUE);
  88. } /* end WaitFor */
  89.