Python3 實(shí)現(xiàn)串口兩進(jìn)程同時(shí)讀寫
通過兩個(gè)進(jìn)程分別讀寫串口,并把發(fā)送與接收到的內(nèi)容記錄在blog中,收到q時(shí)程序結(jié)束并退出
import threading,time import serial import string class SerThread: def __init__(self, Port=0): #初始化串口、blog文件名稱 self.my_serial = serial.Serial() self.my_serial.port=Port self.my_serial.baudrate = 9600 self.my_serial.timeout = 1 self.alive = False self.waitEnd = None fname=time.strftime("%Y%m%d")#blog名稱為當(dāng)前時(shí)間 self.rfname='r'+fname #接收blog名稱 self.sfname='s'+fname #發(fā)送blog名稱 self.thread_read= None self.thread_send=None def waiting(self): # 等待event停止標(biāo)志 if not self.waitEnd is None: self.waitEnd.wait() def start(self): #開串口以及blog文件 self.rfile=open(self.rfname,'w') self.sfile=open(self.sfname,'w') self.my_serial.open() if self.my_serial.isOpen(): self.waitEnd = threading.Event() self.alive = True self.thread_read = threading.Thread(target=self.Reader) self.thread_read.setDaemon(True) self.thread_send=threading.Thread(target=self.Sender) self.thread_send.setDaemon(True) self.thread_read.start() self.thread_send.start() return True else: return False def Reader(self): while self.alive: try: n=self.my_serial.inWaiting() data='' if n: data= self.my_serial.read(n).decode('utf-8') print ('recv'+' '+time.strftime("%Y-%m-%d %X")+' '+data.strip()) print (time.strftime("%Y-%m-%d %X:")+data.strip(),file=self.rfile) if len(data)==1 and ord(data[len(data)-1])==113: #收到字母q,程序退出 break except Exception as ex: print (ex) self.waitEnd.set() self.alive = False def Sender(self): while self.alive: try: snddata=input("input data:\n") self.my_serial.write(snddata.encode('utf-8')) print ('sent'+' '+ time.strftime("%Y-%m-%d %X")) print (snddata,file=self.sfile) except Exception as ex: print (ex) self.waitEnd.set() self.alive = False def stop(self): self.alive = False #self.thread_read.join() #self.thread_send.join() if self.my_serial.isOpen(): self.my_serial.close() self.rfile.close() self.sfile.close() if __name__ == '__main__': ser = SerThread('com4') try: if ser.start(): ser.waiting() ser.stop() else: pass; except Exception as ex: print (ex) if ser.alive: ser.stop() print ('End OK .'); del ser;
以上這篇Python3 實(shí)現(xiàn)串口兩進(jìn)程同時(shí)讀寫就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Python3 串口接收與發(fā)送16進(jìn)制數(shù)據(jù)包的實(shí)例
- Python3簡(jiǎn)單實(shí)現(xiàn)串口通信的方法
- 對(duì)python3 Serial 串口助手的接收讀取數(shù)據(jù)方法詳解
- 使用Python3+PyQT5+Pyserial 實(shí)現(xiàn)簡(jiǎn)單的串口工具方法
- 使用python3實(shí)現(xiàn)操作串口詳解
- python實(shí)戰(zhàn)串口助手_解決8串口多個(gè)發(fā)送的問題
- 對(duì)Python 簡(jiǎn)單串口收發(fā)GUI界面的實(shí)例詳解
- Python 串口讀寫的實(shí)現(xiàn)方法
相關(guān)文章
python 網(wǎng)絡(luò)編程要點(diǎn)總結(jié)
Python 提供了兩個(gè)級(jí)別訪問的網(wǎng)絡(luò)服務(wù):低級(jí)別的網(wǎng)絡(luò)服務(wù)支持基本的 Socket,它提供了標(biāo)準(zhǔn)的 BSD Sockets API,可以訪問底層操作系統(tǒng) Socket 接口的全部方法。高級(jí)別的網(wǎng)絡(luò)服務(wù)模塊SocketServer, 它提供了服務(wù)器中心類,可以簡(jiǎn)化網(wǎng)絡(luò)服務(wù)器的開發(fā)。下面看下該如何使用2021-06-06Python中出現(xiàn)"No?module?named?'requests'"
這篇文章主要給大家介紹了關(guān)于Python中出現(xiàn)"No?module?named?'requests'"的解決辦法,"No?module?named?requests"是Python報(bào)錯(cuò)提示,意味著你在使用某個(gè)Python程序或腳本時(shí),沒有找到名為requests的模塊,需要的朋友可以參考下2023-11-11python學(xué)生信息管理系統(tǒng)(完整版)
這篇文章主要為大家詳細(xì)介紹了python學(xué)生信息管理系統(tǒng)的完整版本代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10Python實(shí)現(xiàn)的破解字符串找茬游戲算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的破解字符串找茬游戲算法,簡(jiǎn)單分析了找茬游戲的原理,并結(jié)合具體實(shí)例形式分析了Python實(shí)現(xiàn)破解找茬游戲的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09Python使用re模塊實(shí)現(xiàn)信息篩選的方法
這篇文章主要介紹了Python使用re模塊實(shí)現(xiàn)信息篩選的方法,結(jié)合實(shí)例形式分析了Python正則re模塊進(jìn)行信息篩選操作的相關(guān)實(shí)現(xiàn)技巧及相關(guān)函數(shù)使用技巧,需要的朋友可以參考下2018-04-04PyQt5實(shí)現(xiàn)簡(jiǎn)易電子詞典
這篇文章主要為大家詳細(xì)介紹了PyQt5實(shí)現(xiàn)簡(jiǎn)易電子詞典,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06