Попытка прочитать значения двигателя, используя Raspberry pi 3 - PullRequest
1 голос
/ 04 октября 2019

В настоящее время я делаю проект, в котором я хочу использовать 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, даже если моторы работают. Я не могу понять ошибку самостоятельно, поэтому любая помощь очень ценится.

1 Ответ

0 голосов
/ 04 октября 2019

Ваша проблема в том, что данные, которые вы возвращаете на порт, начинаются с символа, отличного от ASCII, поэтому эта строка:

if data.startswith('A='):

никогда не будет проверяться как истинная.

Попробуйте заменитьэто с:

if 'A=' in data:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...