Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Графическая визуализация датчиковой системы


Автор: Leviafan 3.4.2009, 13:26
Пишу программку, которая принимает по сети показания сравнительно большого набора акустических датчиков. Разрешение 1 датчика - 4096 различных значений. Минимальное количество датчиков - 900. Датчики объеденены в боксы по 25 штук. Хочется получить графическое представление получаемых показаний.

1. При наведении мышки на представление датчика необходимо отображать во всплывающей подсказке его характеристики, но если каждый датчик представить пользовательским элементом управления, то из-за большого количества датчиков возникают тормоза, причём не только с реакцией на события мыши, но и при отрисовке. Как быть?

2. Для визуализаци показаний хочется использовать цветовую шкалу, причём, в идеале, тождественного разрешения с хорошо просматриваемой системой представления значений. Т.е. хочется отображать все 4096 значений, при этом хочется, чтобы изменения в показаниях на 1-2 пункта были заметны для глаза. Какую траекторию в пространстве RGB (а может каком-то другом, более подходящем) выбрать? Есть ли по этому поводу какие-то общеизвестные рекомендации?

3. Может возникнуть необходимость на небольшие отклонения в одном диапазоне шкалы значений реагировать изменением цвета (яркости/насыщенности) слабо, а в другом - сильно. Как реализовать такое поведение?..

Автор: -Mikle- 3.4.2009, 19:32
Цитата(Leviafan @  3.4.2009,  16:26 Найти цитируемый пост)
чтобы изменения в показаниях на 1-2 пункта были заметны для глаза

Что-то я сомневаюсь в спосоности человеческого глаза однозначно различать 4096 оттенков.
Вот весь спектр:
user posted image

Можно выделить хорошо отличимых много цветов, но не 4096. Изменение насыщенности это 256 градаций к "серому" представлению цвета, причем из 256, глаз хорошо сможет отличить не так уж много... яркость то же самое (только к черному (-) или белому(+)).

А если хочешь, чтоб глаз отличал все значения друг от друга, но при этом не определял точный цифровой эквивалент (0 - 4096), то можно просто сделать, например, для каждого диапазона, простую фигуру (круг, квадрат, ромб, треугольник, паралелограм и т.д.). Ее размер (от 16х16 до 48х48) будет говорить о разнице между двумя соседними показаниями, а цвет - об абсолютном процентном значении из спектра в соответствующем диапазоне значений для соответствующей фигуры.

Например, если сделать две фигуры квадрат и круг, то им будут соответствовать диапазоны от 0 до 2047 для квадрата и 2048-4095 для круга. Красный (первый цвет в спектре) квадрат будет соответствовать значению 0, а красный круг значению 2048, а размер - показание между двумя соседними измерениями. 

Вот такая вот у меня есть идейка.

Автор: Leviafan 3.4.2009, 21:27
Хорошая идея, -Mikle-, однако поясни, что ты имеешь ввиду под разницей между двумя соседними показаниями?

Автор: -Mikle- 3.4.2009, 23:46

Цитата(Leviafan @  4.4.2009,  00:27 Найти цитируемый пост)
поясни, что ты имеешь ввиду под разницей между двумя соседними показаниями

К примеру с одного датчика идут такие показания: 1003, 1045, 1070, 1020, 1031, 1009, 1009, 1014 и т.д. Разница между двумя соседними показаниями будет такая: +42 (1045-1003),  +25 (1070-1045), -50, +11, -22, 0, +5... То есть, мы можем следить за разницей в изменении и соответственно как-то оповещать "смотрящего" об этом. Идея об изменении размера фигурки, при изменении показаний, мне уже чего-то не очень нравится... 
Вот почему: если показания будут например идти на протяжение долгого периода вниз (от 4000 до 0 с шагом в 1), то невозможно будет постоянно показывать (через изменение размера) что значения падают.

Но у меня есть альтернативная идея: показывать изменения через цвет контура фигурки. Берем спектр от красного до зеленого (см.рисунок спектра). Середина у него - это чисто желтый цвет, то есть имеем три точки: красный-желтый-зеленый, которые будут соответствовать -4096   0   +4096
Это означает, что если соседние показания равны - цвет будет желтый, если меньше на 4096 - красный, если больше на 4096 - зеленый. Можно кр. и зел. местами поменять. Если ты уверен, что разница между соседними показаниями в большинстве случаев (не обязательно во всех) будет меньше, чем +4096, то диапазон можно сузить, чтобы увеличить визуальную разницу.

Было бы лучше, если бы ты подробнее пояснил где и для каких целей используются аккустические датчики, и для каких целей и с какой задачей они мониторируются пользователем.

Автор: Leviafan 7.4.2009, 23:23
Акустические датчики используются для дефектоскопии поверхностей. Устройство-анализатор движется вдоль поверхности, излучая микроимпульс по тику одометра (каждые 5 мм). По обе стороны от излучателя находится пояс датчиковой системы, которая состоит из секторов, секторы - из блоков, блоки - из двух эхо и одного прямого датчика, каждый датчик - из нескольких активных зон. Для обеспечения адекватности получаемых данных излучатели запускаются не одновременно, а в некотором порядке. Снимаемые показания накапливаются в памяти анализатора, формируя микрокадры (срез показаний всех датчиков для одного микроимпульса). При внешнем запросе акустических данных устройство-анализатор формирует кадр, размер которого зависит от пропускной способности канала, количества готовых микрокадров, скорости движения дефектоскопа. Прямые датчики ориентированы на прямой импульс и ловят дефекты по отбрасываемой "тени". Эхо-сенсоры принимают отражённый от дефектов сигнал. Данные одной активной зоны имеют 12-битную разрядность. --> Думаю над визуализацией процесса, прямая задача которой - выявление неполадок в самой датчиковой системе.

Автор: -Mikle- 8.4.2009, 08:58
Цитата(Leviafan @  8.4.2009,  02:23 Найти цитируемый пост)
прямая задача которой - выявление неполадок в самой датчиковой системе

По каким критериям выявляется неполадка? Т.е. как она определяется и на каких основаниях?

Автор: Leviafan 9.4.2009, 18:59
В оперативном режиме, только визуально, по нестандартным отклонениям, посторонним шумам и т.д. Т.е. по искажению картинки, по advanced-анализу некоторых диапазонов показаний датчиков (можно подстроить спектр соответствующим образом, например, гасить низкие и средние частоты, выделяя только нужный спектр).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)