comandi kam modema ?

2 отговора 109 прегледа
#1

comandi kam modema ?

Работя с D7, win2k.
Опитвам се да направя това:
CommPort := 'COM2';
{Open the comm port}
hCommFile := CreateFile(PChar(CommPort),
GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);

на COM2 със сигурност е модема - всички диаг.програмчета там го намират.
да, обаче горния ред ми връща INVALID_HANLDE_VALUE.

Какво пропускам.

искам да мога да подавам команди към модема.

Отговор
в отговор на longjohn #2

Re: comandi kam modema ?

Единствената разлика, която виждам, е режима на достъп - опитай като включиш и двата флага: GENERIC_READ or GENERIC_WRITE. Всъщност така е далеч по-нормално - с COM и се чете, и се записва.
Друга възможност е просто да нямаш такъв COM-порт (напр. много модели laptop-и имат само COM3 за вградения модем и нищо друго).
Трети вариант е COM-порта вече да е зает от друга програма.

Редактирано от Mandor на

Отговор
в отговор на longjohn #3

Re: comandi kam modema ?

Ето малко код от мой клас, който настройва порта за комуникация, дано ти свърши работа:


constructor TGComm.Create (APort: byte);

var
PortName : string;
ComState : TDCB;
ComTimeOuts : TCommTimeOuts;

begin
PortName:='COM'+inttostr(APort);
FHandle:=createfile(PChar(PortName),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0);
if FHandle=INVALID_HANDLE_VALUE then
begin
FStatus:=false;
exit
end;
if getcommstate(FHandle,ComState) then
with ComState do
begin
BaudRate:=19200;
ByteSize:=8;
Parity:=NOPARITY;
StopBits:=TWOSTOPBITS
end
else
begin
FStatus:=false;
exit
end;
if not setcommstate(FHandle,ComState) then
begin
FStatus:=false;
exit
end;
with ComTimeOuts do
begin
ReadIntervalTimeout:=MAXDWORD;
ReadTotalTimeoutMultiplier:=0;
ReadTotalTimeoutConstant:=0;
WriteTotalTimeoutMultiplier:=0;
WriteTotalTimeoutConstant:=0
end;
if not setcommtimeouts(FHandle,ComTimeOuts) then
FStatus:=false;
end;



Виж в Gооglе за AT command set за да управляваш самия модем,
след като нстройш комуникацията. И накрая, можеш да ползваш и готови
компоненти за целта. Има и free такива.

Mixy
Отговор