![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
![]()
Моя программа должна каждую секунду принимать по сети пакет данных. Сколько полей в пакете, и каких они типов (Int16, Int32, Single, Double) - выясняется только при подключении.
Эти данные будут храниться в буфере. Т. е. для хранения данных мне нужен объект, содержащий произвольное количество переменных произвольных типов. Как можно реализовать это в C#? Данных много, поэтому простой вариант с 4-мя разными переменными на все типы данных не подойдёт. Последний раз редактировалось ds.Dante; 03.06.2011 в 15:39. |
![]() |
![]() |
![]() |
#2 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]() Цитата:
Хранить - так как они приходят в пакете (вместе с заголовком, определяющим, как я понимаю, количество и тип полей) - так и сохраняйте. Бинарный буфер/файловый поток/файл... не вижу в чём проблема... |
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
![]()
Приходят они в строке, что-то типа "42;5.5;0.0000001..."
Буфер хранит данные за несколько часов, и память нужно экономить. К тому же при обновлении окна нужно быстро пройтись по всем данным (порядка десятков МБ в буфере), сделать выборку и построить несколько графиков. Лучше как-нибудь сделать N массивов, каждый из которых имеет свой тип. Тогда выборка по каждому графику будет быстрее. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Я бы делал N списков, если потом предполагаются какие-то махинации с данными. А десятки МБ... Однозначно сбрасывать файл, хотя что за задача... Побольше бы конкретики.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
![]()
Программа каждую секунду получает данные с датчиков бурения скважины и обновляет графики.
График может быть как за последние 5 минут, так и за 5 часов, поэтому программа будет проходить по всему буферу, делая выборку тех точек, по которым строить графики (чтобы были видны все пики). Чтобы всё было быстро, все данные нужно хранить в ОЗУ, причём сгруппированные по датчикам (массив для 1-го, для 2-го, и т. д.), а не по отсчётам (массив объектов, где каждый хранит инфу по всем датчикам за один момент времени). Если бы я писал в C++, я просто рядом хранил бы тип параметра, а потом switch-ом выбирал бы ту или иную перегруженную функцию. Но мне казалось, что в таком языке как C# должно быть более простое решение. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
![]()
Похоже, я нашёл, что искал - ArrayList. С ним можно провернуть такой фортель:
Код:
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Максимальной быстроты можно добиться если строить всякие графики сразу по мере поступления данных и сбрасывать их в файл... Скажем если тебе нужен график за сутки, то вряд ли понадобится 10 Мб...
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#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 |