Страница 1 из 1

com порт в делфи

Добавлено: 06 дек 2006, 16:43
matroskin
подскажите плз как работать с ком портом в делфи.. как читать с него данные.

работал с портами только в паскале, непосредственно обращаясь к адресу порта
в виндовозе хп такая фишка не прокатит..

Re: com порт в делфи

Добавлено: 06 дек 2006, 16:49
LAngel
Оффициально, работа организована через [syntax="delphi"] hPort := CreateFile(
PChar('\\.\' + PortName),
GENERIC_READ or GENERIC_WRITE, 0, 0,
OPEN_EXISTING, 0, 0);[/syntax]
Есть множество компонентов для работы с com-портами.
Так же есть программы, разрешающие приложению доступ до порта напрямую.

Re: com порт в делфи

Добавлено: 06 дек 2006, 16:57
matroskin
LAngel писал(а):Оффициально, работа организована через [syntax="delphi"] hPort := CreateFile(
PChar('\\.\' + PortName),
GENERIC_READ or GENERIC_WRITE, 0, 0,
OPEN_EXISTING, 0, 0);[/syntax]
Есть множество компонентов для работы с com-портами.
Так же есть программы, разрешающие приложению доступ до порта напрямую.
т.е. это инициализация порта?

Re: com порт в делфи

Добавлено: 07 дек 2006, 08:28
LAngel
matroskin писал(а):т.е. это инициализация порта?
Нет это открытие "хендла" порта, с которым можно потом общаться с помощью функций:
ReadFile, WriteFile

настройки параметров порта, и его иниализация проводятся функциями
G(S)etCommState, G(S)etCommTimeouts

а вообще можно почитать тут

Re: com порт в делфи

Добавлено: 07 дек 2006, 08:50
somewhere
&quot писал(а):т.е. это инициализация порта?
Это "получение прав пользования" этим портом, чтобы по Exception'у не получить. :-)

Re: com порт в делфи

Добавлено: 07 дек 2006, 11:13
matroskin
LAngel писал(а):Нет это открытие "хендла" порта, с которым можно потом общаться с помощью функций:
ReadFile, WriteFile

настройки параметров порта, и его иниализация проводятся функциями
G(S)etCommState, G(S)etCommTimeouts

а вообще можно почитать тут
пасибо, почитаю=)

Re: com порт в делфи

Добавлено: 07 дек 2006, 11:14
matroskin
somewhere писал(а):Это "получение прав пользования" этим портом, чтобы по Exception'у не получить. :-)
пасибо, разбераюсь уже

Re: com порт в делфи

Добавлено: 13 дек 2006, 14:22
matroskin
Все написал, работает вроде ;) Но есть одно НО - я читаю 9 байт с ком порта в строку s1, но вывести эту строку почемуто не могу (закоментированная строка)- возникает ошибка типа - нет доступа к адресу ... вот, так в чем ошибка? :/
[syntax="delphi"] hPort := CreateFile(
function ReadCom :boolean;
var
d: array[1..100] of Char;
BytesRead: DWORD;
i: Integer;
s1:string;
Begin
if not Windows.ReadFile(fHandle, d, 9, BytesRead, nil) then
ShowMessage('cant read')
else
begin
s1:='';
for i:=1 to BytesRead do
begin
s1:=s1 + d;
end;
//mm1.Lines.Add(s1);
edt1.Text:=s1;
end;
End;[/syntax]