Arduino串口通讯问题

时间:2015-12-27 19:07:51

标签: python arduino

我试图编写一个简单的程序来读取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);
}

2 个答案:

答案 0 :(得分:1)

也许是private void loadArticles(final String url) { Thread thread = new Thread(new Runnable(){ @Override public void run() { try { //Get my data ... runOnUiThread(new Runnable() { public void run() { // modify Views here createArticles(); } }); } catch (Exception e) { e.printStackTrace(); } } }); thread.start(); } 的副作用。我会试试这个:

timeout=0

答案 1 :(得分:0)

尝试使用 AMD 模块!

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

AMD 是一个强大的Data-Science模块,专门用于数据提取和与Arduino的通信。 该模块自动过滤所有转义序列字符,并从Arduino返回一条数据或数据列表

通过pip安装: pip install AMD

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

您的整个python代码都可以替换为以下两行!

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

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

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

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