У меня есть исходный двоичный файл (1 KB ↓), который является дампом последовательных данных потока GPS (наряду с некоторыми связанными метаданными). Я специально пытаюсь извлечь ценность из двоичного файла, который представляет время GPS; Я знаю его смещение и ширину в файле (соответственно 10 и 8 байтов, с общей шириной кадра 28 байтов), но он кодируется очень странным образом, как описано в приведенной ниже цитате.Декодирование скремблированных двоичных данных из GPS с Python
Какой самый Pythonic способ прочитать эти данные (в список или массив)?
GPS TIME - Датчик GPS (время недели в секундах, начиная с субботу 2400 часов/воскресенье 0000 часов), если время GPS Действительно сообщение 3500 устанавливается в 1, в противном случае времени SDN500 системы так сообщается о включении питания. слова данных в порядке 2, 1 (MSW), 4 (LSW), 3.
Длина сообщения слово 16 бит на интерфейсе SDN500-HV. Тем не менее, протокол SDN500-HV, который использует стандартный Универсальный асинхронный приемник (UART), передает данные в 8-битных группах (байтах). Это означает, что для формирования одного сообщения требуется два байта.
Байт информации, передается в виде последовательности 11 бит: один стартовый бит , 8 бит данных (младший значащий бит (LSB), первый), один бит четности (нечетного), и один стоп-бит. Для каждого 16-битного слова данных сначала передается младший младший байт , за которым следует старший байт . Целочисленные и типы данных с плавающей точкой, состоящие из , с наименьшего пронумерованного слова передается более одного слова до наивысшее пронумерованное слово. Единственным исключением из этого правила является тег времени , который выводится в словах 6-9 каждого выходного сообщения HV. Четыре слова данных находятся в следующем порядке: 2,1,4,3, где 1 представляет собой наиболее значимое слово и 4 наименее значимого слова. Каждое слово по отдельности обращается в обратном порядке.
Если вы более владеете другим языком (например, Matlab или C), мне все равно понравится пример фрагмента кода, который будет читать эти данные. Это поможет мне понять, как лучше подходить к чтению в Python. – Nick
Надеюсь, кто-то еще даст вам лучшую информацию, но модуль https://docs.python.org/2/library/struct.html - это то, где вы хотите начать поиск двоичного файла. Я использовал его только один раз на короткое время, поэтому не могу помочь гораздо больше. –
@JLPeyret Да, я возился со структурой.распаковывать варианты и шестнадцатеричный редактор весь день, пытаясь получить разумные значения из этого, но не выяснили, как правильно читать структуру MSB/LSB. Хотя я смог прочитать некоторые другие поля. – Nick