В настоящее время я делаю проект, в котором я хочу использовать Raspberry pi 3 в качестве устройства для мониторинга двигателей. Сам Raspberry pi связывается с контроллером Roboteq через USB-соединение. Ниже приведен простой код, который я пытаюсь отправить через USB на контроллер мотора. Я хочу получить ампер двигателя и показать значения в терминале:
import time
import serial
def init_serial():
global ser
ser = serial.Serial(
port = '/dev/ttyACM0',
baudrate = 9600,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE,
bytesize = serial.EIGHTBITS,
timeout = 1
)
if ser.isOpen():
print("Connected to: " + ser.portstr)
def motor_ampers():
motorChannel = 1
command = '?A '+str(motorChannel)+' \r'
ser.write(command.encode())
data = ser.readline().decode().strip()
print(data)
value = 0
if data.startswith('A='):
value = int(data.split('=')[1])
print(value)
init_serial()
motor_ampers()
Небольшое объяснение моего кода. Посылая команду ?A 1
на контроллер roboteq, я могу получить первые амперы двигателя. В качестве вывода я получаю ?A 1 ▫A=-2
, где -2 - ампер двигателя. После того, как я пытаюсь извлечь моторные амперы из строки и сохранить его как целое число. Однако я всегда получаю value = 0
, даже если моторы работают. Я не могу понять ошибку самостоятельно, поэтому любая помощь очень ценится.