Bargest, доброго времени! Стоит примерно аналогичная задача. Подскажи пожалуйста как правильно организовать второй поток для прослушки com порта. Суть вот в чем. Запускается основная программа и сразу же дополнительный поток, в котором происходит прослушивание ком порта. Вот код:
Код:
unit U_PortToolk;
interface
uses
Classes, CPortCtl, ExtCtrls, CPort, U_Main;
type
ToolkPort = class(TThread)
ComPort: TComPort;
private
procedure Listn;
protected
procedure Execute; override;
end;
implementation
procedure ToolkPort.Listn;
begin
ComPort.OnRxChar:= F_Main.ComPort1RxChar;
end;
procedure ToolkPort.Execute;
begin
repeat
Synchronize(Listn);
until Terminated;
end;
end.
Проблема начинается тогда, когда в основной программе я нажимаю кнопку опроса 20 устройств. В обработчике кнопки поочередно отправляется запрос 20 устройствам, они на него отвечают. По идее, после каждой итерации при приходе пакета в ком порт от устройства надо срабатывать обработчику RxChar в дополнительном потоке, НО этого не происходит. Пробуя отладчиком по шагам, получается, что пока не прогонится весь цикл от 1 до 20, событие прихода пакета в сеть не срабатывает. А после цикла все равно ничего уже не происходит, видимо буфер уже пустой. Пользуюсь установленной библиотекой ComPort Library version 4.10 от Dejan Crnila. Что делаю не так, чего не понимаю?