[英]Arduino serial communication issue
我正在嘗試編寫一個簡單的程序來從 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
開發環境:
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()
阿杜諾代碼:
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);
}
也許是timeout=0
的副作用。 我會試試這個:
import serial
Ser = serial.Serial("COM3", 9600, timeout=1)
data = Ser.readline()
print(data)
Ser.close()
嘗試使用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
指定預期數據是否為數字類型(整數或浮點數)。 然而,對於您的要求,前兩行代碼就足夠了,因為其余代碼都是默認設置的!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.