Проект многоканального индикатора звука
- Войдите на сайт для отправки комментариев
Ср, 15/05/2013 - 15:57
Предистория. Протолкнули в нашу контору умелые люди многоканальный индикатор звука. По описанию это один из atmel'овских камней с 8-ти (или 10-ти) битным АЦП. 8 своих мультиплексированных каналов расширенны внешним мультиплексом до 32-х. Далее контроллер гонит данные в com1 в hex на комп в логарифмированной форме (т.е. приведённых к дБ). Формат строки [начало строки chr(130)] и [64 байта] с интервалом 50мкс. Аппаратная часть по многим причинам недоступна. Комповская оболочка отображающая инфу также нас сильно не устраивает. Ну и решил я посмотреть что такое процессинг на примере написания альтернативной оболочки.
получилась такая штука, которая щас на тестировании.
если кому то не лень, поглядите, может есть принципиальные ошибки.
работает так:
1. зацеплены две библиотеки, ком и звук
2. задать базовые установки, прочитать изменяемые установки из внешнего файла (при отдельных ошибках в файле сбросить его по умолчанию).
3. в основном цикле чтаем данных из кома, при сборе строки данных отправляем их на преобразование(порезать по два байта и записать в массив в очевидном десятичном виде), далее полученные данные отправляются на индикцию, сигнализацию (уровень ниже указанного, выше 0дБ, замирание сигнала на одном уровне дольше заданного)
все остальные функции дополнительные, так например все события пишутся в лог-файл длиной не более заданного, при превышении длины старые данные удаляются.
Визуально уровень сигнала отображается в виде прогрессбара, нормальный уровень - зелёный, превышение - красный. Как настоящий пиковый индикатор (только тут он псевдопиковый).
т.к. на живом устройстве отлаживать было неудобно в нану был закинут эмулятог гонящий схожие данные в ком
полноценные кнопочки-пимпочки мне было рисовать лень, а цеплять внешние библиотеки вроде бы и не обязательно, потому всё оперативное управление приложением сводится к возможности кликнуть по соответствующему индикатору включив или выключив сигнализацию (координаты клика преобразуются в соответствующий номер канала).
Последним что добавил (и чего в оригинальной оболочке не ожидалось) была возможность сигнализации не пропадания сигнала, а его появления (без добавления лишних элементов управления).