目前,我正在做的项目中,我想使用树莓派3作为电机的监测设备。Raspberry pi本身使用USB连接与Roboteq控制器通信。下面是我试图通过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命令到机器人控制器,我可以得到第一马达安培。作为输出,我得到了?A 1 ▫A=-2,其中-2是马达安培。在我尝试从字符串中提取电机放大器并将其存储为整数后。然而,即使马达在运行,我也总是得到value = 0。我自己找不到错误,所以非常感谢大家的帮助。
发布于 2019-10-04 20:33:39
您的问题是在端口上返回的数据以非ASCII字符开头,因此下面这行代码:
if data.startswith('A='):将永远不会被测试为真。
尝试将其替换为:
if 'A=' in data:https://stackoverflow.com/questions/58234700
复制相似问题