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利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
python 去除txt文本中的空格、数字、特定字母等方法
Jul 24 Python
python操作excel的方法
Aug 16 Python
BP神经网络原理及Python实现代码
Dec 18 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
Python使用进程Process模块管理资源
Mar 05 Python
Python生成随机验证码代码实例解析
Jun 09 Python
python等待10秒执行下一命令的方法
Jul 19 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
Python实例教程之检索输出月份日历表
Dec 16 Python
Python爬虫基础之爬虫的分类知识总结
May 13 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
融入意大利的咖啡文化
2021/03/03 咖啡文化
操作Oracle的php类
2006/10/09 PHP
PHP4实际应用经验篇(7)
2006/10/09 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
jQuery 插件 将this下的div轮番显示
2009/04/09 Javascript
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
Nodejs学习笔记之Stream模块
2015/01/13 NodeJs
js创建对象的方法汇总
2016/01/07 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
javascript函数的四种调用模式
2017/01/08 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
JS+CSS实现3D切割轮播图
2020/03/21 Javascript
Python中DJANGO简单测试实例
2015/05/11 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
2015/06/30 Python
使用Python生成XML的方法实例
2017/03/21 Python
flask入门之表单的实现
2018/07/18 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
《画》教学反思
2014/04/14 职场文书
质量保证书范本
2014/04/29 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
大专生求职信
2014/06/29 职场文书
群众路线表态发言材料
2014/10/17 职场文书
个人创业事迹材料
2014/12/30 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
工作失职检讨书范文
2015/05/05 职场文书
小学生作文之《压岁钱的烦恼》
2019/09/27 职场文书
Redis基于Bitmap实现用户签到功能
2021/06/20 Redis