尝试使用 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: