Форум: "WinAPI";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
ВнизКто поможет проверить где ошибка? Найти похожие ветки
← →
SergeyDonetsk (2001-11-08 12:50) [0]function WriteComm(var Buf; size: word): integer; //пеpедача в поpт
var p: pointer; i: integer;
begin
p := @Buf;
result := 0;
i:=0;
while size > 0 do begin
if not WriteFile(Port, p^, 1, cardinal(i), nil) then exit;
inc(result, i); inc(integer(p)); dec(size);
Application.ProcessMessages;
end;
end;
function PortInit(com:string): boolean; //инициализация
var ct: TCommTimeouts;
dcb: TDCB;
begin
Port:= Windows.CreateFile(PChar(com), GENERIC_READ or
GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if (Port < 0) or not Windows.SetupComm(Port, 2048, 2048) or not
Windows.GetCommState(Port, dcb) then exit; //init error
dcb.BaudRate := CBR_19200;
dcb.StopBits := ONESTOPBIT;
dcb.Parity := NOPARITY;
dcb.ByteSize := 8;
if not Windows.SetCommState(Port, dcb)
or not Windows.GetCommTimeouts(Port, ct) then exit; //error
ct.ReadTotalTimeoutConstant := 50;
ct.ReadIntervalTimeout := 50;
ct.ReadTotalTimeoutMultiplier := 1;
ct.WriteTotalTimeoutMultiplier := 0;
ct.WriteTotalTimeoutConstant := 10;
if not Windows.SetCommTimeouts(Port, ct)
or not Windows.SetCommMask(Port, EV_RING + EV_RXCHAR + EV_RXFLAG + EV_TXEMPTY)
then exit; //error
result := true;
end;
...
//открываем порт
if not(PortInit("COM2")) then
begin
MessageDlg("Ошибка инициализации", mtError, mbOKCancel,0);
end;
//пишем в порт
S:="AT H1"+#10+#13;
WriteComm(S, Length(S)); {вроде должен снять трубу?}
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.01.14;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.076 c