Текущий архив: 2003.03.03;
Скачать: CL | DM;
Внизработ с com - портом Найти похожие ветки
← →
ledzzz (2002-12-29 14:14) [0]Помогите,пожалуйста: как считать данные с com-порта? Особенно буду благодарен за примеры!
← →
Ferrarium (2002-12-29 15:43) [1]Держи ссылку:
Начало:
http://www.delphikingdom.com/mastering/ports1.htm
Продолжение:
http://www.delphikingdom.com/mastering/ports2.htm
http://www.delphikingdom.com/mastering/ports3.htm
http://www.delphikingdom.com/mastering/ports4.htm
http://www.delphikingdom.com/mastering/ports5.htm
← →
DED_MOROZ (2002-12-31 09:30) [2]function GetPort(): PChar; stdcall;
const
RxBufferSize = 256;
TxBufferSize = 256;
Var
inFile:TextFile;
FHandle: Thandle;
DCB: TDCB;
s,port,confiq: string;
CommTimeouts: TCommTimeouts;
BytesRead,BytesWritten: DWORD;
d: array[1..9] of Char;
d1: Char;
i:integer;
begin
if FileExists("confiq.ini")
then
begin
AssignFile(inFile,"confiq.ini") ; Reset(inFile);
try
begin
readln(inFile,port);readln(inFile,Confiq);
end;
finally
CloseFile(inFile);
end;
end else
begin
showmessage("Файл конфигурации порта не найден");
end;
FHandle := CreateFile(
PChar(port),
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
{FILE_FLAG_OVERLAPPED or} FILE_ATTRIBUTE_NORMAL,
0);
if FHandle = INVALID_HANDLE_VALUE then begin
CloseHandle(FHandle);end ;
if not SetupComm(FHandle, RxBufferSize, TxBufferSize) then begin
CloseHandle(FHandle);Result := PChar("1");
Exit; end;
if not GetCommState(FHandle, DCB) then begin
CloseHandle(FHandle);Result := PChar("2");
Exit; end;
if not BuildCommDCB(@Confiq[1], DCB) then begin
CloseHandle(FHandle);Result := PChar("3");
Exit; end;
if not SetCommState(FHandle, DCB) then begin
CloseHandle(FHandle);Result := PChar("4");
Exit; end;
with CommTimeouts do
begin
ReadIntervalTimeout := 0;
ReadTotalTimeoutMultiplier := 0;
ReadTotalTimeoutConstant := 100;
WriteTotalTimeoutMultiplier := 0;
WriteTotalTimeoutConstant := 100;
end;
if not SetCommTimeouts(FHandle, CommTimeouts) then begin
CloseHandle(FHandle);Result := PChar("5-"+IntToStr(GetLastError));
Exit; end;
s:="";
d1 := #16;
if not WriteFile(FHandle, d1, Length(d1), BytesWritten, nil) then
begin CloseHandle(FHandle);Result := PChar("6-"+IntToStr(GetLastError));
Exit;
end;
if not ReadFile(FHandle, d, SizeOf(d), BytesRead, nil) then
ShowMessage("7- " + IntToStr(GetLastError))
else begin
s:="";
for i:=1 to SizeOf(d) do
begin
if ((d[i] = "0") or(d[i] = "1") or (d[i] = "2") or (d[i] = "3") or
(d[i] = "4") or (d[i] = "5") or (d[i] = "6") or (d[i] = "7") or
(d[i] = "8") or (d[i] = "9") or (d[i] = ".")) then begin
if d[i]="." then begin d[i]:=",";end;
s:=s+d[i]; end
else begin s:=s; end;
end;
d1 := #24;
if not WriteFile(FHandle, d1, Length(d1), BytesWritten, nil) then
begin CloseHandle(FHandle);
Result := PChar(s);
Exit;
end;
CloseHandle(FHandle);
end;
Result := PChar(s);
end;
Страницы: 1 вся ветка
Текущий архив: 2003.03.03;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.008 c