Работаю с CAN адаптером напрямую через COM порт (использую CANard)
import canard, serial
from canard import can
from canard.hw import cantact
f = can.Frame(41)
f.dlc = 8
f.data = [32,23,4,5,6,7,8,9]
dev = cantact.CantactDev('COM4')
dev.set_bitrate(125000)
dev.start()
dev.send(f)
Msg = dev.recv()
dev.stop()
Передача сообщения работает корректно, но с приемом беда: ValueError: invalid literal for int() with base 16: ''
Кусок кода ,на который ругается интерпретатор находится как раз в Canard'е, что странно. Вот он:
rx_str = ""
while rx_str == "" or rx_str[-1] != '\r':
rx_str = rx_str + self.ser.read().decode('UTF-8', 'ignore')
# parse the id, create a frame
frame_id = int(rx_str[1:4], 16) #строка с ошибкой
frame = can.Frame(frame_id)
Буду очень благодарен, если поможете
P.S. realterm показывает пришедшее сообщение