Easyelectronics.ru

Электроника для всех
Текущее время: 24 ноя 2017, 21:47

Часовой пояс: UTC + 5 часов



    • 10 шт. 2-слоя 100*100mm 2$. Быстрый заказ: JLCPCB.com
    • JLCPCB - это крупнейшая фабрика PCB прототипов в Китае.
    • Имеющий более 290,000 клиентов и выполняющий более 8,000 заказов в день.
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 26 июл 2017, 18:23 
Только пришел

Зарегистрирован: 26 июл 2017, 18:05
Сообщения: 7
Добрый день,
интересует обрезка файлов *.osc, создаваемых приложением Recorder USB-осциллографа INSTRUSTAR ISDS205.
В идеале хотелось бы скачать приложение, способное открыть график на нем выделить фрагмент для сохранения и сохранить его в том же формате osc

Может, попадалась на такое приложение ссылка?

Приложение Recorder фрагмент сохраняет в виде картинок или файла csv.
Не удобно хранить исходные файлы иногда по 100М, в которых иногда интересует короткая посылка, занимающая от силы 50К.

Рекомендации по написанию/заказу/обращению к производителю приложения не требуются.

Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 26 июл 2017, 23:35 
Старожил

Зарегистрирован: 26 апр 2013, 23:55
Сообщения: 944
...к примеру, писал свой бенчмарк 1 2 3 4 5 6 для работы с CSV файлами осциллов Tektronix, Agilent. Так даже у одного вендора по сериям они имеют различие.

Телепатируйте пример ваших CSV ? )))

Вангую: если формат ваших osc подразумевает строчное представление время-отсчеты каналов, то вся обрезка сведется к поиску границ времени.

Цитата:
иногда по 100М
у меня по 300 и более, и ничего - завели терабайтник с сервером. Наc, обработчиков, интересует все )

_________________
Белорусский журнал «Радиолюбитель»
Мои разработки http://raxp.radioliga.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 27 июл 2017, 00:16 
Только пришел

Зарегистрирован: 26 июл 2017, 18:05
Сообщения: 7
Задача регулярная - ожидание в неск.секунд, затем процесс доли секунды. Для детализации частота выборки максимальная.
Большие файлы хранить, конечно, можно, но для повторного просмотра-анализа они еще и грузятся долго, требуют многократного пошагового Zoom-а для выделения нужного фрагмента.

Если не найдется готовое приложение, напишу своё,
Формат исходного файла разобрал, обрезка вручную в Hex-редакторе получается, но это долго.
как написать - знаю.
Если таковое есть, жаль времени на повтор.
Уже с разбором заголовка файла провозился - несколько записей с вариациями параметров, на какие байты параметры измерения влияют в заголовке, что значат различия,
потом просто нашел на одном из форумов ссылку на готовый заголовок от производителя.

файлы csv также сохранял - конвертируется весь файл, а не фрагмент,
на один байт выборки файла osc (8-разрядный осциллограф) выводится строка:
"00000000.000000,0.266728", (время,значение), т.е., файл csv в 28 раз больше файла osc,
минимальный osc - 1MB.


Последний раз редактировалось bvn123 28 июл 2017, 14:35, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 27 июл 2017, 08:24 
Старожил

Зарегистрирован: 26 апр 2013, 23:55
Сообщения: 944
Цитата:
Задача регулярная - ожидание в неск.секунд, затем процесс доли секунды. Для детализации частота выборки максимальная.
Большие файлы хранить, конечно, можно, но для повторного просмотра-анализа они еще и грузятся долго, требуют многократного пошагового Zoom-а для выделения нужного фрагмента.
вы это мне рассказываете? Эти проблемы решены. Очевидно по ссылкам вы не ходили.

Цитата:
Формат исходного файла разобрал, обрезка вручную в Hex-редакторе получается
вот только для CSV редактор HEX излишен.

Цитата:
файлы csv также сохранял - конвертируется весь файл, а не фрагмент,
на один байт выборки файла osc (8-разрядный осциллограф) выводится строка:
"00015000,1.693276", (время,значение)
это все конечно интересно, но где конкретика, вы партизан? Приложите ваш CSV и OSC полностью, без всяких модификаций в теме.

_________________
Белорусский журнал «Радиолюбитель»
Мои разработки http://raxp.radioliga.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 27 июл 2017, 14:09 
Только пришел

Зарегистрирован: 26 июл 2017, 18:05
Сообщения: 7
raxp писал(а):
Цитата:
Приложите ваш CSV и OSC полностью, без всяких модификаций в теме.

не понял, зачем, т.к. вопрос в первом посте, существует ли графическое ПО для обрезки файлов ИМЕЮЩЕГОСЯ формата osc конкретного осциллографа, можно ли его скачать.
Альтернатива - написать приложение.

файлы выложил:
http://accel.net23.net/arch/gen_motor_csv.rar 1,8М архив, содержимое 28М
http://accel.net23.net/arch/gen_motor_osc.rar 260K архив, содержимое 1М
1М для osc -минимальная длина записи, родным ПО конвертация в csv только файла целиком.

записан 1 канал осциллографа,
данные в osc - заголовок 60 байт, затем один байт на одну выборку,

конвертировать в csv - уже ощутимое время, а при обычном размере 100М файла osc получится порядка 3Г csv
возможность записи osc вообще до 4Г - csv под 120Г


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 27 июл 2017, 15:44 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 2747
csv можно прямо скормить гнуплоту, в нём зазумить нужную область, и потом у него можно получить текущие координаты осей через GPVAL_X_MIN, GPVAL_X_MAX, GPVAL_Y_MIN, GPVAL_Y_MAX, но потом всё равно придётся сделать небольшой скрипт на пару строчек который пройдётся по файлу и вырежет то что надо внутри полученных от гнуплота координат.
хотя это и самим гнуплотом сделать пожалуй можно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 27 июл 2017, 23:40 
Старожил

Зарегистрирован: 26 апр 2013, 23:55
Сообщения: 944
Цитата:
не понял, зачем, т.к. вопрос в первом посте, существует ли графическое ПО для обрезки файлов ИМЕЮЩЕГОСЯ формата osc конкретного осциллографа, можно ли его скачать.
затем, чтобы проверить формат ваших данных.

По OSC у меня нет информации, а ваш CSV бенчмарк скушал на раз. Для экспорта растянутого до нужных подробностей временного участка просто жмякните F12 (или по правой клавише мыши 'Export select to CSV'). В каталоге с ПО появится 'export.csv'. Где взять, сcылки выше.

Изображение

_________________
Белорусский журнал «Радиолюбитель»
Мои разработки http://raxp.radioliga.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 28 июл 2017, 14:06 
Только пришел

Зарегистрирован: 26 июл 2017, 18:05
Сообщения: 7
raxp писал(а):
Цитата:
а ваш CSV бенчмарк скушал ...
... сcылки выше.


Спасибо за ответы,

в качестве примера выкладывал файл osc минимально возможного размера в 1М,
как упоминал ранее, в основном интересуют фрагменты из файлов размером 50-100М,
оценил время конвертирования 100M osc в csv - 17 минут
(на РС после перезагрузки, лишние приложения, в т.ч. Inet, закрыты),
размер csv составил 2,7Г
(соотношение размеров файлов 27:1 для записи одного канала осциллографа)

приложение для вырезания фрагмента osc с сохранением в osc почти закончил,
файл 100М грузится-обрабатывается-строится график, готовый под обрезку, за 8,2 секунды,
время сохранения выбранного фрагмента незначительно - фрагменты малы.
график - что-то вроде огибающей, пара точек (min,max) для крупных блоков данных, для выбора фрагмента этого достаточно

пока выложил скрины здесь:
http://accel.net23.net/ISDS205_osc_cut.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 28 июл 2017, 15:13 
Старожил

Зарегистрирован: 26 апр 2013, 23:55
Сообщения: 944
У меня родные CSV-регистрации для осциллов в среднем такого размера (есть и более):
Изображение

Время загрузки всего архива 248MB для визуализации 10 млн.точек на канал (1 строка = все каналы) ~6 сек:
Изображение

Время навигации при зуме менее секунды (экспорт куска уже мгновенный):
Изображение

Cледует отметить, что парсинг бинарных файлов файловыми потоками будет еще быстрее.

_________________
Белорусский журнал «Радиолюбитель»
Мои разработки http://raxp.radioliga.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 28 июл 2017, 21:10 
Только пришел

Зарегистрирован: 26 июл 2017, 18:05
Сообщения: 7
raxp писал(а):
Время загрузки всего архива 248MB для визуализации 10 млн.точек на канал (1 строка = все каналы) ~6 сек

Это интересно, спасибо,

вы упоминали комп с террабайтным HDD, очевидно, он существенно быстрее моего и может вести подобную обработку в десятки раз быстрее, в этом случае абсолютное время сравнивать нет смысла.

правильно ли я понял, что вы отображаете ВСЕ 10М выборок в график (не прореживая выборки, не выполняя вычислений, а отображая их все 10М)?

в моем приложении узкое место для возможной оптимизации - используемый компонент графика TChart,
с ним отображение и 100К точек требует заметного времени.

raxp писал(а):
парсинг бинарных файлов файловыми потоками будет еще быстрее.

у меня передача 100М из FileStream блоками примерно по 500К в MemoryStream занимает чуть более 200мс,
вы это имеете ввиду?

для оценки времени я убрал вычисления min-max для каждого блока 500К, копируемого из FileStream в MemoryStream,

для уверенности, что оптимизация не уберет передачу из файла, добавил анализ одного байта на скопированный блок - общее время возросло до 500мс.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 28 июл 2017, 21:42 
Старожил

Зарегистрирован: 26 апр 2013, 23:55
Сообщения: 944
Цитата:
с террабайтным HDD, очевидно, он существенно быстрее моего
нет, обычный HDD на 7200, не SSD. Но разумеется для комфортной работы SSD куда комфортнее.

Цитата:
отображаете ВСЕ 10М выборок в график (не прореживая выборки, не выполняя вычислений, а отображая их все 10М)?
прореживаю, вычисляю и отображаю экстремумы из участков прореживания. Ссылка 2 в моем первом посту в данной теме, там достаточно подробно.

Цитата:
узкое место для возможной оптимизации - используемый компонент графика TChart
любая визуализация - узкое место, нужно отображать ровно столько сколько влезает на экран пользователя, подгружая нужные участки при навигации и экономя память.

Цитата:
100М из FileStream блоками примерно по 500К в MemoryStream
да, только блоками по 50 кБ. И как показала практика, непосредственная навигация по файловому потоку идет быстрее и нет ограничений на объем RAM у пользователя. Аналогичный подход использовался для работы уже с бинарными файлами регистраций с LINK-порта процессоров ADSP. Например, первичное время сканирования и визуализации архива 12GB порядка 39 секунд:
Изображение
видео

Далее, зная структуру, навигация по индексам (позиции) идет мгновенно, поскольку весь файл шерстить уже нет необходимости.

_________________
Белорусский журнал «Радиолюбитель»
Мои разработки http://raxp.radioliga.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 28 июл 2017, 23:38 
Только пришел

Зарегистрирован: 26 июл 2017, 18:05
Сообщения: 7
сейчас понял, о каких ссылках вы пишете: на этом форуме их выделение цветом не бросается в глаза, если попадаешь между ссылками, оформленными в виде цифр, вид курсора не меняется.

у меня алгоритм аналогичен описанному - вычисляется поле отображения самого графика по горизонтали, размер файла делится на это значение и на 2 (удобнее отображать min и max для одного блока разными точками), точек порядка 1000, разница по времени с выводом этой тысячи точек и без вывода мала (доли секунды),

велика разница с вычислением макс-мин для блока и без нее - это и есть около 8с.

Не могли бы вы подсказать, какую инфу искать, т.к. "парсинг" я воспринял как "разбор" файлового потока,
быстрее всего пока получилось так:
fStrm - это TFileStream в 100М, mStrm - TMemoryStream,
BlockSize = fStrm.Size div (поле графика div 2)
отщипываю от fStrm в mStrm по блоку процедурой mStrm.CopyFromStream(fStrm, BlockSize) до исчерпания потока fStrm
для каждого блока из потока mStrm извлекаю по байту:
mStrm.Read(bt,1); вычисляю экстремумы: if bt>max then max:=bt; if bt<min then min:=bt;
выполнение именно этих циклов извлечения байта-вычисления экстремумов набрасывает 8с из 8,2с

исключил из параметров цикла обращение непосредственно к mStrm.Size и mStrm.Position, первое дало выигрыш вдвое - уменьшение с 16с до 8с

планирую еще попробовать вместо побайтного извлечения из потока fStrm.Read(bt,1)
-читать массив около 64К из fStrm: fStrm(arrBytes,64000)
-или также 64К из mStrm - посмотрю, что получится быстрее


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

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

в итоге вопрос оптимизации в моем случае такой:
есть что-то более быстрое для случайных бинарных данных (разные осциллограммы), чем я описал?


искал адрес mStream, чтобы попробовать инкрементировать указатель на байты внутри mStream, но вокруг адрес mStrm ничего похожего на введенные в него тест-данные не увидел, ни до, ни после, может, маленький дамп просматривал.
что еще приходит в голову - можно попробовать ассемблерную вставку сравнения байтов - с флагами должно быть быстрее

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 29 июл 2017, 13:40 
Старожил

Зарегистрирован: 26 апр 2013, 23:55
Сообщения: 944
...в случае случайных данных в имеющемся куске есть линейный алгоритм сортировки данных.

Нет смысла делать лишнюю операцию копирования из filestream в memorystream и потом внутри него читать побайтно (вот где потеря) - mStrm.Read(bt,1). Из filestream достаточно сразу считывать весь блок STEP в статический массив для анализа (он уже в памяти). Само сравнение отнимает мизер времени, можно использовать вычитание байт (при втором большем первого байте будет переполнение).

Код:
var i: integer;
    b1, b2: byte;
    b: byte;
    //
    Freq, TimeImp, TimeImpNow, TimeElapsed,c: int64;
begin
b1:= $0;
b2:= $1;
c:= $5F5E100; //100 000 000 циклов

QueryPerformanceFrequency(Freq);
QueryPerformanceCounter(TimeImp);

for i:= 0 to c-1 do
  b:= b1-b2; //if bt>max then max:=bt; if bt<min then min:=bt;

QueryPerformanceCounter(TimeImpNow);
TimeElapsed:= ((TimeImpNow - TimeImp) * 1000000) div Freq;

caption:= format('%d: %.6f us',[b, TimeElapsed/c])
end;

_________________
Белорусский журнал «Радиолюбитель»
Мои разработки http://raxp.radioliga.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: обрезка файлов OSC usb-осциллографа ISDS205-ищу приложение
СообщениеДобавлено: 29 июл 2017, 16:10 
Только пришел

Зарегистрирован: 26 июл 2017, 18:05
Сообщения: 7
большое спасибо, обязательно попробую
bvn123 писал(а):
планирую еще попробовать вместо побайтного извлечения из потока fStrm.Read(bt,1)
-читать массив около 64К из fStrm: fStrm(arrBytes,64000)
-или также 64К из mStrm - посмотрю, что получится быстрее

разницу в этих вариантах вряд ли замечу, т.к. и fStrm, и массив - память,
отметил для проверки оба варианта, т.к.
вариант
while ... fStrm.Read(bt,1)
в разы дольше варианта
mStrm.CopyFormStream(fStream); while ... mStream.Read(bt,1).


raxp писал(а):
Код:
QueryPerformanceFrequency(Freq);
QueryPerformanceCounter(TimeImp);

- очень полезно, спасибо, не знал о функциях win, обеспечивающих разрешение в микросекунду.

считывание из fStrm.Read (arrByte, dwBlockRead4chartPoint) с вычислением min-max для arrByte[i]
по отношению к побайтовому извлечению из потока fStrm.Read(bt,1)
уменьшило время обработки файла размером 100М с выводом графика с 8,2с до 420мс.

raxp писал(а):
for i:= 0 to c-1 do
b:= b1-b2; //if bt>max then max:=bt; if bt<min then min:=bt;
пока не понял, где получать флаг переполнения после операции
b:=$0-$1;

в Опция компилятора Проверка переполнения разрешена,
обращаться к регистру CPU? на ассемблере или есть доступ проще?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB