|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.06.2011, 15:35 | #1 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Произвольное число переменных произвольных типов
Моя программа должна каждую секунду принимать по сети пакет данных. Сколько полей в пакете, и каких они типов (Int16, Int32, Single, Double) - выясняется только при подключении.
Эти данные будут храниться в буфере. Т. е. для хранения данных мне нужен объект, содержащий произвольное количество переменных произвольных типов. Как можно реализовать это в C#? Данных много, поэтому простой вариант с 4-мя разными переменными на все типы данных не подойдёт. Последний раз редактировалось ds.Dante; 03.06.2011 в 15:39. |
03.06.2011, 15:53 | #2 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Хранить - так как они приходят в пакете (вместе с заголовком, определяющим, как я понимаю, количество и тип полей) - так и сохраняйте. Бинарный буфер/файловый поток/файл... не вижу в чём проблема... |
|
03.06.2011, 16:10 | #3 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Приходят они в строке, что-то типа "42;5.5;0.0000001..."
Буфер хранит данные за несколько часов, и память нужно экономить. К тому же при обновлении окна нужно быстро пройтись по всем данным (порядка десятков МБ в буфере), сделать выборку и построить несколько графиков. Лучше как-нибудь сделать N массивов, каждый из которых имеет свой тип. Тогда выборка по каждому графику будет быстрее. |
05.06.2011, 11:45 | #4 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Я бы делал N списков, если потом предполагаются какие-то махинации с данными. А десятки МБ... Однозначно сбрасывать файл, хотя что за задача... Побольше бы конкретики.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
06.06.2011, 09:23 | #5 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Программа каждую секунду получает данные с датчиков бурения скважины и обновляет графики.
График может быть как за последние 5 минут, так и за 5 часов, поэтому программа будет проходить по всему буферу, делая выборку тех точек, по которым строить графики (чтобы были видны все пики). Чтобы всё было быстро, все данные нужно хранить в ОЗУ, причём сгруппированные по датчикам (массив для 1-го, для 2-го, и т. д.), а не по отсчётам (массив объектов, где каждый хранит инфу по всем датчикам за один момент времени). Если бы я писал в C++, я просто рядом хранил бы тип параметра, а потом switch-ом выбирал бы ту или иную перегруженную функцию. Но мне казалось, что в таком языке как C# должно быть более простое решение. |
06.06.2011, 16:26 | #6 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Похоже, я нашёл, что искал - ArrayList. С ним можно провернуть такой фортель:
Код:
|
07.06.2011, 06:55 | #7 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Максимальной быстроты можно добиться если строить всякие графики сразу по мере поступления данных и сбрасывать их в файл... Скажем если тебе нужен график за сутки, то вряд ли понадобится 10 Мб...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
07.06.2011, 09:39 | #8 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Шестичасовой (по умолчанию) буфер весит метров сорок.
Если пользователь крутанёт ролик мышки, то масштабирование с перерисовкой в реальном времени через файл не сделаешь. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос по преобразованию типов переменных (TImage и FILE) | Pcrepair | Общие вопросы Delphi | 3 | 04.01.2011 15:15 |
Преобразование типов переменных | Guguzjaka | Общие вопросы C/C++ | 5 | 30.11.2009 18:45 |
Размер переменных базовых типов. | Defa4ka | Помощь студентам | 2 | 06.09.2009 01:46 |
Значение типов переменных | MAKEDON | Общие вопросы Delphi | 8 | 17.07.2008 11:24 |
Перевод переменных разных типов | LeoN | Общие вопросы Delphi | 3 | 23.03.2007 00:15 |