python判定串列埠已連線 python的串列埠連線

2021-10-17 04:36:44 字數 1896 閱讀 9663

python真的是強大。

還能處理串列埠的資料。

今天主要解釋下串列埠如何進行通訊的。

首先進行串列埠通訊用的是

import serial

也就是這個包起的作用。

首先我們可以先測試哪個埠是可以使用的。

# coding:utf-8

import serial.tools.list_ports

plist = list(serial.tools.list_ports.comports())

if len(plist) <= 0:

print("沒有發現埠!")

else:

plist_0 = list(plist[0])

serialname = plist_0[0]

serialfd = serial.serial(serialname, 9600, timeout=60)

print("可用埠名》", serialfd.name)

檢視現在可以用的埠數

我的電腦輸出的是com3

serialport = serial.serial(serialname, 115200, timeout=1,parity=serial.parity_even, rtscts=1)

serialname 就是埠名稱,也就是上邊自動檢測到的com3

其餘的引數是 波特率

bytesize為每個位元組的位元數,設定值為fivebits, sixbits,sevenbits, eightbits 5-8位元;

parity設定校驗位parity_none, parity_even,parity_odd parity_mark,

parity_space,用來設定校驗位;stopbits停止位,用來指示位元組完成,可以選擇的設定stopbits_one,

timeout (float)讀出超時設定;xonxoff (bool)軟體流控開關;

if x.isopen():

print("open success")

else:

print("open failed")

檢查串列埠是否正常開啟,只有開啟了才能進行通訊

現在基本的準備工作做完了,下來是進行傳送和接收資訊。

處理串列埠的傳送**

def fasong():

f = 0

while f <1:

print("zai fa song ")

time.sleep(3)

myinput=bytes([0x3f,0x0d,0x0a]) # 需要傳送的十六進製制資料的 ? 回車鍵 以及換行符

x.write(myinput)

time.sleep(3)

f = f + 1

沒有直接寫成死迴圈是因為希望進行順序通訊的,我在網上看到有的是寫了個死迴圈,然後開啟了執行緒進行通訊的,這裡沒用這個方法。

開始的時候我只傳送了乙個? 但是返回的資料都是空,一直尋找不到原因,最後通過示波器,把傳送**的波形進行對比發現傳送的波形除了?還有乙個回車以及換行的訊號。

補足了**也就返回了資訊。

def jieshou():

j = 0

while j < 1:

print("zai jie shou")

# print(x.inwaiting)

while x.inwaiting() > 0:

# global lastval

myout=x.read(8) # 提取接收緩衝區中的前8個位元組數

rainval = myout.decode('gbk')

# val = rainval - lastval

print(rainval)

# lastval = rainval

j = j + 1

這是接收部分的**。

python虛擬串列埠 python 虛擬串列埠通訊

準備著手寫乙個串列埠工具,當前程式設計環境,並沒有辦法接好下位機平台,需要模擬出乙個串列埠,不斷傳送資訊,方便除錯串列埠工具。這兩個串列埠是互相接通的,乙個com 可以當作上位機,乙個com可以當作下位機 2.python 實現向乙個串列埠內寫資料,另乙個串列埠內接受資料 usr bin pytho...

python 串列埠接收

最簡單的接收然後列印 如下 1 2 3 4 5 6 7 8 9 10 importserial ser serial.serial com4 115200 data while1 whileser.inwaiting 0 data ser.read 1 ifdata printdata data 掃...

python串列埠通訊

然後需要安裝python的serial庫 pip install pyserial在pyserial中設定串列埠的操作為 serial.serial portx,bps,timeout waittime 其中,portx為埠名稱,bps為波特率,timeout為超時時間,以秒為單位,所以操作非常簡單...