Показать сообщение отдельно
  #1  
Старый 30.04.2021, 00:01
Shudo Shudo вне форума
Прохожий
 
Регистрация: 28.04.2021
Сообщения: 1
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Управление устройством через СОМ в отдельном потоке

Здравствуйте. Зашёл в творческий тупик, прошу помощи.

Условия. Есть основная форма, в ней существует таймер, а также из неё вызывается поток управления устройством. Команды могут отправляться как таймером, так и по кнопкам. Ответы от устройства могут иметь разную длину сообщения, также могут приходить сообщения об ошибках независимо от команд.
Поток описан в отдельном файле.

Задача - написать работающий код =).

Итерации на текущий момент:
1) управление просто через глобальную переменную без условий. Поток дропает часть команд.
2) играл с задержками после установки глобальной переменной. Результат примерно тот же.
3) на каждое новое присвоение значения переменной был написан цикл ожидания ответа. Работает, но сильно подвисает основное окно, таймер ведет себя неадекватно.
4) включение глобального события tevent, ожидание установки из потока - просто не выставляется
5) попытка с критическими секциями. Падает на ошибке доступа к памяти

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

В приложенном архиве файлы основного процесса и потока.
v1.zip
Ответить с цитированием