Главная страница
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.027 c
9-1266
Призрак_Коммунизма
2003-02-23 21:51
2003.09.01
Разные комбинации доспехов и оружия у героя


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


4-1716
-napil
2003-06-27 01:29
2003.09.01
Текст в панель инструментов


3-1322
OlkaGTS
2003-08-07 13:49
2003.09.01
Как сделать Refresh для одной записи ClientDataSet


3-1316
gsvserg
2003-08-07 18:49
2003.09.01
Как сделать цикл по колонкам в Excel?