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 获取url中的参数列表实例
Dec 18 Python
Ubuntu+python将nii图像保存成png格式
Jul 18 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
Jul 22 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
详解使用django-mama-cas快速搭建CAS服务的实现
Oct 30 Python
如何基于python测量代码运行时间
Dec 25 Python
使用python turtle画高达
Jan 19 Python
python中sys模块是做什么用的
Aug 16 Python
python通过函数名调用函数的几种场景
Sep 23 Python
Selenium Webdriver元素定位的八种常用方式(小结)
Jan 13 Python
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
May 26 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 preg_replace替换实例讲解
2013/11/04 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
php创建多级目录与级联删除文件的方法示例
2019/09/12 PHP
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
Mootools 1.2教程 定时器和哈希简介
2009/09/15 Javascript
jQuery生成asp.net服务器控件的代码
2010/02/04 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
js实现收缩菜单效果实例代码
2013/10/30 Javascript
JQuery中属性过滤选择器用法实例分析
2015/05/18 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
微信小程序中为什么使用var that=this
2019/08/27 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
浅析Python中signal包的使用
2015/11/13 Python
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
玩转python爬虫之cookie使用方法
2016/02/17 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
Python IDLE清空窗口的实例
2018/06/25 Python
python生成九宫格图片
2018/11/19 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
Python中过滤字符串列表的方法
2020/12/22 Python
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
岗位竞聘演讲稿
2014/01/10 职场文书
社区消防工作实施方案
2014/03/21 职场文书
应届生求职自荐信范文
2014/04/07 职场文书
元旦寄语大全
2014/04/10 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
工作作风承诺书
2014/08/30 职场文书
欠款证明
2015/06/24 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书