www.pudn.com > wsc4c30.zip > FINDER.C
/* finder.c ** ** Windows 95/NT WIN32 console application. ** ** Searches for modem, which must be connected ** to the serial port and tuned on. */ #include#include #include #include "wsc.h" #define FIRST_PORT COM1 #define LAST_PORT COM4 #define QUOTE 0x22 char Temp[80]; /* trap WSC error codes */ int ErrorCheck(int Code, int Port) {if(Code<0) {printf("ERROR %d",Code); SioDone(Port); exit(1); } return Code; } /* display error & exit */ void SayError(char *Msg) {printf("ERROR: %s: %d\n", Msg, GetLastError() ); exit(1); } /*** main ***/ void main(void) {int i; int Port; int Code; DWORD TimeMark; static char Expect[] = "OK"; /* expect OK */ static int Next = 0; /* index into Expect[] */ printf("\n*** Searching COM%d to COM%d for connected modem.\n\n", 1+FIRST_PORT, 1+LAST_PORT); /* enter search loop */ for(Port=FIRST_PORT;Port<=LAST_PORT;Port++) {/* reset the port */ Code = SioReset(Port,1024,512); if(Code<0) continue; /* found UART: set baud rate, DTR and RTS */ SioBaud(Port, 19200); SioDTR(Port,'S'); SioRTS(Port,'S'); /* modem should set DSR */ ///SioPutc(Port,'\r'); if(SioDSR(Port)==0) {/* modem must set DSR */ printf("COM%d: DSR is not set (DSR=0)\n",1+Port); continue; } printf("COM%d: DSR is set, transmitting %cAT%c...\n",1+Port,QUOTE,QUOTE); /* send AT */ SioPutc(Port,'\r'); Sleep(250); SioPutc(Port,'A'); Sleep(250); SioPutc(Port,'T'); Sleep(250); SioPutc(Port,'\r'); /* expect OK back within 2 seconds */ Next = 0; TimeMark = SioTimer() + 2000; /*printf("\n[%lx:%lx]\n", SioTimer(), TimeMark);*/ while(SioTimer() < TimeMark) {/* any incoming over serial port ? */ i = SioGetc(Port); if(i>-1) {/* got character */ printf("%c",(char)i); if((char)i==Expect[Next]) {Next++; if(Next==2) {printf("\nModem found on COM%d\n",1+Port); SioDone(Port); exit(0); } } } } /* end while */ /* no modem on this port */ SioDone(Port); printf("No response.\n"); } /* end-for */ printf("Done.\n"); } /* end main */