Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.016 c
14-5864
Evgeny
2003-02-13 13:36
2003.03.03
Файл CGI


3-5451
Ламер
2003-02-13 15:34
2003.03.03
Как в IBDataSet работать с SQL ?


3-5469
twist
2003-02-13 06:44
2003.03.03
Как выполнить импорт текстового файла в IB?


14-5780
SergeN
2003-02-12 12:30
2003.03.03
Delphi


14-5770
Мазут Береговой
2003-02-16 08:22
2003.03.03
Я




   Наверх