@Rudtoha

Как решить ошибку преобразования типов python?

Работаю с 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 показывает пришедшее сообщение
  • Вопрос задан
  • 219 просмотров
Решения вопроса 1
Winsik
@Winsik
сис.админ, недопрограммист :)
А что не так ?
Вам же говорят, что "" (ничего) не является правильным 16-ричным числом
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
if rx_str:

или

rx_str is not None:
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы