使用python3将arduino序列读数转换为带有覆盆子pi的float或int

问题描述 投票:1回答:1

我的覆盆子pi和我的arduino之间有一个串行连接。我可以将数据从arduino发送到pi但是当我尝试将接收数据转换为int或float时,我收到一条错误消息。

假设我尝试将数字35发送到pi,并尝试在python端转换它,我得到以下消息:

int()的基数为10的文字无效:''

当我尝试将其转换为float时,我收到以下消息:

无法将字符串转换为浮点数。

我在树莓派上使用Idle 3.5.3。我尝试了很多我在这个论坛上看过的东西:像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但我只得到错误消息

python-3.x casting arduino pyserial
1个回答
1
投票

我知道了。

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

            if int(incoming.strip()) == 1:
                    data.append(float(arduino.readline().decode('ascii').strip())/100)
© www.soinside.com 2019 - 2024. All rights reserved.