Первое, что я сделал должен был скачать терминал, холодный, чтобы увидеть, чего ожидать от лазера. Лазер отправляет следующий пакет для слов статуса системы: < /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