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 >
Wrap
Text File
|
1992-01-04
|
2KB
|
89 lines
/*** MODEM_IO.C ***/
#include <stdio.h>
#include "pcl4c.h"
#include "ascii.h"
#define FALSE 0
#define TRUE !FALSE
#define SECONDS 18
/*** send string to modem & get echo ***/
int SendTo(Port,String)
int Port; /* port to talk to */
char *String; /* string to send to mdoem */
{int i;
char c;
int Code;
SioRxFlush(Port);
SioDelay(SECONDS/4);
for(i=0;i<strlen(String);i++)
{/* fetch character */
c = toupper( String[i] );
switch(c)
{case '!':
/* replace ! with carriage return */
c = CR;
break;
case '~':
/* delay 1/2 second */
SioDelay(SECONDS/2);
c = ' ';
break;
case ' ':
/* delay 1/4 second */
SioDelay(SECONDS/4);
break;
} /* end switch */
/* transmit as 7 bit character */
SioPutc(Port,0x7f&c);
/* delay 1/9 th of a second */
SioDelay(SECONDS/9);
/* wait up to 1 second for the echo */
Code = SioGetc(Port,SECONDS);
if(Code>0) SioCrtWrite(Code);
}
} /* end SendTo */
/*** wait for incoming string from modem ***/
int WaitFor(Port,String)
int Port; /* Port to talk to */
char *String; /* string to wait for */
{int i, k;
char c;
int Code;
SioCrtWrite(LF);
while(1)
{/* get next incoming character */
Code = SioGetc(Port,2*SECONDS);
/* printf("{\n%x}",Code); */
if(Code==-1) break;
/* skip any leading CR & LF */
if(((char)Code!=LF)&&((char)Code!=CR))
{/* stuff character back & break out of loop */
SioUnGetc(Port,Code);
break;
}
SioDelay(SECONDS/5);
}
/* wait for string */
for(i=0;i<strlen(String);i++)
{c = String[i];
/* wait up 1 second for next character */
Code = SioGetc(Port,SECONDS);
/* printf("(\n%x)",Code);*/
if(Code==-1) return(FALSE);
SioCrtWrite(Code);
if((char)Code != c)
{printf("\nExpecting %xH not %xH\n",c,Code);
return(FALSE);
}
} /* end for(i) */
/* another character ? */
Code = SioGetc(Port,SECONDS);
if(Code>0) SioCrtWrite(Code);
return(TRUE);
} /* end WaitFor */