Предлагаю вынести весь функционал взаимодействия с пользователем на компьютер/мобильный/планшет.
это позволит:
снизить стоимость изделия
значительно повысить эргономичность со всеми возможностями тачскрина, если это планшет.
сам осциллограф, став компактнее, будет находится там, где непосредственно происходит измерение, а результат будет отображается там, где это удобно пользователю, в пределах 10 метров, если это Bluetooth.
получая измеренные данные по бес проводу и запитывая сам осциллограф от батареи, которую он станет потреблять значительно экономичнее, получаем надежную гальваническую развязку.
освободившиеся ресурсы контроллера использовать для чего либо более полезного
различные дополнительные сервисы типа запоминание сигналов, сравнение с образцом... можно вынести на менее ограниченную в ресурсах сторону
одной из сложностей такого подхода является написание протокола обмена между микроконтроллером и внешним устройством.
Но есть готовое решение
BlackBox. Это генератор исходников обработки бинарного протокола. На данный момент поддерживаются языки
JAVA, C, C# поддержка
SWIFT в планах.
Для получения сгенерированного и оттестированного кода необходимо:
Создать спецификацию протокола. По сути это обычный исходник на java.
Вот например как он выглядит для
демо проекта управления с Android миганием светодиода на борде под STM8S103F3P6 через Bluetooth UART на HC 08. При написании спецификации необходимо к java проекту подключить
набор аннотаций описывающих характеристики данных, а также, следуя
небольшому набору правил описать пакеты, каналы, хосты, коммуникационные интерфейсы, топологию сети
Проверить, что спецификация успешно компилируется, и послать её исходник, в виде аттачмента письма на почтовый адрес
OneBlackBoxPlease@outlook.com. Сервер периодически забирает присланные спецификации из этого ящика, проверяет их корректность. Генерирует заказанный в спецификации исходный код на требуемых языках программирования. После этого создается несколько тестов и исходники прогоняются через них. Если все тесты прошли успешно, то сгенерированный код, последний прошедший тест, а также пример использования заказанного API упаковывается в архив и высылается адресату. В случае обнаружения ошибки, отправитель уведомляется о возможной задержке и служба поддержки BlackBox разбирается с возникшим затруднением.
Тут можно найти пример высылаемого сгенерированного кода,
а тут использование этого кода в выше упомянутом, демонстрационном проекте управления с андроида вспышками светодиода на демоплате собранной на STM8.
Используя
BlackBoxвы сможете с лёгкостью наладить связь не только между микроконтроллерами, мобильными устройствами но и обычными компьютерами. И что важно, с минимальными затратами времени и сил. Фактически код сгенерированный BlackBox может стать каркасом Вашего распределенного приложения. Программисту останется просто добавить обработчики на события приёма пакета, а также логику создания пакета, заполнения его данными и отправки его получателю.
Ну и естественно, зависимости от целевой платформы, нужно написать приложение отображения измеренных данных и логики формирования команд управления осциллографом, тайминги развертки, коэффициент усиления... Лучше это делать под Android Studio.
На GitHUB полно решений разной степени законченности.
Буду следить за веткой и отвечать на возникающие вопросы. Ну либо пишите в
багтрекере на GitHUB