Последний костыль, кризисный, вроде как весьма полезный вышел. Приделал рюшечки и выношу на публику. Вобщем, специально для хдтру -- hdctl-0.1 public beta.
Назначение и возможности, коротко:
- Подключение к ПК всевозможного зоопарка микроконтроллерных самоделок по серийной линии, а так же удаленных устройств по TCP;
- Запись и вывод на десктоп, в реальном времени, данных с указанных устройств;
- Realtime визуализация указанных выше данных;
- Ручное и програмное управление указанными устройствами;
- Экономия времени и упрощение дизайна при прототипировании устройств и/или техпроцессов, исследованиях, постановке экспериментов;
Документация:
Как выяснилось, напрочь нет способности внятно по-русски писать мануалы. Посему ниже следует некий неизбежный минимум букв, и десятиминутный скринкаст, демонстрирующий работу с ПО на некоем примитивном придуманном примере. Имеющий глаза увидит, имеющий мышу -- прокликает. Что-то, вероятно, смогу разъяснить дополнительно.
Терминология:
- Контроллер суть то самое устройство, подключенное по сети или серийной линии. Включает всевозможные arduino и подобные, raspberry pi и подобные одноплатники с GPIO, удаленные ПК или домашние мыльницы-роутеры проксирующие в сеть подключенные к ним серийные устройства, и т.д.
- Периферия -- входы/выходы, АЦП, сенсоры и прочая обвеска контроллера, а также некие настройки/уставки контроллера, которые хочется мониторить и/или управлять ими удаленно. По своей природе периферийник может быть или входом (ro), или выходом (rw).
Коммуникация:
Комуникация ПО с контроллером реализована посредством отчетов, периодически посылаемых контроллером, и управляющих сообщений, посылаемых в контроллер. Колдырный протокол, пригодный к пользованию из терминала вручную, описан тут, имплементация не представляет сложностей.
Програмирование:
Привычным образом: исходник -> компилятор -> запуск в отладчике или запуск в консоли. Локальный API позволяет устанавливать скорость исполнения, читать/писать периферийники, посылать управляющие сообщения в контроллеры, организовывать звуковую сигнализацию и минималистическую интеракцию с оператором.
Язык -- actionscript 3.0, API девятой версии. Коль название сие неведомо -- можно считать его javascript'ом, без прототайпов и документ-моделей. Мануалы тут, выбрать фильтры Runtime = FP 9, Product = None, как на картинке:
Одно отличие -- методы, объявленные без namespace-атрибутов, уходят в public, не в internal.
При запуске первым делом будет вызвана метода init(), и, с этого момента, следующим образом: если вызванная метода возвращает референцию на себя или другую public методу, то данная метода будет вызвана, без аргументов, через heartbeat милисекунд. Если вызванная метода вернет 0 -- считаем что программа успешно отработала, если вернет что-либо другое -- завершение работы с ошибкой. Если во время вызова очередной методы из нее была вызвана метода alert(), то вызов следующей методы будет отложен до момента закрытия попапа оператором.
Требования к системе:
Работоспособность проверена на разных вариациях WinXP/SP3, а также на бета-десятке. Минимальное железо, на котором оно запустилось -- доисторический Sony Vaio PCG-C1MAH c 384МБ оперативки и 867МГц трансметой на борту, но очень вяло, для нормальной работы надо что-то мощнее.
Демо:
Для демонстрации работы с ПО использован следующий реквизит: arduino + простенький фирмварь, читающий встроенный температурный сенсор 328-й атмеги и управляющий имеющимся на борту светодиодом; raspberry + простенький скриптец, читающий подключенный DS18B20. В первой половине скринкаста показано подключение контроллеров, настройка периферии и визуализация данных, во второй реализована термостат-автоматика, включающая светодиод при температуре нагреваемого пальцами сенсора более 22°C.
Download:
https://yadi.sk/d/cobSlr7yfPqNS,
hdmon -- версия без компилятора, только мониторинг и ручное управление, на ~100МБ меньше в распакованном виде.
ACHTUNG! Халявный хостинг безвозвратно канул, ссылки выше и ниже по тексту не работают, но все есть на яндексе
Общие моменты:
Не смотря на общую работоспособность, софт крайне сырой. Что-то реализовано проще, чем надо бы, что-то -- необоснованно сложнее. По итогам месяца эксплуатации есть список изменений и дополнений, которые будут реализованы в следующей версии, включающий расширение настроек rrdgraph, оптимизацию работы rrdupdate, ну и прочее по мелочи. Буду рад багрепортам, разумным предложениям по функционалу, и прочим коментариям с целью расширения указанного списка. Сильно тапками не кидайтесь -- для десктопа писал четвертый раз за тридцатилетнюю карьеру, для windows -- в первый.
===
Известные ошибки и методы их устранения:
Отрицательные значения не обрабатываются корректноbigson, 09 Янв. 17, 16:43Лекарство существует. Способ применения: переписать содержимым архива hdctl-0.1-patch-20170110.zip (или hdmon-0.1-patch-20170110.zip) одноименный файл в установочной директории программы.
При компиляции выдаетСимулировать не смог, но если вдруг, то лечится созданием искомого файла нулевого размера.
defaults: Error: unable to open 'F:\Program Files (x86)\hdctl-0.1\compc\frameworks/localFonts.ser'ser52, 14 Янв. 17, 20:53
На старом маломощном железе может тормозить, вплоть до полной неработоспособности, отрисовка графиков с большим отображаемым интервалом времени.Лекарство существует. Способ применения: переписать содержимым архива hdctl-0.1-patch-20170130.zip (или hdmon-0.1-patch-20170130.zip) одноименный файл в установочной директории программы.
hdctl.exe медленно растет в размере до 212 мб потом скидывается до 45 мб и по новой растетPOLE, 07 Февр. 17, 17:31Это про память, и это не критично, но на всякий случай есть лекарство. Способ применения: переписать содержимым архива hdctl-0.1-patch-20170207.zip (или hdmon-0.1-patch-20170207.zip) одноименный файл в установочной директории программы.
Исправлено несколько несущественных ошибок и добавлен новый функционал в програмной песочницеmakh, 05 Июня 17, 12:55Очень важная для програмистов таблетка, подробности с примерами начиная с цитируемого поста.
---
Заплатки инкрементальные, т.е. самая свежая лечит все предыдущие проблемы в т.ч.