Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.03.03;
Скачать: [xml.tar.bz2];

Вниз

работ с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-5647
Sniffer
2003-02-20 15:18
2003.03.03
I/O error 87


6-5703
ctapik-net
2003-01-11 19:42
2003.03.03
Посылка сообщений всем компьютнрам в локальной сети


8-5667
pasha676
2002-11-21 11:00
2003.03.03
DirectShow DSPack 2.0 вопросы.


3-5444
Kaginava
2003-02-13 12:39
2003.03.03
Как определить что IBDataBase потерял соединение с базой


14-5777
eLVik
2003-02-12 12:49
2003.03.03
И снова ADO





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский