首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用Raspberry pi 3读取马达数值

尝试使用Raspberry pi 3读取马达数值
EN

Stack Overflow用户
提问于 2019-10-04 18:35:05
回答 1查看 119关注 0票数 1

目前,我正在做的项目中,我想使用树莓派3作为电机的监测设备。Raspberry pi本身使用USB连接与Roboteq控制器通信。下面是我试图通过USB发送给电机控制器的简单代码。我想要获取电机放大器并在端子中显示值:

代码语言:javascript
复制
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。我自己找不到错误,所以非常感谢大家的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-04 20:33:39

您的问题是在端口上返回的数据以非ASCII字符开头,因此下面这行代码:

代码语言:javascript
复制
if data.startswith('A='):

将永远不会被测试为真。

尝试将其替换为:

代码语言:javascript
复制
if 'A=' in data:
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58234700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档