Передача AT-команд модему на примере поднятия модемом трубки



Автор: Владимир
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Передача AT-команд модему на примере поднятия модемом трубки
Данная процедура показывает как передавать AT команды модему.
Передача команд осуществляется через файл .
В данном примере передается команда 'ATH1' поднять трубку
(можно послушать разговор на линии )
Переменная hCommFile объявляется на уровне модуля.
Ограничением к применению является активные программы держущие порт модема
открытым (факс,некоторые терминальные программы )
Зависимости: Messages, SysUtils
Автор:       Владимир, [email protected]
Copyright:   Компакт диск неизвестного происхождения
Дата:        8 июня 2002 г.
***************************************************** }
procedure upmodem;
var
PhoneCommand: string;
CommPort: string;
NumberWritten: cardinal;
begin
PhoneCommand := 'ath1' + #13 + #10; //Поднять трубку
CommPort := 'COM1';
//-------------------Открыть порт как файл}
hCommFile := CreateFile(PChar(CommPort),
GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if hCommFile = INVALID_HANDLE_VALUE then
begin
ShowMessage('Unable to open ' + CommPort);
exit;
end;
//-------------Выполнить команду по средству записи в файл
NumberWritten := 0;
if WriteFile(hCommFile,
PChar(PhoneCommand)^,
Length(PhoneCommand),
NumberWritten,
nil) = false then
begin
ShowMessage('Unable to write to ' + CommPort);
end;
end;

Пример использования:

procedure TForm1.Button1Click(Sender: TObject);
begin
upmodem;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
CloseHandle(hCommFile); //закрыть файл
end;

Далее: Получить список установленных модемов в Win95-98 »»