【问题标题】:Arduino serial communication issueArduino串行通信问题
【发布时间】:2015-12-27 19:07:50
【问题描述】:

我正在尝试编写一个简单的程序来从 Arduino 读取串行数据。在 Arduino 串行监视器窗口中,一切正常。在 Python 控制台中,每个数字都位于单独的行中。在 Pycharm 中,它只显示b' '。不知道问题出在哪里。

Arduino 串口监视器

1234567890

1234567890

1234567890

1234567890

1234567890

1234567890

1234567890

1234567890

1234567890

1234567890

Python 3 控制台

1

2

3

4

5

6

7

8

9

0

Pycharm IDE

b' '

b' '

b' '

b' '

b' '

b' '

b' '

b' '

b' '

b' '

这是我正在使用的 Python 3 代码:

import serial
from time import sleep

Ser = serial.Serial("COM3", 9600, timeout=0)
Counter = 1

while Counter <= 10:
    data = Ser.readline()
    print(data)
    sleep(1)
    Counter += 1
Ser.close()

Arduino 代码:

void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
}

void loop() {
    // put your main code here, to run repeatedly:
    Serial.println(1234567890);
    delay(1000);
}

【问题讨论】:

    标签: python arduino


    【解决方案1】:

    可能是timeout=0 的副作用。我会试试这个:

    import serial
    
    Ser = serial.Serial("COM3", 9600, timeout=1)
    data = Ser.readline()
    print(data)
    Ser.close()
    

    【讨论】:

    • b'1234567890\r\n',如何转换为:1234567890?
    • 假设data = b'1234567890\r\n' 然后int(data) 给你1234567890
    • 如果您的数据不是数字(可能是字母或其他),请使用:data = b'1meh7890\r\n'print(data.decode())
    【解决方案2】:

    尝试使用 AMD 模块!!

    文档链接:https://pypi.org/project/AMD/

    AMD 是一个强大的数据科学模块,专为数据提取和与 Arduino 的通信而构建。 该模块自动过滤所有转义序列字符并从Arduino返回一条数据或数据列表

    通过 pip 安装:pip install AMD

    ardata 函数文档链接:https://github.com/SayadPervez/AMD-SEPERATE-DOCUMENTATION/blob/master/ardata().md

    你的整个python代码可以用下面两行代替!!

    from AMD import *
    data = ardata(3,lines=10)
    

    或者,您也可以使用以下修改后的行来获得更多功能

    data = ardata('COM3',lines=10,squeeze=False,numeric=True)
    

    第一个参数COM端口。它可以是字符串或整数。 lines 表示要从串行监视器读取的数据行数squeeze 参数指定是否必须压缩数据。numeric 指定预期数据是否为数字类型(整数或浮点数)。但是对于您的要求前两行代码就够了,其余的都是默认设置的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多