#python-3.x #casting #arduino #pyserial
#python-3.x #Кастинг #arduino #pyserial
Вопрос:
У меня есть последовательное соединение между моим raspberry pi и моим arduino. Я могу отправлять данные с arduino на pi, но когда я пытаюсь преобразовать получаемые данные в int или float, я получаю сообщение об ошибке.
Допустим, я пытаюсь отправить число 35 в pi, и пытаюсь преобразовать его на стороне python, я получаю следующее сообщение:
недопустимый литерал для int() с основанием 10: «
и когда я пытаюсь преобразовать его в float, я получаю следующее сообщение:
не удалось преобразовать строку в 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:
Я понял.
incoming = arduino.readline().decode('ascii')
if not incoming is "":
if int(incoming.strip()) == 1:
data.append(float(arduino.readline().decode('ascii').strip())/100)