Форум: "Система";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];
ВнизКак набреть номер Найти похожие ветки
← →
XOY (2002-03-08 17:54) [0]То, что модем - это ком порт я уже знаю (теории я начитался) только вот на практике проблемы. Если не трудно напишите простенький юнит (только полностью) который может набрать номер через CreateFile. (если интересно, то модем USR 56K) Буду очень благодарен.
← →
cok (2002-03-08 20:49) [1]До слова implementation напишите такой код:
{tapi Errors}
const TAPIERR_CONNECTED = 0;
const TAPIERR_DROPPED = -1;
const TAPIERR_NOREQUESTRECIPIENT = -2;
const TAPIERR_REQUESTQUEUEFULL = -3;
const TAPIERR_INVALDESTADDRESS = -4;
const TAPIERR_INVALWINDOWHANDLE = -5;
const TAPIERR_INVALDEVICECLASS = -6;
const TAPIERR_INVALDEVICEID = -7;
const TAPIERR_DEVICECLASSUNAVAIL = -8;
const TAPIERR_DEVICEIDUNAVAIL = -9;
const TAPIERR_DEVICEINUSE = -10;
const TAPIERR_DESTBUSY = -11;
const TAPIERR_DESTNOANSWER = -12;
const TAPIERR_DESTUNAVAIL = -13;
const TAPIERR_UNKNOWNWINHANDLE = -14;
const TAPIERR_UNKNOWNREQUESTID = -15;
const TAPIERR_REQUESTFAILED = -16;
const TAPIERR_REQUESTCANCELLED = -17;
const TAPIERR_INVALPOINTER = -18;
{tapi size constants}
const TAPIMAXDESTADDRESSSIZE = 80;
const TAPIMAXAPPNAMESIZE = 40;
const TAPIMAXCALLEDPARTYSIZE = 40;
const TAPIMAXCOMMENTSIZE = 80;
const TAPIMAXDEVICECLASSSIZE = 40;
const TAPIMAXDEVICEIDSIZE = 40;
function tapiRequestMakeCallA(DestAddress : PAnsiChar;
AppName : PAnsiChar;
CalledParty : PAnsiChar;
Comment : PAnsiChar) : LongInt;
stdcall; external "TAPI32.DLL";
function tapiRequestMakeCallW(DestAddress : PWideChar;
AppName : PWideChar;
CalledParty : PWideChar;
Comment : PWideChar) : LongInt;
stdcall; external "TAPI32.DLL";
function tapiRequestMakeCall(DestAddress : PChar;
AppName : PChar;
CalledParty : PChar;
Comment : PChar) : LongInt;
stdcall; external "TAPI32.DLL";
Нажатие кнопки обработайте следующим образом:
procedure TForm1.Button1Click(Sender: TObject);
var
DestAddress : string;
CalledParty : string;
Comment : string;
begin
DestAddress :={phone number}"545-17-26";
CalledParty := "___Nikolay";
Comment := "Calling to ___Nikolay";
tapiRequestMakeCall(pChar(DestAddress),
PChar(Application.Title),
pChar(CalledParty),
PChar(Comment));
end;
← →
Sasha9 (2002-03-08 21:37) [2]а как это сделать через АТ команды модема?
← →
XOY (2002-03-10 16:18) [3]Cok спасибо за код. Все работает! Только такая проблема: при запуске этой процедуры запускается виндозовский телефон. А я хочу все свое сделать (т.е. через ATDP звонить). Если кто знает как это осуществить кинте сюда код пожалуйста. Очень нужно!
← →
Sasha9 (2002-03-12 11:18) [4]и я о том же
← →
XOY (2002-03-12 19:34) [5]Похоже что об этом вообще никто не знает! Уже в нескольких местах читал что через CreateFile должно работать, но когда я записываю в COM порт "atz" или "atdp..." модем вообще не реагирует. Может я что не так делаю?..
← →
Sasha9 (2002-03-12 19:36) [6]а можно по0подробнее про CreateFile ?
← →
XOY (2002-03-12 20:02) [7]Ну вот сиходник. Смысл в том что открываешь КОМ как фаил и пишишь в него что хочешь. Только вот это теоритически ...
Если найдешь глюк или ошибку то скажи.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure prINITPROGRAM(Sender: TObject);
procedure prCLOSE(Sender: TObject; var Action: TCloseAction);
procedure prINITModem(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
FHandle: Thandle;
ComString: String;
bcdc: dcb;
bukva: array[1..50] of char;
implementation
{$R *.DFM}
procedure TForm1.prINITPROGRAM(Sender: TObject);
begin
ComString:= "COM3";
FHandle :=CreateFile(PChar(ComString),
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
0);
if FHandle = INVALID_HANDLE_VALUE then Showmessage("Fatal error") else Showmessage("Port initialized");
with bcdc do begin
baudrate:=2400;
bytesize:=8;
parity:=noparity;
stopbits:=onestopbit;
end;
setcommstate(FHandle,bcdc);
end;
procedure TForm1.prCLOSE(Sender: TObject; var Action: TCloseAction);
begin
CloseHandle(FHandle);
end;
procedure TForm1.prINITModem(Sender: TObject);
var
nmb: DWord;
i: word;
begin
Bukva[1]:= " ";
Bukva[2]:= "a";
Bukva[3]:= "t";
Bukva[4]:= "z";
//Bukva[5]:= char($0A);
Bukva[5]:= char($0D);
for i:= 1 to 6 do
WriteFile(FHandle,bukva[i],1,nmb,nil);
ShowMessage(Inttostr(nmb));
{Bukva[1]:= " ";
Bukva[2]:= "a";
Bukva[3]:= "t";
Bukva[4]:= "d";
Bukva[5]:= "p";
Bukva[6]:= " ";
Bukva[7]:= "1";
Bukva[8]:= "2";
Bukva[9]:= "3";
Bukva[10]:= "4";
Bukva[11]:= "5";
Bukva[12]:= "6";
for i:= 1 to 12 do
WriteFile(FHandle,bukva[i],1,nmb,nil);}
end;
end.
← →
Sasha9 (2002-03-12 20:25) [8]у меня мигают лампочко TXD и RXD (по-моему это отсылка и приём) и ничего не просисходит, имхо CreateFile не для этого
← →
Sasha9 (2002-03-12 20:33) [9]кстати, только что отрыл в MS SDK раздельчик Basic Telephony Services Functions, может там что есть....
← →
XOY (2002-03-12 23:14) [10]Если что найдешь то скажи.
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c