Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2016, 11:03   #1
sarsen
Пользователь
 
Регистрация: 04.08.2016
Сообщений: 58
По умолчанию Delphi 7 ComPort library

Время доброе!
Народ кто имел опыт работы с библиотекой ComPort library https://sourceforge.net/projects/comport/
Не могу сделать логирование с порта, что бы , что пришло сохранять в .txt ну не важно в общем в файл, хоть без расширения. Пмогите кто имеет опыт.
Прикладываю терминал ну и эмулятор в Proteus.
Вложения
Тип файла: rar TESTCOM.rar (366.9 Кб, 36 просмотров)
sarsen вне форума Ответить с цитированием
Старый 04.12.2016, 17:22   #2
sarsen
Пользователь
 
Регистрация: 04.08.2016
Сообщений: 58
По умолчанию

Решено!
Код:
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Buf: String
begin
ComPort1.ReadStr(Buf, Count);
Memo1.Text:=Memo1.Text + Buf;
end;
И не забыть в евентах врубить RxChar.
sarsen вне форума Ответить с цитированием
Старый 04.12.2016, 21:08   #3
kutani
Форумчанин
 
Регистрация: 23.01.2016
Сообщений: 608
По умолчанию

...на больших скоростях и малых таймаутах получите торможение вашего приложения, пропуски данных и отжирание памяти.

Данные пихать в визуальный VCL компонент имеет смысл лишь при очень редком обмене. Да и писать в файл из него опять же не лучший вариант. Если уж вы решили сразу работать с символьными данными, то лучше писать файловым потоком с немонопольным доступом, а в мемо визуализировать лишь то что вам нужно из него.

Код:
var mem: tfilestream;


procedure TForm1.FormCreate(Sender: TObject);
begin
 // создаем
 mem:= tfilestream.Create('log.txt', fmcreate);
 freeandnil(mem);

 // открываем для записи-чтения и убираем монопольный доступ
 mem:= tfilestream.Create('log.txt', fmOpenReadWrite or fmShareDenyNone);
end;


procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var
Buf: String;
begin
 ComPort1.ReadStr(Buf, Count);
 //Memo1.Text:=Memo1.Text + Buf; 

 mem.Seek(0, soFromEnd); // дозапись с конца
 mem.Write(pointer(buf)^, {length(buf)} count);

end;

Последний раз редактировалось kutani; 05.12.2016 в 13:55.
kutani вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ComPort Library tarakan1983 Компоненты Delphi 11 21.07.2016 22:39
Library Path (Delphi XE8) stlcrash Общие вопросы Delphi 2 07.05.2016 12:51
Проблема с BigInt Delphi Library. щлот Помощь студентам 5 02.11.2014 22:14
Позвольте представить - Delphi Widget Library BOBAH13 Компоненты Delphi 13 06.01.2010 12:01