comandi kam modema ?
2 отговора
109 прегледа
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.
Какво пропускам.
искам да мога да подавам команди към модема.
Опитвам се да направя това:
CommPort := 'COM2';
{Open the comm port}
hCommFile := CreateFile(PChar(CommPort),
GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
на COM2 със сигурност е модема - всички диаг.програмчета там го намират.
да, обаче горния ред ми връща INVALID_HANLDE_VALUE.
Какво пропускам.
искам да мога да подавам команди към модема.
Re: comandi kam modema ?
Единствената разлика, която виждам, е режима на достъп - опитай като включиш и двата флага: GENERIC_READ or GENERIC_WRITE. Всъщност така е далеч по-нормално - с COM и се чете, и се записва.
Друга възможност е просто да нямаш такъв COM-порт (напр. много модели laptop-и имат само COM3 за вградения модем и нищо друго).
Трети вариант е COM-порта вече да е зает от друга програма.
Друга възможност е просто да нямаш такъв COM-порт (напр. много модели laptop-и имат само COM3 за вградения модем и нищо друго).
Трети вариант е COM-порта вече да е зает от друга програма.
Редактирано от Mandor на
Re: comandi kam modema ?
Ето малко код от мой клас, който настройва порта за комуникация, дано ти свърши работа:
Виж в Gооglе за AT command set за да управляваш самия модем,
след като нстройш комуникацията. И накрая, можеш да ползваш и готови
компоненти за целта. Има и free такива.
Mixy
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