Python3 串列埠兩程序同時讀寫

2021-06-28 01:31:53 字數 2766 閱讀 2194

通過兩個程序分別讀寫串列埠,並把傳送與接收到的內容記錄在blog中,收到q時程式結束並退出
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名稱為當前時間

self.rfname='r'+fname #接收blog名稱

self.sfname='s'+fname #傳送blog名稱

self.thread_read= none

self.thread_send=none

def waiting(self):

# 等待event停止標誌

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串列埠除錯工具入門學習

python3 開發串列埠工具 網上有很多相關的案例,後面會一一枚舉 以下為小白入坑記錄用 到python官網download頁面,找到現在最新版安裝包 參考文件 pip是常用的python包管理工具,經常在網上搜到的文件已經安裝好該工具,由於小白是第一次使用,顧做一下記錄 採用下面的方式安裝 安裝...

python實戰串列埠助手 7串列埠傳送

上次發的帖子的接收是有異常的,昨天下班時,反覆的測試,發現問題很大,晚上不想睡覺了,就起來修改除錯,終於搞定乙個沒有異常的版本讀取函式,如果有使用我 的,把下面2個函式替換一下即可,但是還有個問題沒有解決,就是顯示到text文字框沒有實現,我還要再繼續研究一下,傳送函式,一次只能發乙個,超過乙個就無...

python3 殭屍程序

coding utf 8 from multiprocessing import process import time,os defrun print 子 os.getpid if name main p process target run p.start print 主 os.getpid t...