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

Delphi 7 ComPort library

Добавлено: Сб дек 03, 2016 16:02:55
kotriks
Господа кто в делфи 7 мучил библу http://sourceforge.net/projects/comport/ Терминал сам легко создать, получать данные с него, отправлять, но как получить данные с терминала в буфер и сохранением данных в файл, кто то может реализовывал подскажите? Вроде это делается через функцию.

Код: Выделить всё

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
ComPort1.ReadStr(Str, Count);
// do something with Str variable
end;
Может ошибаюсь, помогите .

Re: Delphi 7 ComPort library

Добавлено: Сб дек 03, 2016 16:55:22
minakan
Рабочая либа. Там есть примеры, все рабочее. Надо еще чтобы в обжект инспекторе выставить, чтоб был вызов этой штуки on_rx или как там оно.

Re: Delphi 7 ComPort library

Добавлено: Сб дек 03, 2016 17:41:30
kotriks
Там нет примеров с сохранением лога с порта на ПК, я бы не интересовался как это осуществить!

Re: Delphi 7 ComPort library

Добавлено: Сб дек 03, 2016 23:41:39
minakan
А че тут сложного?

Код: Выделить всё

procedure Ttonarm_label.ComPortRxChar(Sender: TObject; Count: Integer);
var
  S     : String;
  buf   : byte;
  res   : integer;
begin
       comport.read(Buf, 1);
       blockwrite(f,buf,1,res);
end;
Ну тут у меня шло побайтно. Получили и скинули в файл.
У вас построчно, т.е. файл надо открыть другой, текстовый.
Файл надо открыть там, где вы открываете порт, и закрыть там, где вы закрываете программу.

Re: Delphi 7 ComPort library

Добавлено: Вс дек 04, 2016 06:53:35
kotriks
Может тогда так

Код: Выделить всё

procedure TFMComunication.comportRxChar(Sender: TObject; Count: Integer);
var
  S, Buf : String;
  f: file;
begin
AssignFile(f, SaveDialog1.FileName);
  Rewrite(f);
  comport.ReadStr(S, Count);
  Buf := Buf + S;
  blockwrite(f,Buf,1,Count);
CloseFile(f);
end;
тока я не понимаю как вызывается процедура comportRxChar, вот добавил кнопку она появилась слева в трее в окне а этой функции нет, как её вызвать или она автоматом прикручивается или как то эту процедуру на кнопку надо кидать?

Добавлено after 2 hours 27 minutes 31 second:
Так наверное будет лучше прикреплю исходник терминала и эмулятор протеуса с виртуальным ком.

Re: Delphi 7 ComPort library

Добавлено: Вс дек 04, 2016 16:48:55
minakan
Нет. Эта процедура вызывается когда приходит каждая посылка....
Т.е. вы каждый раз открываете файл и закрывается.
На второй раз винда вывалит месягу, что такое файло такое уже есть, и так на каждую посылку, заколдобитесь эти месаджбоксы закрывать...
Файл надо открывать, когда вы вызываете если прошло успешноComPortOpen, и закрывать, там, где ComPortClose...
Зы. Посмотрю проект.
Если надо только логить данные может терратерм про поставить?

Re: Delphi 7 ComPort library

Добавлено: Вс дек 04, 2016 23:22:27
kotriks
Дело в том что я свой терминал пишу, так бы мне конечно теры хватило бы.