我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python3 串口两进程同时读写

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python3 串口两进程同时读写

通过两个进程分别读写串口,并把发送与接收到的内容记录在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; 



免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python3 串口两进程同时读写

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python3 串口两进程同时读写

通过两个进程分别读写串口,并把发送与接收到的内容记录在blog中,收到q时程序结束并退出import threading,timeimport serialimport stringclass SerThread: def __ini
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录