![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброго времени суток. Профи, подскажите, как решить проблемку чтения из Мемо, если в мемо строка передается из потока читающего Сом порт.
В двух словах – пишу обмен между компом и внешним контроллером (для отладки взял Ардуино). Команды проходят – ардуино отрабатывает и отвечает, ответы я вижу в Мемо, но тут как раз и проблема. Если посылать команды кнопкой как пример: Код:
то строка(ответ от контроллера) в мемо1 приходит, но не копируется из мемо1 в мемо2 и проанализировать ответ нельзя. Я понимаю, что поток чтения порта , процедурой синхронизации блокирует чтение мемо1 , что это разные потоки, но если запускать копирование кнопкой из главной формы то оно проходит. Как получить данные в процедуре ? Подскажите плизз. Последний раз редактировалось Admin, 09.12.2018 в 17:40. |
#2
|
|||
|
|||
![]() Просто ответ не успевает, видимо, прийти за время задержки.
Лови OnChange в Memo1 и копируй в Memo2 в этот момент. ЗЫ. Почитай об ассинхронных вызовах для понимания теории. |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Рубь (11.12.2018)
|
#3
|
||||
|
||||
![]() Спасибо за ответ,
но про задержку я подумал в первую очередь, не причём оказалась пробовал до Код:
![]() ------ Чтение порта и запись в Мемо1 синхронизируется между основным потоком и потоком чтения порта: Код:
приоритет потока в котором крутится чтение порта - tpNormal, однако чтение Мемо1 в Мемо2 не проходит ( Последний раз редактировалось Рубь, 10.12.2018 в 12:23. |
#4
|
|||
|
|||
![]() Onchange в Memo1 срабатывает?
|
#5
|
|||
|
|||
![]() Вечер добрый.
Да срабатывает, но не так как ожидаю. К стати, спасибо за идею про Onchange , программка по другому себя ведёт, чем при прямом копировании ![]() Вот думаю, как вопрос по другому сформулировать , чтобы понятнее было, я возможно косноязычно об'ясняюсь. Чуть позже отпишусь. |
#6
|
|||
|
|||
![]() Видимо да, я просто не понимаю, в чем проблема.
Данные копируются - копируются. Вызвать их обработку/анализ в этот момент можно - можно. В чем проблема? |
#7
|
|||
|
|||
![]() Извиняюсь заранее за об'ем, но так наверно понятнее будет почему я хочу получить доступ к анализу данных из порта.
Есть простой файл с координатами, структура строки X2.54Y10.16 для примера 3 строки. читаем, строим команды для моторХ и моторY, отправляем на контроллер проверяем ответ. Если есть ответ значит есть связь, значит можно отправлять запрос на окончание отработки команды. Ситуация стандартная. Вот как это пытался реализовать (на получении доступа к ответу из порта застрял ) Код:
после выполнения в caption метки о трёх проходах, о трех вызовах Memo1Change и не одного успешного отклика. |
#8
|
|||
|
|||
![]() данные копируются только при завершении всей процедуры Button6Click,
и только после этого можно их анализировать, мне бы хотелось получить их в процессе её работы, а не как результат. |
#9
|
|||
|
|||
![]() По моему в логике есть ошибка. надо немного переписать. Надо обработку команд для Х и Y разнести как две независимые ветки(возможно функции). В любом случае Спасибо за помощь. Если что то не пойму я отпишусь в теме. Еще раз Спасибо. Беру таймаут.
|