Впервые в Fifo в Linux, чтение с Python приводит к тарабарщине? (двоичный)Linux

Ответить
Anonymous
 Впервые в Fifo в Linux, чтение с Python приводит к тарабарщине? (двоичный)

Сообщение Anonymous »

Я пытаюсь получить данные с датчиков, чтобы передать их в базу данных influxdb. У нас есть очень старые датчики, записывающие это на сервер через FIFO на этом сервере. Я знаю, что могу это прочитать (сделал быструю программу):

Код: Выделить всё

# reader.py
import os

FIFO = '/var/axis/sensor1'

FIFO_PATH = FIFO

fifo_path = FIFO
print("about to "+fifo_path)
# Ensure the FIFO exists
if not os.path.exists(fifo_path):
raise IOError("The FIFO '{0}' does not exist. Please create it using 'mkfifo {0}'.".format(fifo_path))

print("Opening FIFO {0} for reading...".format(fifo_path))
fifo_fd = os.open(fifo_path, os.O_RDONLY)
fifo_file = os.fdopen(fifo_fd)

try:
while True:
line = fifo_file.read(1)
if not line:
break

# Print the line to the screen
print(line),

finally:
fifo_file.close()
print("FIFO Closed.")
Итак, когда я запускаю это и датчик обрабатывает данные, я вижу что-то вроде этого, прокручивая экран:

Код: Выделить всё

@eN?>??Y?n??A?)??[Z@?c
@eN?>??\?n??A?)??[Z@?(
@eN?>`?n??A?)??[Z@??    @eN?>33c?n??A?)??[Z@??  @eN?>fff?n??A?)??[Z@??  @eN?>??i?n??A?)??[Z@?   @eN?>??l?n??A?)??[Z@?   @eN?>p?n??A?)??[Z@? @eN?>33s?n??A?)??[Z@?   @eN?>ffv?n??A?)??[Z@?   @eN?>??y?n??A?)??[Z@?   @eN?>??|?n??A?)??[Z@?   @eN?>??n??A?)??[Z@? @eN?>33??n??A?)??[Z@?   @eN?>ff??n??A?)??[Z@?   @eN?>????n??A?)??[Z@?   @eN?>?̌?n??A?)??[Z@?    @eN?>??n??A?)??[Z@? @eN?>33??n??A?)??[Z@?   @eN?>ff??n??A?)??[Z@?   @eN?>????n??A?)??[Z@?   @eN?>?̜?n??A?)??[Z@?    @eN?>??n??A?)??[Z@? @eN?>33??n??A?)??[Z@?   @eN?>ff??n??A?)??[Z@?   @eN?>????n??A?)??[Z@?   @eN?>?̬?n??A?)??[Z@?    @eN?>??n??A?)??[Z@? @eN?>33??n??A?)??[Z@?   @eN?>ff??n??A?)??[Z@?   @eN?>????n??A?)??[Z@?   @eN?>?̼?n??A?)??[Z@?    @eN?>??n??A?)??[Z@? @eN?>33??n??A?)??[Z@?   @eN?>ff??n??A?)??[Z@?   @eN?>????n??A?)??[Z@?   @eN?>????n??A?)??[Z@?   @eN?>??n??A?)??[Z@? @eN?>33??n??A?)??[Z@?   @eN?>ff??n??A?)??[Z@?   @eN?>????n??A?)??[Z@?   @eN?>????n??A?)??[Z@?   @eN?>??n??A?)??[Z@? @eN?>33??n??A?)??[Z@@eN?>ff??n??A?)??[Z@?   @eN?>????n??A?)??[Z@?   @eN?>????n??A?)??[Z@?   @eN?>??n??A?)??[Z@? @eN?>33??n??A?)??[Z@?   @eN?>ff??n??A?)??[Z@?   @eN?>????n??A?)??[Z@?   @eN?>????n??A?)??[Z@P?  @???z?>?n??A?)??[Z@?~
@???z?>33?n??A?)??[Z@?_
@???z?>ff?n??A?)??[Z@??
Очевидно, что строка чтения — неправильная команда. Я думаю, эти данные двоичные? Всегда ли fifo двоичны? Если это двоичный файл, это означает, что мне нужно выяснить, как эта старая система/датчик записывает этот файл Fifo, чтобы знать, как его затем загрузить и проанализировать?
Я хочу знать, что я читаю поэтому я знаю, как упаковать его в формате json и отправить в influxdb.

Подробнее здесь: https://stackoverflow.com/questions/789 ... ish-binary
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»