Показать сообщение отдельно
  #1  
Старый 09.12.2018, 14:20
Рубь Рубь вне форума
Прохожий
 
Регистрация: 09.12.2018
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Получить данные из потока

Доброго времени суток. Профи, подскажите, как решить проблемку чтения из Мемо, если в мемо строка передается из потока читающего Сом порт.
В двух словах – пишу обмен между компом и внешним контроллером (для отладки взял Ардуино).
Команды проходят – ардуино отрабатывает и отвечает, ответы я вижу в Мемо, но тут как раз и проблема. Если посылать команды кнопкой
как пример:
Код:
procedure TForm1.Button5Click(Sender: TObject);
begin
 WriteComm(Form1.ComboBox1.Text);
end;

То ответ в мемо виден, и его другой кнопкой можно обработать,  нпример так:

 procedure TForm1.Button7Click(Sender: TObject);
begin
  Form1.Memo2.Text:=Form1.Memo1.Text;
end;

и эта строка доступна для анализа.
Но,  если  это делать в процедуре типа :

procedure TForm1.Button6Click(Sender: TObject);
var
motorX :string;
begin
motorX:= ‘  ATS=X200 ’;
WriteComm(motorX);
  sleep(100);
  Memo2.Lines.Text:= Memo1.Lines.Text;
……..
………
end;
Админ: Пользуемся тегами при оформлении кода!

то строка(ответ от контроллера) в мемо1 приходит, но не копируется из мемо1 в мемо2 и проанализировать ответ нельзя.
Я понимаю, что поток чтения порта , процедурой синхронизации блокирует чтение мемо1 , что это разные потоки, но если запускать копирование кнопкой из главной формы то оно проходит. Как получить данные в процедуре ? Подскажите плизз.
Ответить с цитированием