尝试使用 Raspberry pi 3 读取电机值
Trying to read motor values using Raspberry pi 3
目前我正在做一个项目,我想使用 Raspberry pi 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()
对我的代码的一些解释。通过向 roboteq 控制器发送 ?A 1
命令,我可以获得第一个电机安培数。作为输出,我得到 ?A 1 ▫A=-2
,其中 -2 是电机电流。在我尝试从字符串中提取电机安培数并将其存储为整数之后。然而,即使电机是 运行,我也总是得到 value = 0
。我自己无法弄清楚错误,因此非常感谢您的帮助。
您的问题是您在端口上取回的数据以非 ASCII 字符开头,因此这一行:
if data.startswith('A='):
永远不会被测试为真。
尝试将其替换为:
if 'A=' in data:
目前我正在做一个项目,我想使用 Raspberry pi 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()
对我的代码的一些解释。通过向 roboteq 控制器发送 ?A 1
命令,我可以获得第一个电机安培数。作为输出,我得到 ?A 1 ▫A=-2
,其中 -2 是电机电流。在我尝试从字符串中提取电机安培数并将其存储为整数之后。然而,即使电机是 运行,我也总是得到 value = 0
。我自己无法弄清楚错误,因此非常感谢您的帮助。
您的问题是您在端口上取回的数据以非 ASCII 字符开头,因此这一行:
if data.startswith('A='):
永远不会被测试为真。
尝试将其替换为:
if 'A=' in data: