Форум: "Система";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c