В результате очередных свершений образовался у меня «доп» («Что это?» - здесь внизу) в виде программы под Windows. Основной задачей этого софта была индикация в режиме реального времени температуры от 25 датчиков DS18s20 на аппаратной основе DS9097U-009. В интерфейсе всего две вкладки - скучная с графиками и по-веселее с градиентным цветовым распределением как на рисунке. Каждому датчику соответствует прямоугольник: при нормальной температуре (задаётся оператором) он зелёный, при повышении «желтеет», а потом вообще «краснеет» - принцип индикации температуры активной зоны атомного реактора. Привет МИФИ!!! Если при очередном цикле опроса датчика корректная информация не получена (датчик отсутствует, повреждён, не совпала контрольная сумма), то соответствующая область «перекрашивается» в серый цвет.

Градиентное цветовое распределение

 

И вот однажды появился заказчик с задачей «вытащить» из USB-хроматографа биполярный аналоговый сигнал с двух измерительных каналов, нарисовать на экране полученный результат и ещё посчитать кое-чего по мелочи. Озвученная потребность аккуратно «укладывалась» в функционал моего «допа», который я и стал «пилить» под новые требования. Всё бы ничего, но заказчик упорно не хотел обременять себя техническим заданием, поэтому в конечном счёте «доп» был адаптирован под «хотелки» третьей стороны, никак не связанной ни с температурой, ни с хроматографией. В качестве «бонуса» всей этой истории остались программные наработки, которые весьма сомнительны с точки зрения капитализации, но которыми можно поделиться с прогрессивной общественностью, что я и сделаю незамедлительно.

Для понимания дальнейшего желательно хотя бы кратко ознакомиться с процессом газовой хроматографии, а также принять к сведению, что упоминаемый хроматограф физически подключался к компьютеру через USB, а программно представлял собой виртуальный COM-порт. Всё, лирика кончилась.

Главное окно программы, позволяющее в режиме реального времени контролировать канал связи с хроматографом. В нижней части слева направо указаны: выбранный оператором порт для подключения хроматографа, текущее состояние порта (ошибка/открыт) и статус подключения (Хроматограф НАЙДЕН или ПОИСК). Присутствует возможность автоматического поиска устройства при включении хроматографа или обрыве связи. Если таковое случается, то софт самостоятельно инициирует последовательное сканирование портов COM1, COM2...COM10 с целью поиска «девайса» - отправляет команду, «слушает» ответ, если «пришёл» - продолжает/начинает измерения, если нет - следующий порт.

Главное окно программы управления хроматографом

 

Само собой, есть окно настроек хроматографа: параметры отбора дозы, скорость передачи COM-порта, характеристики внутреннего АЦП и так далее, при этом все значения сохраняются на жёсткий диск в ini-файл, т.е. при последующем закрытии/открытии программы они автоматически «подгружаются» и повторный ввод не требуется.

Окно настроек программы управления хроматографом

 

Окно установки временных интервалов для вычисления состава тяжёлых и лёгких фракций исследуемой газовой смеси. Слева вариант окна с корректно установленными параметрами, а справа программа «подсвечивает» газы, в отношении которых неверно указаны интервалы: перепутаны границы, нулевой интервал, пересечение интервалов и т.д. «Птичка» в нижней части - это защита от случайного изменения параметров: если она установлена, то редактировать таблицу можно, а если нет - то нет.

Окна временных интервалов программы управления хроматографом

 

Присутствуют и абсолютно скучные, но чрезвычайно полезные окна для установки температуры колонки и выдачи хроматографу произвольной команды от оператора. Кстати, значение заданной здесь температуры, а также той, до которой фактически успела нагреться хроматографическая колонка, отображаются как «Установленная» и «Текущая» в главном окне - реальное время, разумеется.

Окна терминала и установки температуры хроматографической колонки

 

Самым зрелищным во всём этом начинании является окно, отражающее on-line ход измерений в виде графиков, причём именно вкладка «Контроль работы» - остальные скудноваты на впечатления. В верхнем левом углу параметры хроматографической колонки в виде значения фактической температуры и состояния нагревателя: вишнёвый прямоугольник - нагреватель включен, серый - выключен.

Окно индикации текущих параметров

 

Имеется у программы и свой «голос» - если связь с хроматографом потеряна и попытки её восстановить не дают результата, то появляется вот такое ядовитое окно с «бодрящим» звуком. Уменьшающийся секундомер на кнопке означает количество секунд, оставшихся до следующей попытки поиска хроматографа.

Окно ошибки

 

А вот так я пишу и форматирую весь свой код.

Код С++

 

В качестве разнообразия ниже представлены несколько файлов в кодировке «Кириллица (Windows)», которые созданная программа генерирует в процессе своей работы: по нажатию на кнопку, автоматически или при наступлении контролируемого события.

 

Файл настроек [ini] - обновляется автоматически и по командам пользователя;

Файл истории [txt] - обновляется автоматически при наступлении тематического события;

Файл акта калибровки [html] - генерируется оператором после процесса калибровки хроматографа.