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 04 Python
Python中使用PyHook监听鼠标和键盘事件实例
Jul 18 Python
python统计字符串中指定字符出现次数的方法
Apr 04 Python
Python中pygal绘制雷达图代码分享
Dec 07 Python
python xlsxwriter创建excel图表的方法
Jun 11 Python
Django进阶之CSRF的解决
Aug 01 Python
利用nohup来开启python文件的方法
Jan 14 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
Python之Numpy的超实用基础详细教程
Oct 23 Python
python3中rank函数的用法
Nov 27 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
May 22 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快速统计某个数据库中每张表的数据量
2012/09/04 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
JavaScript正则表达式匹配 div  style标签
2016/03/15 Javascript
jQuery DateTimePicker 日期和时间插件示例
2017/01/22 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
js阻止移动端页面滚动的两种方法
2017/01/25 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
webpack 模块热替换原理
2018/04/09 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
Python中的元类编程入门指引
2015/04/15 Python
python简单文本处理的方法
2015/07/10 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
python3 反射的四种基本方法解析
2019/08/26 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
GOOD AMERICAN官网:为曲线性感而设计
2017/12/28 全球购物
经理秘书找工作求职信
2013/12/19 职场文书
政法大学毕业生自荐信范文
2014/01/01 职场文书
民事授权委托书范文
2014/08/02 职场文书
2014个人年度工作总结
2014/12/15 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
Python中tkinter的用户登录管理的实现
2021/04/22 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技