Сейчас я прошел свою программу по шагам - получается, что циклы с захватом и отображением данных в принципе работают неплохо - очередь заполняется сообщениями постепенно, и также постепенно они из очереди выводятся на экран. Но если программу запустить как положено, в непрерывном режиме, то на дисплеях просто ничего не отображается - видимо, не успевает. Только в конце программы, после останова, появится нечитаемое сообщение из последнего элемента очереди (она там действительно есть, все ОК)
Тем не менее, циклы для захвата и отображения данных полностью захватывают управление в программе и не освобождают его - потому что данные идут и идут, и перехода на следующие этапы не происходит. Может, нужно сделать конечный автомат какой-нибудь? Только там придется точно парсить пакеты посимвольно или по крайней мере, опрашивать пользователя, переходить дальше, или нет.
Вопрос: как сделать так, чтобы после инициализации хэндл прибора где-то сохранился, и его можно было использовать в произвольные моменты по требованию - то есть, работать следующим образом:
1. Запуск прибора
2. Инициализация, начинает крутиться цикл "захват-отображение данных"
3. Все встает, передняя панель доступна для работы, прибор ждет указаний пользователя
----
4. Нажимаю кнопку "Автодетект": происходит автодетект, на дисплее
отображается акноледж от автодетекта
5. Все стоит, передняя панель доступна, прибор ждет действий
6. Нажимаю кнопку "Конфигурация": в устройство уходят конфигурационные команды, отображается акноледж, он текстовый
7. Все стоит ...
8. Нажимаю кнопку "Генерация псевдослучайной последовательности": прибор получает эту команду, отображается акноледж.
9. Все стоит, данные продолжаются отображаться
10. Нажимаю кнопку "Отобразить спектр": в амплитудном дисплее начинает отображаться текущий спектр
....
N. В конеце, или в любой момент когда все стоит и ждет указаний, я могу нажать кнопку "стоп", и соединение разорвется, работа будет остановлена.
В идеале должно быть так. Смутно, я понимаю, что теперь, когда я более-менее (совсем чуть-чуть) научился применять некоторые структуры управления, все это можно построить на эвент-структурах в циклах с условием, так можно сделать обработку любых воздействий без постоянного опроса интерфейса. Но как сделать так, чтобы уикл работы с потсупающими данными (а они поступают постоянно) не порабощал
- я не знаю.