Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
1-5510
Fast
2003-02-19 14:36
2003.03.03
Допись данных в начало файла


14-5789
Manulo
2003-02-12 19:26
2003.03.03
Эххх...


3-5461
nkrainev
2003-02-13 17:40
2003.03.03
Исключительная ситуация при запросе к MySQL


14-5785
OxOTHuK
2003-02-12 07:20
2003.03.03
Мысли вслух


1-5514
sergey2
2003-02-21 02:59
2003.03.03
Как передавать программе параметр?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский