Преобразование последовательных чтений Arduino в float или int на Raspberry Pi с Python3 - PullRequest
1 голос
/ 16 апреля 2019

У меня есть последовательное соединение между моим Raspberry Pi и моим Arduino . Я могу отправить данные из arduino в pi , но когда я пытаюсь преобразовать полученные данные в int или float , я получаю сообщение об ошибке.

Допустим, я пытаюсь отправить число 35 на pi и пытаюсь преобразовать его на стороне python . Я получаю следующее сообщение:

недопустимый литерал для int () с основанием 10: ''

и когда я пытаюсь преобразовать его в float , я получаю следующее сообщение:

не удалось преобразовать строку в число с плавающей точкой.

Я использую Idle 3.5.3 на Raspberry Pi . Я перепробовал много вещей, которые видел на этом форуме: например, strip(), но ничего не работает. Что может быть не так?

Arduino код:

void setup() {
  Serial.begin(9600);

}

void loop() {

  Serial.println(35);

  delay(5000);


}

Код Python:

#!/usr/bin/env python3
import time
import serial
from array import array
import csv

arduino = serial.Serial(
        port='/dev/ttyACM0',
        baudrate = 9600,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS,
        timeout=1
)
arduino.flushInput()


print("test")

while 1:
       incoming = arduino.readline().decode('ascii').strip()
       float(incoming)
       print(incoming)

Я ожидал приведение к int или float , но я получаю только сообщения об ошибках

1 Ответ

1 голос
/ 16 апреля 2019

Я понял.

incoming = arduino.readline().decode('ascii')
    if not incoming is "":

            if int(incoming.strip()) == 1:
                    data.append(float(arduino.readline().decode('ascii').strip())/100)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...