delphi-Vytočení telefonního čísla
Máte-li modem, můžete si vyzkoušet následující příklad. Ukážeme si, jak prostřednictvím modemu a jeho AT příkazů vytočit libovolné telefonní číslo a samozřejmě také jak spojení ukončit. Musíte samozřejmě toto číslo specifikovat v programu a dále je též nutné v programu určit, na jakém portu máte modem, protože v tak kratičkém příkladu pochopitelně není autodetekce. Samotný kód je jako obvykle "přilepen" na událost stisku tlačítka, přesněji řečeno dvou tlačítek. První tlačítko se pokusí vytočit číslo a navázat spojení. Nejprve zkusí otevřít příslušný COM port, poté se pokusí vytočit číslo a pokud vše proběhne v pořádku, spojení je navázáno. Druhé tlačítko slouží k ukončení "hovoru".
.
.
.
var
hCommFile : THandle;
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
var
PhoneNumber : string;
CommPort : string;
nw : Cardinal;
begin
PhoneNumber := `ATDT 0603123456` + #13 + #10;
CommPort := `COM3`;
hCommFile := CreateFile(PChar(CommPort), GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hCommFile=INVALID_HANDLE_VALUE then
begin
ShowMessage(`Nelze otevřít `+ CommPort);
exit;
end;
nw := 0;
if not WriteFile(hCommFile, PChar(PhoneNumber)^, Length(PhoneNumber), nw, nil) then ShowMessage(`Nelze komunikovat přes ` + CommPort);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
CloseHandle(hCommFile);
end;
Telefonní číslo v naší ukázce následuje v příslušné proměnné za znaky ATDT a pro názornost je použito smyšlené mobilní číslo. Pro lepší použitelnost by bylo pochopitelně lepší umožnit zadávání čísla například přes Edit. Totéž se týká COM portu.
.
.
.
var
hCommFile : THandle;
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
var
PhoneNumber : string;
CommPort : string;
nw : Cardinal;
begin
PhoneNumber := `ATDT 0603123456` + #13 + #10;
CommPort := `COM3`;
hCommFile := CreateFile(PChar(CommPort), GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hCommFile=INVALID_HANDLE_VALUE then
begin
ShowMessage(`Nelze otevřít `+ CommPort);
exit;
end;
nw := 0;
if not WriteFile(hCommFile, PChar(PhoneNumber)^, Length(PhoneNumber), nw, nil) then ShowMessage(`Nelze komunikovat přes ` + CommPort);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
CloseHandle(hCommFile);
end;
Telefonní číslo v naší ukázce následuje v příslušné proměnné za znaky ATDT a pro názornost je použito smyšlené mobilní číslo. Pro lepší použitelnost by bylo pochopitelně lepší umožnit zadávání čísla například přes Edit. Totéž se týká COM portu.
<< Home