REM Register WLCC Communications DLL Functions SUB RegWLCC() DIM Caller$ Caller$ = gRoutineName$ gRoutineName$ = "RegWLCC" REM returns LPSTR pointer to input string (ComStimulus / ComStimulusArray),1 for success or -1 for bad parameter / port closed REGISTER "WLCC.DLL","ComGettestbuffer","CI" REM returns {port number} for success or < 0 for bad parameter / port error REGISTER "WLCC.DLL","ComFlush","II" REM returns number of characters to be processed in the input queue REGISTER "WLCC.DLL","ComOpen","ICIJIIIII" REM returns 1 for success or -1 for bad parameter / port closed REGISTER "WLCC.DLL","ComSetFlow","III" REGISTER "WLCC.DLL","ComSetAns","III" REGISTER "WLCC.DLL","ComSetYield","III" REGISTER "WLCC.DLL","CSetModemParmDialTime","III" REM register "WLCC.DLL","CSetPortParmFlushtime","III" REGISTER "WLCC.DLL","CSetModemParmDiscStr","IIF" REGISTER "WLCC.DLL","CSetModemParmDialStr","IIF" REGISTER "WLCC.DLL","CSetModemParmResetStr","IIF" REGISTER "WLCC.DLL","ComPuts","IIF" REGISTER "WLCC.DLL","CSetModemInitStr","IIF" REGISTER "WLCC.DLL","ComModemInit","II" REGISTER "WLCC.DLL","ComStatus","II" REGISTER "WLCC.DLL","ComBreak","II" REGISTER "WLCC.DLL","ComReset","II" REGISTER "WLCC.DLL","ComClose","II" REGISTER "WLCC.DLL","ComDisc","II" REGISTER "WLCC.DLL","ComPutc","IIH" REM returns 1 for receipt of Esc character, -1 for bad parameter / port closed, or 0 REM register "WLCC.DLL","ComEscape","III" REM returns {number of characters in queue} that ComGetc hasn't read, -1 if the port is not open REM register "WLCC.DLL","ComStatus","II" REM returns {number of characters read}, or -1 if an error occured during the read REM register "WLCC.DLL","ComRead","IIFI" REM returns -1 if params are valid, 1 if len characters encountered, 1 if inchar is detected, 3 if timeout occurs, 4 if Esc key is pressed during read REGISTER "WLCC.DLL","ComReadBuf","IIFIII" REM returns -1 for bad parameter / port closed, -4 if Esc key pressed during read, or {number of characters read into the buffer (up to, but not exceeding len characters) REM register "WLCC.DLL","ComReadTimed","IIFII" REM returns -1 for timeout before carrier is detected / port closed/invalid, 1 string encountered and response sent, 1 carrier detected, 0 if Esc key is pressed REGISTER "WLCC.DLL","ComDial","IIF" REM returns the received character as an INT, or -1 if the input queue is empty REGISTER "WLCC.DLL","ComGetc","II" REM returns -1 for bad parameter / port closed, 1 string encountered and response sent, 2 timeout before stimulus string was received, 3 number of characters exceeded before stimulus string was received, 4 a break condition was received REGISTER "WLCC.DLL","ComStimulus","IIFFII" REM returns {number of element number of matching string}, -1 for bad parameter / port closed, -2 timeout before stimulus string was received, -3 number of characters exceeded before stimulus string was received, -4 a break condition was received REGISTER "WLCC.DLL","ComStimulusArray","IIOOIII" gRoutineName$ = Caller$ END SUB REM Start the REIF Connection REM Usage ok% = REIF_Connect%() IF ok% = FALSE%% THEN REQUEST "Error Connecting" FUNCTION REIF_Connect%() DIM Caller$ Caller$ = gRoutineName$ gRoutineName$ = "REIF_Connect%" IF gNoComm% THEN REIF_Connect% = TRUE%%:gWLCCid% = gWLCCport% REM Init Vars DIM PhoneNum$ PhoneNum$ = "1-408-920-0308" DIM stim$(3),resp$(3) stim$(0) = "BUSY":stim$(1) = "CONNECT":stim$(2) = "Connect":resp$(0) = "":resp$(1) = "":resp$(2) = "" DIM DialStr$,DiscStr$,InitStr$,ResetStr$ DialStr$ = "ATDT" DiscStr$ = "~~~+++~~ATH0|" InitStr$ = "AT&F1|" ResetStr$ = "ATZ|" DIM Stimulate$,Response$ DIM ok%,result%,Stim% REM Initialize Port ok% = CALL ("ComOpen","com",gWLCCport%,19200,7,3,1,16384,4096) REM Intialize Modem REM Note that WCCL DLL functions return 1 for success and -1 for failure REM this function uses the ok% = 1 logic to mean TRUE and ok% = -1 to mean FALSE, if ok% then will return TRUE for either 1 or -1 gWLCCid% = IF (ok% > 0,ok%,FALSE%%) IF gWLCCid% > 0 THEN ok% = CALL ("ComSetAns",gWLCCid%,0) ELSE ok% = - 1 IF ok% = 1 THEN ok% = CALL ("CSetModemParmDialStr",gWLCCid%,DialStr$) IF ok% = 1 THEN ok% = CALL ("CSetModemParmDiscStr",gWLCCid%,DiscStr$) IF ok% = 1 THEN ok% = CALL ("CSetModemParmResetStr",gWLCCid%,ResetStr$) IF ok% = 1 THEN ok% = CALL ("CSetModemInitStr",gWLCCid%,InitStr$) IF ok% = 1 THEN ok% = CALL ("CSetModemParmDialTime",gWLCCid%,90) IF ok% = 1 THEN ok% = CALL ("ComModemInit",gWLCCid%) REM allow port to yield to windows IF ok% = 1 THEN ok% = CALL ("ComSetYield",gWLCCid%,1) REM Dial and look for connect IF ok% = 1 THEN ok% = CALL ("ComDial",gWLCCid%,PhoneNum$) IF ok% = 1 THEN result% = CALL ("ComStimulusArray",gWLCCid%,stim$(0),resp$(0),3,1000,60) REM Send Enquiry Code, DRE Number, and Password IF ok% = 1 AND result% > 1 THEN Stimulate$ = CHR$ (5):Repsonse$ = "SJBR-MLS97489748|" Stim% = CommStim%(Stimulate$,Repsonse$,400,120,"Enquiry Code:") ok% = IF (Stim% = TRUE%%,1, - 1) ELSE ok% = - 1 END IF IF ok% = 1 THEN Stimulate$ = "PLEASE ENTER YOUR DRE NUMBER? ": Repsonse$ = "493029|" Stim% = CommStim%(Stimulate$,Repsonse$,400,120,"DRE Number:") IF Stim% THEN Stimulate$ = "ENTER YOUR PASSWORD? ": Repsonse$ = "meade|" Stim% = CommStim%(Stimulate$,Repsonse$,400,120,"Password:") END IF ok% = IF (Stim% = TRUE%%,1, - 1) END IF REIF_Connect% = IF (ok% = 1,TRUE%%,FALSE%%) IF ok% = - 1 THEN ok% = CommsDisc%() END IF gRoutineName$ = Caller$ END FUNCTION REM ReStart Comms Connection & Connect Start the REIF Connection FUNCTION ReConnect%() DIM Caller$,ok% Caller$ = gRoutineName$ gRoutineName$ = "ReConnect%" DIRECTORY gTiesApp$ IF gNoComm% THEN ReConnect% = TRUE%%:gWLCCid% = gWLCCport% ok% = CommsDisc%() IF ok% THEN ReConnect% = REIF_Connect%() ELSE ReConnect% = FALSE%% END IF gRoutineName$ = Caller$ END FUNCTION REM Disconnect FUNCTION CommsDisc%() DIM Caller$,ok% Caller$ = gRoutineName$ gRoutineName$ = "CommsDisc%" CommsDisc% = TRUE%% IF gNoComm% THEN gWLCCid% = FALSE%% ok% = CALL ("ComBreak",gWLCCid%) WAIT FOR 2 ok% = CALL ("ComFlush",gWLCCid%) ok% = CALL ("ComDisc",gWLCCid%) ok% = CALL ("ComReset",gWLCCid%) ok% = CALL ("ComClose",gWLCCid%) gWLCCid% = FALSE%% END IF gRoutineName$ = Caller$ END FUNCTION REM Print to Comms Connection FUNCTION CommsPrint%(ComStr$,Prmpt$) DIM Caller$,ok% Caller$ = gRoutineName$ gRoutineName$ = "CommsPrint%" IF gNoComm% THEN CommsPrint% = TRUE%% ok% = CALL ("ComPuts",gWLCCid%,ComStr$) IF ok% < 0 THEN CALL ErrorLog(Prmpt$ + SPACE$ (2) + "Error Printing:" + ComStr$) CommsPrint% = IF (ok% = 1,TRUE%%,FALSE%%) END IF gRoutineName$ = Caller$ END FUNCTION REM Stimulus and Respond to Comms Connection FUNCTION CommStim%(Stimulate$,Repsonse$,iMaxChar%,iSeconds%,Prmpt$) DIM Caller$,Stim%,x$,stm% Caller$ = gRoutineName$ gRoutineName$ = "CommStim%" IF gNoComm% THEN CommStim% = TRUE%% stm% = NOW x$ = CALL ("ComGettestbuffer",gWLCCid%) Stim% = CALL ("ComStimulus",gWLCCid%,Stimulate$,Repsonse$,iMaxChar%,iSeconds%) IF gCommDebug% THEN x$ = Prmpt$ + SPACE$ (5) + x$ + gCRLF$ + "Stimulus: " + STR$ (iMaxChar%,"99999") + " max char / " + STR$ ( LEN (x$),"99999") CALL ErrorLog(x$ + SPACE$ (2) + STR$ (iSeconds%,"99999") + " seconds / " + STR$ ( SECS ( NOW - stm%),"99999") + SPACE$ (5) + Stimulate$ + SPACE$ (5) + Repsonse$) END IF IF Stim% <> 1 THEN x$ = CALL ("ComGettestbuffer",gWLCCid%) StimError$ = IF (Stim% = TRUE%%,"Parameter or Port Error", IF (Stim% = 2,"Timeout Error", IF (Stim% = 3,"Maximum Characters exceeded Error", IF (Stim% = 4,"User Break","")))) CALL ErrorLog(Prmpt$ + SPACE$ (2) + "Stimulate failed: " + x$ + SPACE$ (5) + "Stimulus return: " + LTRIM$ ( STR$ (Stim%,"99")) + SPACE$ (2) + StimError$) END IF CommStim% = IF (Stim% = 1,TRUE%%,FALSE%%) END IF gRoutineName$ = Caller$ END FUNCTION REM Transaction Log SUB TranLog(OutString$) DIM Caller$ Caller$ = gRoutineName$ gRoutineName$ = "TranLog" gTranLog$(gTranLog%) = OutString$:fTransLog$ = "":magic% = 8 FOR i% = gTranLog% TO IF ((gTranLog% - magic%) > 0, ABS (gTranLog% - magic%),0) STEP - 1:fTransLog$ = gCR$ + " " + gTranLog$(i%) + fTransLog$:NEXT i% fTransLog$ = MID$ (fTransLog$,2):gTranLog% = gTranLog% + 1:VIEW IF gTranLog% > gTranLogN% THEN gTranLogN% = gTranLogN% + 50:REDIM gTranLog$(gTranLogN%) gRoutineName$ = Caller$ END SUB REM Error Log SUB ErrorLog(OutString$) DIM Caller$,magic% Caller$ = gRoutineName$ gRoutineName$ = "ErrorLog" gErrorLog$(gErrorLog%) = OutString$:fErrorLog$ = "":magic% = IF (gCommDebug% = TRUE%%,5,10) FOR i% = gErrorLog% TO IF ((gErrorLog% - magic%) > 0, ABS (gErrorLog% - magic%),0) STEP - 1:fErrorLog$ = gCR$ + " " + gErrorLog$(i%) + fErrorLog$:NEXT i% fErrorLog$ = MID$ (fErrorLog$,2):gErrorLog% = gErrorLog% + 1:VIEW IF gErrorLog% > gErrorLogN% THEN gErrorLogN% = gErrorLogN% + 50:REDIM gErrorLog$(gErrorLogN%) gRoutineName$ = Caller$ END SUB REM Error Log (w/o form) SUB ErrLog(OutString$) DIM Caller$,magic% Caller$ = gRoutineName$ gRoutineName$ = "ErrLog" gErrorLog$(gErrorLog%) = OutString$:magic% = IF (gCommDebug% = TRUE%%,5,10) FOR i% = gErrorLog% TO IF ((gErrorLog% - magic%) > 0, ABS (gErrorLog% - magic%),0) STEP - 1:NEXT i% gErrorLog% = gErrorLog% + 1 IF gErrorLog% > gErrorLogN% THEN gErrorLogN% = gErrorLogN% + 50:REDIM gErrorLog$(gErrorLogN%) gRoutineName$ = Caller$ END SUB