Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF какой компонент выбрать для отображения / 13 сообщений из 13, страница 1 из 1
10.08.2010, 17:23
    #36784544
testing22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
Есть постоянно обновляемая таблица, состоящая из 50 строк и 5 полей. Обновляется 20 раз в секунду. Содержит только числовые данные. Должна быть возможна обработка кликов на ячейках, изменение цвета ячеек.

Крайне важна скорость обновления, то есть не должно быть никаких задержек визуализации. Как лучше реализовать это в WPF?
...
Рейтинг: 0 / 0
10.08.2010, 19:25
    #36784821
aleks-sam
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
Зачем так часто? Человек все равно не различит ни хрена за секунду 20 снимков. Или для чего то другого надо? Объясни для чего надо.
...
Рейтинг: 0 / 0
10.08.2010, 20:52
    #36784908
testing22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
Спасибо.

Тут ряд моментов. Вообще скорость обновления будет подстроена под периодичность обновления данных сервером, который отправляет изменения в эту таблицу. Но 20 раз в сек это максимум, поэтому и написал. Минимум - 4 раза в секунду.

Второй момент - обработка таблицы автоматизирована. Я понимаю, что вывод с такой периодичностью для глаза человека бессмысленнен (а мой вопрос подразумевает вывод именно для глаза человека), и, учитывая, что на этот мой вопрос на форумах почти никто не отвечает, и наверное, это из-за требуемой скорости обновления, хотел бы уменьшить эту планку, или вообще убрать. То есть сказем так, нужен просто быстрый компонент WPF для вывода этого дела. Но 4 раза в секунду, это, можно сказать, минимум.
...
Рейтинг: 0 / 0
10.08.2010, 20:54
    #36784910
testing22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
А, для чего надо: в этой таблице содержится важная оперативная информация, и оператор должен ее видеть, что называется, в реалтайме.
...
Рейтинг: 0 / 0
10.08.2010, 23:12
    #36785002
Осака
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
DataGrid
(только не пытайтесь "записать данные в ячейки")
...
Рейтинг: 0 / 0
11.08.2010, 06:29
    #36785125
aleks-sam
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
ОсакаDataGrid
(только не пытайтесь "записать данные в ячейки")
+1
Попробуй его протестить. Естественно обновляя инфу в источнике данных у грида, как говорит Осака.

Таймер в отдельном потоке с периодичностью 4 раза в сек

ТелоТаймера()
{
Останов таймера;
Подгрузка данных;
Заливка в источник;
Запуск таймера;
}
...
Рейтинг: 0 / 0
11.08.2010, 09:17
    #36785238
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
testing22... и, учитывая, что на этот мой вопрос на форумах почти никто не отвечает, и наверное, это из-за требуемой скорости обновления ...Нет. Это из-за неверной постановки задачи. Попробуйте представить себе пользователя, весь день наблюдающего за таблицей, мигающей как новогодняя ёлка XXX раз в секунду.
...
Рейтинг: 0 / 0
12.08.2010, 23:38
    #36789708
WPFdev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
testing22Есть постоянно обновляемая таблица, состоящая из 50 строк и 5 полей. Обновляется 20 раз в секунду. Содержит только числовые данные. Должна быть возможна обработка кликов на ячейках, изменение цвета ячеек.

Крайне важна скорость обновления, то есть не должно быть никаких задержек визуализации. Как лучше реализовать это в WPF?

Лучше самому на канве все отрисовывать. Так будет и быстрее, и мерцания не будет.
Данных немного, поэтому нарисовать свой графический контрол будет достаточно просто.
...
Рейтинг: 0 / 0
14.08.2010, 10:27
    #36791793
testing22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
То есть у меня варианты:

1. писать свой контрол
2. ListView
3. DataGrid
4. Canvas

Мерцания хотелось бы избежать в первую очередь. Видел, как это выглядит на формах - совершенно неприемлемо.
...
Рейтинг: 0 / 0
14.08.2010, 10:31
    #36791795
testing22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
(вернее, 1 и 4 это одно и то же)
...
Рейтинг: 0 / 0
14.08.2010, 13:27
    #36791841
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
Условие:
имеется канал данных, которые обновляются с периодом Т_пост;

данные нужно отображать пользователю в числовом виде;

не должно быть мерцания и т.д.

Вариант решения

установить период обновления текущего значения из канала данных для пользователя Т_обн так, чтобы Т_обн > Т_пост и Т_обн > 1 сек (или даже 2-3 сек.);

поступающие из канала данных значения записывать в массив, если и не все, то последние round(Т_обн / Т_пост) значений (т.е. набор значений с предыдущего обновления;

при обновлении выбирать максимальное (минимальное, среднее, медианное - в целом, наиболее критичное с точки зрения пользователя) для данного канала значение из последних round(Т_обн / Т_пост) поступивших и записанных в массиве, и отображать его пользователю.

Пример:

канал данных - сила тока в некоторой цепи, единица измерения - мА;

данные поступают 5 раз в секунду, т.е. Т_пост = 0.2 сек.

период обновления равен 2 сек., т.е. Т_обн = 2 сек.

размер массива данных равен Т_обн / Т_пост = 2 / 0.2 = 10;

при поступлении нового значения добавляем его в массив, удаляем самое первое значение, если размер массива превысил 10 ед.

при обновлении пишем в ячейку максимальное значение из имеющихся в массиве.

Такой подход позволит оператору нормально видеть значение контролируемого параметра, а программа сможет без особого ущерба для скорости обновления форматировать цвет ячейки в зависимости от значения. Получаемое при каждом обновлении максимальное за 2 сек. (в примере) значение можно писать в другой массив, используемый как источник данных для графика изменения значения контролируемого параметра во времени.

Идея ведь в том, что оператор на основании выводимых значений должен предпринимать некие действия, а цифры, меняющиеся с частотой N раз/сек, меняются быстрее, чем человек способен реагировать. Оператору в итоге придется полусознательно выполнять в голове вычисления, аналогичные приведенным выше. А если еще и будет меняться цвет ячеек, то вся композиция станет похожа на дикий винегрет, который быстро-быстро перемешивается.
...
Рейтинг: 0 / 0
14.08.2010, 17:39
    #36791939
testing22
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
JohnSparrow, спасибо.

Очень много нареканий вызывает требуемая скорость обновления.

По ссылке на видео справа та скорость, которую я хочу получить. Мерцания нет, скорость навскидку раз 10 в секунду:

http://tfast.ru/?p=100#comments

Данные для отображения я получаю в виде datatable. То есть каждый раз приходит новая таблица, которую мне нужно отобразить полностью.
...
Рейтинг: 0 / 0
15.08.2010, 20:04
    #36792607
aleks-sam
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WPF какой компонент выбрать для отображения
Не будет никакого мерцания.
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / WPF какой компонент выбрать для отображения / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]