PEHDOMC serial port monitor разобрался, сейчас посмотрю что там происходит/
Serial Port Monitor
У меня почему-то запрос выглядит так:
[14/03/2021 16:13:23] Written data (COM4) 30 31 01
[14/03/2021 16:15:13] Written data (COM4) 06 .
PEHDOMC serial port monitor разобрался, сейчас посмотрю что там происходит/
Serial Port Monitor
[14/03/2021 16:13:23] Written data (COM4) 30 31 01
[14/03/2021 16:15:13] Written data (COM4) 06 .
staxbelВы же строку пишете ‘01’.encode() без параметров кодирует строку ‘01’ в байты используя кодировку юникод, в юникоде ‘0’ это 30 ‘1’ - 31
ser.write(“01\r”.encode())
import serial ser = serial.Serial('COM4') cmd = bytearray([0x0, 0x1, 0xd]) ser.write(cmd) out = ser.read(10) print(out) ser.close()
PEHDOMДа, спасибо, что-то этот момент я упустил.
Вы же строку пишете ‘01’.encode() без параметров кодирует строку ‘01’ в байты используя кодировку юникод, в юникоде ‘0’ это 30 ‘1’ - 31
‘1’ вовсе не равно 1, хотите писать байты, так и передавайте байты.
py.user.nextОгромное спасибо. Работает.
Попробуй такой код
staxbel
мне на запрос, приходит 22 байта данных, можно ли получить данные только допустим с 8го по 16й?
reply = ser.read(22) out = reply[7:16]
>>> arr = bytes(range(22)) >>> arr b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15' >>> arr[7:16] b'\x07\x08\t\n\x0b\x0c\r\x0e\x0f' >>>
#!/usr/bin/env python3 def f(): n = 1 while True: print(n) n += 1 try: f() except KeyboardInterrupt: print('exit')
[guest@localhost py]$ python int.py
1
2
...
162915
162916
162917
^Cexit