Чтение неожиданных байтов с использованием Pyserial, \ x004Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Чтение неожиданных байтов с использованием Pyserial, \ x004

Сообщение Anonymous »

Я пытаюсь общаться с лазерной системой над USB. Производитель предоставил документацию о том, как использовать последовательную связь для сбора информации и отправки команд в лазер. Я использую Python 3.12.7 вместе с Pyserial, чтобы общаться с лазером. байты. Различные биты, которые составляют байты, каждый из них указывают на статус различных аспектов системы. Основываясь на документации от производителя лазера, я знаю, как должно выглядеть слово статуса системы, но то, что я прочитал с устройства в Python, не совсем то, что я ожидаю. < /P>
Первое, что я сделал должен был скачать терминал, холодный, чтобы увидеть, чего ожидать от лазера. Лазер отправляет следующий пакет для слов статуса системы: < /p>
aa aa 00 01 00 10 00 11 00 03 20 00 34 00 c5 bd < /p>
Я могу разложить это в соответствии с документацией производителя, и все это имеет смысл, поэтому я уверен, что терминал предоставляет правильные данные. < /P>
В зависимости от метода, который я использую Чтобы прочитать байты и построить список, я получаю разные результаты. Моя первая итерация кода - следующая: < /p>

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

import serial

class LPY707G:
def __init__(self):

self.consettings = serial.Serial(port = None, baudrate = 9600,
bytesize = serial.EIGHTBITS,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE,
timeout = 30)

self.consettings.port = 'COM7'

def connect(self):
try:
self.consettings.open()
self.is_connect = 1
print("Successfully connected")
return self.is_connect
except Exception as e:
print("Serial Instrument could not be identified.")
print(e)
self.is_connect = 0
return self.is_connect

def disconnect(self):
try:
self.consettings.close()
self.is_connect = 0
print("Successfully disconnected")
return self.is_connect
except Exception as e:
print(e)
self.is_connect = 1
print("Still connected")
return self.is_connect

def read_bytes(self):
try:
readbytes = self.consettings.read(16)
return readbytes
except Exception as e:
print(e)

if __name__ == "__main__":
instrument = LPY707G()
instrument.connect()
print(instrument.read_bytes())
instrument.disconnect()
< /code>
Данные, которые он печатает,:
b'\xaa\xaa\x00\x01\x00\x10\x00\x11\x00\x03 \x004\x00\xc5\xbd'

Первые 10 байтов - это то, что я ожидаю, как и окончательные 3 байта, но вывод между ними, '\ x004', просто не имеет смысла Я. Я изменил функцию read_bytes и добавил для цикла. < /P>

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

def read_bytes(self):
try:
readbytes = self.consettings.read(1)
return readbytes
except Exception as e:
print(e)

if __name__ == "__main__":
instrument = LPY707G()
instrument.connect()
bytepacket = []
for i in range(16):
indvbyte = instrument.read_bytes()
bytepacket.append(indvbyte)
print(bytepacket)
instrument.disconnect()
< /code>
Этот метод печатает:
[b'\xaa', b'\xaa', b'\x00', b'\x01', b'\x00', b'\x10', b'\x00', b'\x11', b'\x00', b'\x03', b' ', b'\x00', b'4', b'\x00', b'\xc5', b'\xbd']

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

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

if __name__ == "__main__":
instrument = LPY707G()
instrument.connect()
bytepacket = bytearray()
for i in range(16):
indvbyte = instrument.read_bytes()
bytepacket += indvbyte
print(bytepacket)

instrument.disconnect()
< /code>
Этот метод печатает:
bytearray(b'\xaa\xaa\x00\x01\x00\x10\x00\x11\x00\x03 \x004\x00\xc5\xbd')

Я не могу понять, что означает '\ x004' или почему он отправляется/читает.

Подробнее здесь: https://stackoverflow.com/questions/794 ... erial-x004
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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