1. tk
  2. Linux/Unix
  3. woensdag 07 oktober 2009
Ik heb een simpele dialer nodig om vanuit een lijst mijn modem een telefoonnummer te laten bellen. Zoiets als dialer <telno>. echo <telno> > /dev/ttyS0 werkt niet. Met cu -l /dev/ttyS0 kan ik handmatig AT commando's, waaronder ATDT, opgeven: werkt. Maar cu -l /dev/ttyS0 -c <telno> of echo "ATDT<telno>" | cu -l /dev/ttyS0 werken niet.
Heeft iemand enig idee hoe het wel moet/kan?
Reacties (1)
Geaccepteerd antwoord In Afwachting Moderatie
Inmiddels heb ik op basis van deze discussie http://www.hu.freepascal.org/lists/fpc-pascal/2008-January/016027.html het volgende programmaatje in FreePascal gemaakt:

[FONT=Courier New]program dialer;

{$mode objfpc}{$H+}

uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
[/FONT][FONT=Courier New]cthreads,[/FONT]
[FONT=Courier New] {$ENDIF}{$ENDIF}
Classes, Serial, CRT;

var
s: string;
serialhandle: TSerialHandle;

begin
if ParamCount = 1 then
begin
serialhandle := SerOpen('/dev/ttyS0'); // open COM1 under Linux
s := 'ATZ' + #13; // reset modem
SerWrite(serialhandle, s[1], Length(s));
Delay(60*100);
s := 'ATDT' + ParamStr(1) + #13; // construct dial string
SerWrite(serialhandle, s[1], Length(s));
Delay(60*100);
s := 'ATH0' + #13; // hang up
SerWrite(serialhandle, s[1], Length(s));
SerClose(serialhandle); // close COM1
end;
end.[/FONT]

Het werkt, maar niet perfect. De afhandeling van SerWrite (zeker ATZ) duurt erg lang – vandaar de beide Delay's. En SerRead levert altijd en overal code 4 (ERROR) op.
Ik sta dus open voor verbeteringen of alternatieven.
  1. meer dan een maand geleden
  2. Linux/Unix
  3. # 1
  • Pagina :
  • 1


Er zijn nog geen reacties op dit bericht.
Reageer als een van de eersten op dit bericht!
Nog geen HCC-gebruikersaccount aangemaakt? Klik dan hier.

Inloggen