Модем
Особые благодарности Королеве дельфийского королевства Елене Филипповой, которая подвигла меня на ваяние сего опуса.
Вместо предисловия
Я не являюсь профессиональным программистом и никогда не писал статьей по программированию. Поэтому "продвинутых" специалистов прошу не утруждать себя чтением ниже изложенного дабы избежать обструкции по поводу допущенных мною в настоящей статье ошибок и вольностей.
- Подробности
- Родительская категория: Работа с железом
- Категория: Модем
S0 Звонок, на который необходимо ответить (Ring After Which To Answer)
S1 Количество звонков (Ring Count)
S2 Символ отмены (Hayes Escape Character)
S3 Символ перевода строки (Carriage Return Character)
- Подробности
- Родительская категория: Работа с железом
- Категория: Модем
После предварительной настройки переменных, COM порт открывается как обычный файл. Так же пример показывает, как очищать буфер COM порта и читать из него.
- Подробности
- Родительская категория: Работа с железом
- Категория: Модем
How can I use TAPI to dial the telephone for a voice call?
The following example shows how to interface with tapi to make a voice call.
- Подробности
- Родительская категория: Работа с железом
- Категория: Модем
Следующий пример демонстрирует получение состояния управляющих регистров модема.
Пример:
- Подробности
- Родительская категория: Работа с железом
- Категория: Модем
A Команда ответа (Answer Command)
Bn Настройка связи (Communications Options)
D Команда набора (Dial Command)
En Команда выбора символа эха (Select Command Character Echo Option)
- Подробности
- Родительская категория: Работа с железом
- Категория: Модем
Code: |
procedure TForm1.Button1Click(Sender: TObject); var cmd, par, fil, dir: PChar; begin Cmd := 'open'; Fil := 'rasdial.exe'; Par := PChar(edtEntry.Text + ' ' + EdtUser.Text + ' ' + EdtPass.Text); Dir := 'C:'; ShellExecute(Handle, Cmd, Fil, Par, Dir, SW_SHOWMINNOACTIVE); end;
procedure TForm1.Button2Click(Sender: TObject); var Cmd, Par, Fil, Dir: PChar; begin Cmd := 'open'; Fil := 'rasdial.exe'; Par := PChar(EdtEntry.Text + ' /DISCONNECT'); Dir := 'C:'; ShellExecute(Handle, Cmd, Fil, Par, Dir, SW_SHOWMINNOACTIVE); end; |
- Подробности
- Родительская категория: Работа с железом
- Категория: Модем
Code: |
unit PortInfo;
interface
uses Windows, SysUtils, Classes, Registry;
function EnumModems: TStrings;
implementation
function EnumModems: TStrings; var R: TRegistry; s: ShortString; N: TStringList; i: integer; j: integer; begin Result := TStringList.Create; R := TRegistry.Create; try with R do begin RootKey := HKEY_LOCAL_MACHINE; if OpenKey('\System\CurrentControlSet\Services\Class\Modem', False) then if HasSubKeys then begin N := TStringList.Create; try GetKeyNames(N); for i := 0 to N.Count - 1 do begin closekey; { + } openkey('\System\CurrentControlSet\Services\Class\Modem', false); { + } OpenKey(N[i], False); s := ReadString('AttachedTo'); for j := 1 to 4 do if Pos(Chr(j + Ord('0')), s) > 0 then Break; Result.AddObject(ReadString('DriverDesc'), TObject(j)); CloseKey; end; finally N.Free; end; end; end; finally R.Free; end; end;
end. |
- Подробности
- Родительская категория: Работа с железом
- Категория: Модем
Code: |
var hCommFile : THandle;
procedure TForm1.Button1Click(Sender: TObject); var PhoneNumber : string; CommPort : string; NumberWritten : LongInt; begin PhoneNumber := 'ATDT 1-555-555-1212' + #13 + #10; CommPort := 'COM2'; {Open the comm port} 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(PhoneNumber)^, Length(PhoneNumber), NumberWritten, nil) = false then begin ShowMessage('Unable to write to ' + CommPort); end; end;
procedure TForm1.Button2Click(Sender: TObject); begin {Close the port} CloseHandle(hCommFile); end; |
- Подробности
- Родительская категория: Работа с железом
- Категория: Модем