Попытка отправить команды на оборудование: Лазер включен и выключен. Но Python дает сбой, и оборудование не получает команду.

enter image description here enter image description here enter image description here

Список команд:

enter image description here

Ss.py:

import serial
ser = serial.Serial('/dev/tty.usbserial', serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE)
print(ser.name)
# if i add ' then also error
ser.write(\xA0h\xC1h\x01\x00h\xSt.\xAFh)

ser.close()

При выполнении произошла ошибка:

  File "ss.py", line 5
    ser.write(\xA0h\xC1h\x01\x00h\xSt.\xAFh)
                                           ^
SyntaxError: unexpected character after line continuation character

Или

Ошибка:

$ python ss.py 
Traceback (most recent call last):
  File "ss.py", line 3, in <module>
    ser = serial.Serial('/dev/tty.usbserial', serial.EIGHTBITS, serial.PARITY_NONE, serial.STOPBITS_ONE)
  File "/Library/Python/2.7/site-packages/serial/serialutil.py", line 220, in __init__
    self.bytesize = bytesize
  File "/Library/Python/2.7/site-packages/serial/serialutil.py", line 306, in bytesize
    raise ValueError("Not a valid byte size: {!r}".format(bytesize))
ValueError: Not a valid byte size: 'N'
0
user285594 22 Ноя 2017 в 11:54

1 ответ

Лучший ответ

Я подозреваю, что вам нужно отправлять команды по одной, а не одной строкой.

for command in [b'0xA0h', b'0xC1h', b'0x01', b'0x00h', b'0xSt', b'0xAFh']:
    ser.write(command)

Обратите внимание, что я также изменил начало каждой подкоманды, чтобы указать, что это шестнадцатеричное значение.

======== ======== EDIT

Глядя на список команд в вашем вопросе, мне интересно, использовали ли вы команду «Включить», чтобы убедиться, что система включена?

Я также вижу, что можно отправить строку для запроса устройства. Вы пробовали это?

0
smolloy 22 Ноя 2017 в 09:40