Python3 实现串口两进程同时读写

 更新时间:2019年06月12日 11:52:42   作者:colcloud  
今天小编就为大家分享一篇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; 

以上这篇Python3 实现串口两进程同时读写就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解django三种文件下载方式

    详解django三种文件下载方式

    这篇文章主要介绍了详解django三种文件下载方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 使用Python和Go实现服务器发送事件(SSE)

    使用Python和Go实现服务器发送事件(SSE)

    在当今的交互式web应用程序中,实时数据更新在增强用户体验方面起着至关重要的作用,在实时通信的各种技术中,SSE在众多解决方案脱颖而出,本文给大家介绍了使用Python和Go实现服务器发送事件(SSE),需要的朋友可以参考下
    2024-11-11
  • Python计时相关操作详解【time,datetime】

    Python计时相关操作详解【time,datetime】

    这篇文章主要介绍了Python计时相关操作,涉及time,datetime模块的使用技巧,包括时间戳、时间差、日期格式等操作方法,需要的朋友可以参考下
    2017-05-05
  • Python的turtle绘图库使用基础

    Python的turtle绘图库使用基础

    turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形,需要的朋友可以参考下
    2023-04-04
  • python 装饰器的使用示例

    python 装饰器的使用示例

    这篇文章主要介绍了python 装饰器的使用示例,帮助大家更好的理解和使用python装饰器,感兴趣的朋友可以了解下
    2020-10-10
  • python字典按照value排序方法

    python字典按照value排序方法

    在本篇文章里小编给各位分享一篇关于python字典按照value排序方法的相关文章,有兴趣的朋友们可以学习下。
    2020-12-12
  • 在Django中输出matplotlib生成的图片方法

    在Django中输出matplotlib生成的图片方法

    今天小编就为大家分享一篇在Django中输出matplotlib生成的图片方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 简单了解python中的与或非运算

    简单了解python中的与或非运算

    这篇文章主要介绍了简单了解python中的与或非运算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Django url 路由匹配过程详解

    Django url 路由匹配过程详解

    这篇文章主要介绍了Django url 路由匹配过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 如何使用python记录室友的抖音在线时间

    如何使用python记录室友的抖音在线时间

    这篇文章主要介绍了如何使用python记录室友的抖音在线时间,本文通过实例代码图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06

最新评论