簡體   English   中英

Arduino串口通信問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM