Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.06;
Скачать: CL | DM;

Вниз

Как набреть номер   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
3-17810
Cranium
2002-05-16 13:15
2002.06.06
IB диалекты 2, 3 ?


3-17797
galilee
2002-05-15 23:51
2002.06.06
image data type в MS SQL


4-18183
Sender
2002-04-02 18:42
2002.06.06
ПОМОГИТЕ!!!


14-18107
mimino
2002-04-29 12:35
2002.06.06
КАКавтоматически загружать свою программу ?


14-18105
CHEk
2002-04-03 22:45
2002.06.06
КАК сделать чтобы проограма была полностью невидимой