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 zip文件 压缩
Dec 24 Python
详解在Python程序中使用Cookie的教程
Apr 30 Python
使用Python操作MySQL的一些基本方法
Aug 16 Python
Python实现的矩阵类实例
Aug 22 Python
Python3中条件控制、循环与函数的简易教程
Nov 21 Python
Python实现的摇骰子猜大小功能小游戏示例
Dec 18 Python
python针对不定分隔符切割提取字符串的方法
Oct 26 Python
详解python中的Turtle函数库
Nov 19 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
利用python中集合的唯一性实现去重
Feb 11 Python
Python如何对齐字符串
Jul 30 Python
Python 高效编程技巧分享
Sep 10 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
JQuery 表格操作(交替显示、拖动表格行、选择行等)
2009/07/29 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
2015/11/07 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
JS中==、===你分清楚了吗
2020/03/04 Javascript
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
python3实现读取chrome浏览器cookie
2016/06/19 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
基于Python开发chrome插件的方法分析
2018/07/07 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
Python用dilb提取照片上人脸的示例
2020/10/26 Python
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
与UNIX有关的几个名词
2015/09/17 面试题
点菜员岗位职责范本
2014/02/14 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
买卖协议书范本
2014/04/21 职场文书
森林防火宣传标语
2014/06/27 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
中考百日冲刺决心书
2015/09/22 职场文书