我试图编写一个简单的程序来读取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);
}
答案 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
指定期望的数据是否为数字类型(整数或浮点数)。不过,由于您的要求,前两行代码就足够了,因为其余的行是默认设置的!