home *** CD-ROM | disk | FTP | other *** search
- {
- GL> I am writing a simple dialer and would like to know how do
- GL> I recieve the mode String like "BUSY" and "NO CARRIER" , I
- GL> tried opening the Comport For reading but i just hung the
- GL> Computer. Could you please tell me how ?
- GL> Regards , Gareth
-
- Gareth,
- I didn't see any replies to your message, but I've been looking
- For the same inFormation myself. I saw the following code, based
- on a message from Norbert Igl, last year. When I dial my own
- phone number, it gives me a busy signal For a second or two, and
- then hangs up. I don't know what makes the busy signal stop. and
- I don't know how to receive the modem String "BUSY" or "NO CARRIER"
- or "NO DIALtoNE".
-
- I noticed in my modem manual that modem command X4 will
- generate the following responses:
-
- Number Response Word Response
- (V0 command) (V1 command)
-
- 6 NO DIALtoNE
- 7 BUSY
- 8 NO ANSWER
- (The modem responds With 8 if you send
- the @ command [Wait For Quiet Answer],
- and it didn't subsequently detect 5
- seconds of silence.)
-
- I wish I could figure out a way to "capture" the response, either the
- number (say, 7) or the Word ('BUSY'). if I could detect a busy
- signal, I could then create a loop that would make the
- Program continually redial if it detected busy signals.
-
- if you figure it out, could you post your solution?
-
- Here's how Norbert's code With a few modifications:
-
- Date: 29 Jun 92 23:15:00
- From: Norbert Igl
- to: Jud Mccranie
- Subj: Dialing the phone
-
- here's a COM3-able version...(:-)}
-
- Program Dialing;
- Uses Crt;
- (* no error checking... *)
-
- Var ch : Char;
- num : String;
-
- Function Dial( Nb:String; ComPort:Byte ):Char;
- Const DialCmd = 'ATDT';
- OnHook = 'ATH';
- CR = #13;
- Status = 5;
- Var UserKey : Char;
- PortAdr : Word;
-
- Procedure Com_Write( S: String );
- Var i:Byte;
-
- Function OutputOk:Boolean;
- begin
- OutPutOk := ( Port[PortAdr+Status] and $20) > 0;
- end;
-
- Procedure ComWriteCh( Var CH:Char);
- begin
- Repeat Until OutPutOk;
- Port[PortAdr] := Byte(CH);
- end;
-
- begin
- For i := 1 to length(s) do ComWriteCh(S[i]);
- end;
-
- Procedure Com_Writeln( S : String );
- begin
- Com_Write( S + CR )
- end;
-
- { DIAL.Main }
- begin
- if (ComPort < 1) or ( ComPort > 4) then Exit;
- PortAdr := MemW[$40:(ComPort-1)*2 ];
- if PortAdr = 0 then Exit;
- Repeat
- Com_Writeln( OnHook );
- Delay( 500 );
- Com_Write ( DialCmd );
- Com_Writeln( Nb );
- UserKey := ReadKey;
- Until UserKey <> ' '; { Hit [SPACE] to redial ! }
- Com_Writeln( OnHook ); { switch the line to the handset ...}
- Dial := UserKey; { see what key the user pressed... }
- end;
-
- begin
- ClrScr;
- Write ('Enter your own phone number: ');
- Readln(Num);
- Writeln('Dialing now... Should get a busy signal.');
- ch := dial(Num,2);
- end.