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

Вниз

com под win2000   Найти похожие ветки 

 
KPY ©   (2003-06-18 13:18) [0]

под 98 все работает, чего не хватает 2000-му

procedure set_com;
begin
DCB.DCBlength:=SizeOf(Tdcb);
DCB.BaudRate:=cbr_9600;
DCB.ByteSize:=8;
DCB.Parity:=4;
if not SetCommState(com, DCB) then raise Excom.Create("set_com");
end;

function open_com: boolean;
begin
if is_open then closeHandle(com);
com := CreateFile(PChar("Com1"), GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if GetCommState(com,DCB)then is_open:=true else is_open:=false;
Result:=is_open;
end;

procedure getb(var ok: boolean);
var res: dword;
begin
ReadFile(com, ArrayRead, 21, res, nil);
ok:=(res=21);
end;

procedure putb(b: byte; var ok: boolean);
var res: dword;
flages:boolean;
begin
flages:=True;
WriteFile(com,b,1,res,nil);
( res=1) под 98 все работает, чего не хватает 2000-му

procedure set_com;
begin
DCB.DCBlength:=SizeOf(Tdcb);
DCB.BaudRate:=cbr_9600;
DCB.ByteSize:=8;
DCB.Parity:=4;
if not SetCommState(com, DCB) then raise Excom.Create("set_com");
end;

function open_com: boolean;
begin
if is_open then closeHandle(com);
com := CreateFile(PChar("Com1"), GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if GetCommState(com,DCB)then is_open:=true else is_open:=false;
Result:=is_open;
end;

procedure getb(var ok: boolean);
var res: dword;
begin
ReadFile(com, ArrayRead, 21, res, nil);
ok:=(res=21);
end;

procedure putb(b: byte; var ok: boolean);
var res: dword;
flages:boolean;
begin
flages:=True;
WriteFile(com,b,1,res,nil);
ok:=(res=1);
end;


 
clickmaker ©   (2003-06-18 13:40) [1]

В каком именно месте не работает? Что говорит GetLastError?


 
pasha676   (2003-06-18 16:54) [2]

Я предпочитаю формировать DCB так:
Беру DCB
Изменяю в DCB нужные поля
Устанавливаю DCB.


> function open_com: boolean;
> begin
> if is_open then closeHandle(com);

Я конечно не знаю. Но это вроде рекурсия. Нафига нужна рекурсия для открытия порта? Рекурсия такая фенька, что если без нее можно обойтись, то нужно без нее. Честно признаюсь - не понимаю как у тебя с такой фишкой вообще что-то работало. Объясните мне, неразумному, как это работает?

Идем дальше


> ReadFile(com, ArrayRead, 21, res, nil);
> ok:=(res=21);

Я конечно не знаю. Но я бы так использовать функцию не стал. А тем более делать вывод о правильности приема. Хотя как ты эту функцию используешь - фиг знает. Тоже касаеться и функции записи в порт.


 
pasha676   (2003-06-18 16:56) [3]

Дико извините. В рекурсией я погорячился. is_open не есть open_comm. Хотя имхо - все равно коряво. Достаточно анализировать handle. Но на работоспособность влиять не должно.



Страницы: 1 вся ветка

Текущий архив: 2003.09.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.033 c
1-1407
Lina
2003-08-19 16:17
2003.09.01
ListView


1-1502
Alibaba
2003-08-18 01:51
2003.09.01
TAction


1-1473
LuLu
2003-08-18 14:04
2003.09.01
изменение формы


14-1573
Jean
2003-08-11 17:27
2003.09.01
Ааааа...


14-1649
Serginio666
2003-08-12 16:51
2003.09.01
А работает ли Поиск на данном форуме????