Вопрос
Получение значений I и Q в режиме дистанционного управления. Как значения I и Q вставляются в поток данных ?
Получение значений I и Q в режиме дистанционного управления. Как значения I и Q вставляются в поток данных ?
Дистанционное считывание I/Q-данных из анализатора R&S FSV
В описании определены форматы считывания I/Q-данных в двоичном режиме. Порядок значений I и Q в двоичном потоке байтов устанавливается в соответствии с форматом передачи данных. Указаны три различных формата передачи данных.
Команда дистанционного управления для указания формата передачи данных:
TRACe<n>:IQ:DATA:FORMat <формат>
Эти три формата передачи данных:
COMPatible -> 512k отсчетов данных I, 512k отсчетов данных Q, 512k отсчетов данных I ......
IQBLock -> блок данных I, блок данных Q
IQPair -> отсчет данных I, отсчет данных Q, отсчет данных I, отсчет данных Q, отсчет данных I ......
Чертеж содержит отсчеты (не байты). В четырех байтах находится содержимое одного отсчета.
Для блоков данных 512k отсчетов данных I: 512k отсчетов = 512 * 1024 = 524288 отсчетов
Для блоков данных 512k отсчетов данных Q: 512k отсчетов = 512 * 1024 = 524288 отсчетов
Есть два различных способа инициирования передачи данных: получение всех данных за один раз и получение данных небольшими частями.
Получение всех данных за один раз: TRACe<n>:IQ:DATA?
Получение данных небольшими частями: TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>
Общее количество байтов данных, переданных через интерфейс:
L = H + s * b * i
L -> общее количество переданных байтов данных
H -> размер данных заголовка (см. спецификацию заголовка в конце данного документа)
s -> количество отсчетов
b -> всегда 4, так как в четырех байтах находится содержимое одного отсчета
i -> всегда 2, так как один отсчет представляет данные по I и Q
Примеры:
===================================================================================================
Формат передачи данных: COMPatible
Количество измеренных отсчетов: 10
Количество байтов для передачи: 10 отсчетов * 4 * 2 + заголовок = 80 байтов + заголовок
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA?
Поток данных содержит: заголовок
40 байтов данных I
40 байтов данных Q
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>
TRACe<n>:IQ:DATA:MEMory? 0, 3
Поток данных содержит: заголовок
12 байтов данных I
12 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 3, 3
Поток данных содержит: заголовок
12 байтов данных I
12 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 6, 3
Поток данных содержит: заголовок
12 байтов данных I
12 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 9, 1
Поток данных содержит: заголовок
4 байта данных I
4 байта данных Q
==============================================================
==============================================================
Формат передачи данных: COMPatible
Количество измеренных отсчетов: 700000
Количество байтов для передачи: 700000 отсчетов * 4 * 2 + заголовок = 5600000 байтов + заголовок
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA?
Поток данных содержит: заголовок
2097152 байта данных I
2097152 байта данных Q
702848 байтов данных I
702848 байтов данных Q
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>
TRACe<n>:IQ:DATA:MEMory? 0, 5000
Поток данных содержит: заголовок
20000 байтов данных I
20000 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 5000, 600000
Поток данных содержит: заголовок
2097152 байта данных I
2097152 байта данных Q
302848 байтов данных I
302848 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 605000, 95000
Поток данных содержит: заголовок
380000 байтов данных I
380000 байтов данных Q
===================================================================================================
===================================================================================================
===================================================================================================
===================================================================================================
Формат передачи данных: IQBLock
Количество измеренных отсчетов: 10
Количество байтов для передачи: 10 отсчетов * 4 * 2 + заголовок = 80 байтов + заголовок
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA?
Поток данных содержит: заголовок
40 байтов данных I
40 байтов данных Q
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>
TRACe<n>:IQ:DATA:MEMory? 0, 3
Поток данных содержит: заголовок
12 байтов данных I
12 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 3, 3
Поток данных содержит: заголовок
12 байтов данных I
12 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 6, 3
Поток данных содержит: заголовок
12 байтов данных I
12 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 9, 1
Поток данных содержит: заголовок
4 байта данных I
4 байта данных Q
==============================================================
==============================================================
Формат передачи данных: IQBLock
Количество измеренных отсчетов: 700000
Количество байтов для передачи: 700000 отсчетов * 4 * 2 + заголовок = 5600000 байтов + заголовок
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA?
Поток данных содержит: заголовок
2800000 байтов данных I
2800000 байтов данных Q
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>
TRACe<n>:IQ:DATA:MEMory? 0, 5000
Поток данных содержит: заголовок
20000 байтов данных I
20000 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 5000, 600000
Поток данных содержит: заголовок
24000000 байтов данных I
24000000 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 605000, 95000
Поток данных содержит: заголовок
380000 байтов данных I
380000 байтов данных Q
===================================================================================================
===================================================================================================
===================================================================================================
===================================================================================================
Формат передачи данных: IQPair
Количество измеренных отсчетов: 10
Количество байтов для передачи: 10 отсчетов * 4 * 2 + заголовок = 80 байтов + заголовок
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA?
Поток данных содержит: заголовок
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
........
........
4 байта данных I
4 байта данных Q
Всего 40 байтов данных I и 40 байтов данных Q
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>
TRACe<n>:IQ:DATA:MEMory? 0, 3
Поток данных содержит: заголовок
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
TRACe<n>:IQ:DATA:MEMory? 3, 3
Поток данных содержит: заголовок
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
TRACe<n>:IQ:DATA:MEMory? 6, 3
Поток данных содержит: заголовок
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
TRACe<n>:IQ:DATA:MEMory? 9, 1
Поток данных содержит: заголовок
4 байта данных I
4 байта данных Q
==============================================================
==============================================================
Формат передачи данных: IQPair
Количество измеренных отсчетов: 700000
Количество байтов для передачи: 700000 отсчетов * 4 * 2 + заголовок = 5600000 байтов + заголовок
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA?
Поток данных содержит: заголовок
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
......
......
4 байта данных I
4 байта данных Q
Всего 2800000 байтов данных I и 2800000 байтов данных Q
------------------------------------------------------------------------------------------------------------
Использование команды TRACe<n>:IQ:DATA:MEMory? s<смещение отсчетов>,<количество отсчетов>
TRACe<n>:IQ:DATA:MEMory? 0, 5000
Поток данных содержит: заголовок
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
......
......
4 байта данных I
4 байта данных Q
Всего 20000 байтов данных I и 20000 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 5000, 600000
Поток данных содержит: заголовок
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
......
......
4 байта данных I
4 байта данных Q
Всего 24000000 байтов данных I и 24000000 байтов данных Q
TRACe<n>:IQ:DATA:MEMory? 605000, 95000
Поток данных содержит: заголовок
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
4 байта данных I
4 байта данных Q
......
......
4 байта данных I
4 байта данных Q
Всего 380000 байтов данных I и 380000 байтов данных Q
===================================================================================================
===================================================================================================
===================================================================================================
===================================================================================================
===================================================================================================
Спецификация заголовка двоичного потока данных:
#45168xxxxxxxx
Блок данных начинается с такого символа ASCII, как #. Следующее число указывает, сколько последующих цифр описывают объем блока данных. В примере четыре последующие цифры указывают на объем, равный 5168 байтам. Далее следуют байты данных. При передаче этих байтов данных все специальные символы окончания и управления игнорируются вплоть до окончания передачи всех байтов.
Этот формат поддерживает только подсчет байтов до 9 цифр для количества байтов. Для более чем 999999999 байтов используется следующий дополнительный формат.
#(1100000000) xxxxxxxx
Число байтов считается, если указано в скобках. В примере число байтов указывает на размер, равный 1100000000 байтам. Байты данных следуют после закрывающей скобки.