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


Posted in Python onJune 12, 2019

通过两个进程分别读写串口,并把发送与接收到的内容记录在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 实现串口两进程同时读写就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
Python的string模块中的Template类字符串模板用法
Jun 27 Python
python解析基于xml格式的日志文件
Feb 25 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
python wxpython 实现界面跳转功能
Dec 17 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 Python
python实现俄罗斯方块小游戏
Apr 24 Python
解决python使用list()时总是报错的问题
May 05 Python
python的help函数如何使用
Jun 11 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
Python制作动态字符画的源码
Aug 04 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 #Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 #Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 #Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 #Python
Python3简单实现串口通信的方法
Jun 12 #Python
Python集中化管理平台Ansible介绍与YAML简介
Jun 12 #Python
selenium获取当前页面的url、源码、title的方法
Jun 12 #Python
You might like
php下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
php中url函数介绍及使用示例
2014/02/13 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
js Calender控件使用详解
2015/01/05 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
简单介绍Python中的RSS处理
2015/04/13 Python
Python获取文件所在目录和文件名的方法
2017/01/12 Python
python决策树之C4.5算法详解
2017/12/20 Python
Python 实现微信防撤回功能
2019/04/29 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
Python实现直播推流效果
2019/11/26 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
英国翻新电子产品购物网站:Tech Trade
2017/12/25 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
shallow copy和deep copy的区别
2016/05/09 面试题
介绍一下linux文件系统分配策略
2013/02/25 面试题
材料加工硕士生求职信
2013/10/10 职场文书
皮肤科医师岗位职责
2013/12/04 职场文书
求职信需要的五点内容
2014/02/01 职场文书
绿色城市实施方案
2014/03/19 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书