Python串口異步通信

Python串口異步通信(串口接收中斷)

串口是計算機上一種非常通用的設備通信協議。pyserial模塊封裝了python對串口的訪問,爲多平臺的使用提供了統一的接口。

安裝庫

Python要使用串口功能需要導入這兩個庫:

  • pyserial (基本串口功能)
pip3 install pyserial
  • pyserial-asyncio (實現異步功能需要這個庫)
pip3 install pyserial-asyncio

獲取串口名稱

使用serial.tools.list_ports.comports()函數會返回一個ListPortInfo類型的列表

import serial
import serial.tools.list_ports

class serial_class:
    def get_port(self):
        self.port_list = serial.tools.list_ports.comports()
        return self.port_list

serial_port = serial_class()
port = serial_port.get_port()
for i in range(0,len(port)):
    print(tuple([port[i].device]))

普通串口操作

import serial 
    portx="COM3"
    bps=115200
    timex=5
    # 打開串口,並得到串口對象
   ser=serial.Serial(portx,bps,timeout=timex)
 
   # 寫數據
   result=ser.write("我是東小東".encode("gbk"))
   print("寫總字節數:",result)
 
   ser.close()#關閉串口

開始異步收發

import asyncio
import serial_asyncio

class Output(asyncio.Protocol):
    def connection_made(self, transport):
        self.transport = transport
        print('port opened', transport)
        transport.serial.rts = False
        transport.write(b'hello world\n')

    def data_received(self, data):
        print('data received', repr(data))
        #self.transport.close()

    def connection_lost(self, exc):
        print('port closed')
        asyncio.get_event_loop().stop()

loop = asyncio.get_event_loop()
coro = serial_asyncio.create_serial_connection(loop, Output, 'COM1', baudrate=115200)
loop.run_until_complete(coro)
loop.run_forever()
loop.close()
發佈了8 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章