|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Получить данные из потока
Доброго времени суток. Профи, подскажите, как решить проблемку чтения из Мемо, если в мемо строка передается из потока читающего Сом порт.
В двух словах – пишу обмен между компом и внешним контроллером (для отладки взял Ардуино). Команды проходят – ардуино отрабатывает и отвечает, ответы я вижу в Мемо, но тут как раз и проблема. Если посылать команды кнопкой как пример: Код:
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 , что это разные потоки, но если запускать копирование кнопкой из главной формы то оно проходит. Как получить данные в процедуре ? Подскажите плизз. Последний раз редактировалось Admin, 09.12.2018 в 17:40. |