Сейчас на форуме: (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Расшифровка файла осциллографа
Посл.ответ Сообщение


Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 07 апреля 2014 22:12 · Поправил: Mavlyudov
· Личное сообщение · #1

Тестирую осциллограф на предмет сохранения данных.
Записывает осциллограммы в два формата: стандартный (.DAT) и расширенный (.SAV).
Пробую читать эти файлы из своей программы.

Code:
  1. program Project2;
  2. {$APPTYPE CONSOLE}
  3. uses
  4.   SysUtils;
  5. var
  6.   i      : LongInt = 1;
  7. var
  8.   f1     : file of byte;
  9.   c1, c2: byte;
  10.   f2     : text;
  11. begin
  12.   assign(f1, 'LWAVE025.SAV');
  13.   assign(f2, 'LWAVE025.TXT');
  14.   reset(f1); seek(f1, $BC);
  15.   rewrite(f2);
  16.   while not eof(f1) do begin
  17.    read(f1, c1, c2);
  18.    writeln(f2, i:4, c1 - 128:6, c2 - 128:6);
  19.    inc(i);
  20.   end;
  21.   close(f1);
  22.   close(f2);
  23.  readln;
  24. end.


Есть предположение, что в начале файла идёт заголовок, в котором
может быть указатель на начало и размер блока данных.
Но как этот указатель найти??
Результаты(графики) и сами файлы в прикрепленном архиве.
А вот, какие я делал действия.

Подал на каждый из входов сигнал с внутреннего генератора.
Далее записал картинки и осциллограммы.
Картинка MAP001.BMP - для тех уровней сигналов, которые получились
после подключения щупов и нажатия "авто_установки". MAP002.BMP - это в
режиме "set to zero", т.е. осциллограф сдвинул автоматом сигналы в
ноль.
Видно, что по синему каналу прямоугольник искажен (из-за расстройки
щупа, наверное).
Для каждой из картинок Осциллограммы записал в двух режимах:
стандартный (.DAT) и расширенный (.SAV).
Сначала глянул файл .SAV. Оказалось, обе осциллограммы(при том виде
считывания, что вы предложили в паскале) записаны в одном столбце.
Указатель на начало брал ($BC). На графике по середине всплеск
(разделение каналов?),
а второй канал С2 { read(f1, c1, c2) } отсутствует, но тоже виден
всплеск по центру.
По выходному файлу получается, что на первый канал отводится от 1 до
5999 (5998 точек), а на второй 6031..12354 (6323 точки).
Как бороться с этими проблемами?
Потом посмотрел файл .DAT. Указатель на начало брал ($12). Записался
только один канал, да и то какой-то искаженный.
Другого Канала нету. Вместо него два всплеска (см картинку).

[Edited]
P.S. Возможно, не в ту ветку форума тему создал.
Может надо было в электронику или программирование?

ebca_07.04.2014_EXELAB.rU.tgz - osc_fil.rar

| Сообщение посчитали полезным: 4kusNick

Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 07 апреля 2014 23:19
· Личное сообщение · #2

Mavlyudov пишет:
На графике по середине всплеск(разделение каналов?),

Эти "всплески" - это заголовки каналов:
Code:
  1. заголовок файла
  2. 00000000  aa 55 01 2e 53 41 56 02  01 09 55 54 44 32 31 30  |.U..SAV...UTD210|
  3. 00000010  32 43 45 4c 30 31 31 35  30 31 31 30 35 32 00 00  |2CEL0115011052..|
  4. 00000020  00 00 00 00 00 19 00 19  00 0c 00 08 00 01 00 01  |................|
  5. 00000030  42 7b 01 00 00 ff ff ff  fd f7 ff ff 00 00 00 00  |B{..............|
  6. 00000040  50 00 00 00 00 00 00 00  00 01 00 14 00 00 00 00  |P...............|
  7. 00000050  00 00 00 00 00 00 00 01  00 00 00 00 00 00 00 00  |................|
  8. 00000060  00 02 01 ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
  9. 00000070  ff ff ff ff f7 ff ff ff  ff ff ff ff 
  10.  
  11. заголовок канала 0
  12. 0000007c                                       00 00 00 00  |................|
  13. 00000080  00 00 00 00 00 00 00 00  00 b2 00 40 0d 03 00 00  |...........@....|
  14. 00000090  00 00 00 00 00 00 00 00  00 00 00 00 65 cd 1d 00  |............e...|
  15. 000000a0  00 00 00 40 42 0f 00 00  00 00 00 70 17 00 00 b8  |...@B......p....|
  16. 000000b0  0b 00 00 ff ff ff ff ff  ff ff 
  17.  
  18. данные канала 0
  19. 000000ba                                 dd 00 de 00 de 00  |................|
  20. 000000c0  dd 00 de 00 dd 00 dd 00  de 00 dd 00 dd 00 dd 00  |................|
  21. ...
  22. 00002f90  de 00 de 00 dd 00 de 00  dd 00 
  23.  
  24. заголовок канала 1
  25. 00002f9a                                 01 00 00 00 00 00  |................|
  26. 00002fa0  00 00 00 00 00 00 00 4e  00 80 84 1e 00 00 00 00  |.......N........|
  27. 00002fb0  00 00 00 00 00 00 00 00  00 00 65 cd 1d 00 00 00  |..........e.....|
  28. 00002fc0  00 40 42 0f 00 00 00 00  00 70 17 00 00 b8 0b 00  |.@B......p......|
  29. 00002fd0  00 0f 0f 0f 0f 0f 0f 0f  
  30.  
  31. данные канала 1
  32. 00002fd8                           75 00 75 00 75 00 74 00  |........u.u.u.t.|
  33. 00002fe0  75 00 74 00 75 00 74 00  75 00 74 00 76 00 75 00  |u.t.u.t.u.t.v.u.|
  34.  
  35. 00006130  75 00 74 00 75 00 74 00  75 00 74 00 74 00 74 00  |u.t.u.t.u.t.t.t.|
  36.  
  37.  
  38. поля заголовка канала
  39. 00 -  номер
  40. 000000000000000000000000 
  41. b200 
  42. 400d 
  43. 0300 
  44. 0000000000000000000000000065cd1d0000000040420f0000000000 
  45. 70170000 - размер данных в словах
  46. b80b0000 
  47. ffffffffffffff 


| Сообщение посчитали полезным: Mavlyudov


Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 07 апреля 2014 23:45
· Личное сообщение · #3

rmn
Спасибо. Это для файла .SAV.
А по файлу .DAT аналогично?




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 08 апреля 2014 02:04
· Личное сообщение · #4

Здорово видеть такие темы на этом форуме, спасибо!
Не удержался, извините.

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.


| Сообщение посчитали полезным: ClockMan, tihiy_grom, Rainbow


Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 08 апреля 2014 14:45
· Личное сообщение · #5

rmn
Судя по блокам данных каналов 0 и 1 получается, что
на первый канал (0x2F98 - 0xBA)/2 = 5999dec отсчетов,
на второй (0x613F - 0x2FD8)/2 = 6323dec отсчетов
Хотя размер на оба блока одинаковый 70170000
(Как пользоваться этим размером с учетом того, что
у осциллографа 16-ти разрядный процессор?)
По графикам также видно, что размер второго канала болше первого.



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 08 апреля 2014 18:09 · Поправил: rmn
· Личное сообщение · #6

Mavlyudov
Нам нужно больше минералов семплов
С каналами в разных масштабах, с одним/двумя/тремя графиками (два канала и функция, к примеру), со смещением фаз, с числовыми значениями Vmin/Vmax...

Еще осцил обычно можно подключить к компу и через софт, идущий в комплекте, смотреть картинку. Логично предположить, что обмен между девайсом и компом идет не битмапами и пореверсить софт.




Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 13 апреля 2014 02:59
· Личное сообщение · #7

rmn
Сделал еще 8 файлов.
По одному независимому сигналу на каждый из канал.
Один сигнал с генератора Г5-54, второй сигнал с внутреннего генератора
осциллографа.
Как и раннее записывал короткие осциллограммы(файл .DAV) и длинные (.SAV).
Также записывал скриншоты в bmp.
Потом повторил все тоже самое, но с функцие MATH (сложение канал1+канал2).
В осциллографе каждый из каналов сохраняется отдельно(при сохранении надо выбирать
вручную, какой сохранить). Не знаю, сохраняется при этом math или нет.
Развертки такие: канал1 = 10в/дел, канал 2 = 2в/дел. Временная = 200 мкс/дел
Архив прилагается

82b9_13.04.2014_EXELAB.rU.tgz - exl.rar



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 14 апреля 2014 19:29
· Личное сообщение · #8

Mavlyudov пишет:
Судя по блокам данных каналов 0 и 1 получается, что на первый канал (0x2F98 - 0xBA)/2 = 5999dec отсчетов, на второй (0x613F - 0x2FD8)/2 = 6323dec отсчетов Хотя размер на оба блока одинаковый 70170000 (Как пользоваться этим размером с учетом того, что у осциллографа 16-ти разрядный процессор?) По графикам также видно, что размер второго канала болше первого.

читать столько же значений, сколько в первом канале, остальные игнорить. В этом случае график больше похож на то, что на картинках (есть небольшой баг в конце графика, но он не существенный).

В dat файлах только один канал, но два массива значений для него (хз, для чего. Может графики с разным усреднением). Счетчика длины в заголовке нет, конец массива определяется по последовательности 0xffff..0xfffe (20 значений).

Code:
  1. typedef struct _DAT_HEADER
  2. {
  3.     uint16_t    unk0[4];
  4.     uint16_t    channelZeroLevel;
  5.     uint16_t    unk1[4];
  6. }DAT_HEADER;
  7.  
  8. typedef struct _SAV_FILE_HEADER
  9. {
  10.     uint16_t    magic; // 0x55AA
  11.     uint16_t    unk0;
  12.     uint8_t     format[3]; // 'SAV'
  13.     uint8_t     version[3]; // ?
  14.     uint8_t     model[20]; // 'UTD2102CEL0115011052'
  15.     uint8_t     unk1[94];
  16. }SAV_FILE_HEADER;
  17.  
  18. typedef struct _SAV_CHANNEL_HEADER
  19. {
  20.     uint8_t     channelNumber;
  21.     uint16_t     unk0[6];
  22.     uint16_t    channelZeroLevel;
  23.     uint16_t    unk1[16];
  24.     uint16_t    valueCount;
  25.     uint16_t    unk2[6];
  26.     uint8_t     unk3;
  27. }SAV_CHANNEL_HEADER;


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




Ранг: 156.2 (ветеран), 2thx
Активность: 0.090
Статус: Участник

Создано: 15 апреля 2014 01:48
· Личное сообщение · #9

Спасибо!

rmn пишет:
В dat файлах только один канал, но два массива значений для него


Это ты про эти два массива?
(0x26a-0x12)/2 и (0x4ea-0x292)/2. Каждый по 300 отсчетов.

На 31-ом байте от начала файла .SAV есть указатель на конец заголовка (или размер заголовка),
значение 7B. Или это просто совпадение...


 eXeL@B —› Вопросы новичков —› Расшифровка файла осциллографа
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати