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画一颗心的方法示例
Jan 31 Python
python爬虫使用cookie登录详解
Dec 27 Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 Python
python使用openpyxl库修改excel表格数据方法
May 03 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
Django框架视图介绍与使用详解
Jul 18 Python
python+jinja2实现接口数据批量生成工具
Aug 28 Python
python getopt模块使用实例解析
Dec 18 Python
tensorflow模型继续训练 fineturn实例
Jan 21 Python
Python文件操作方法详解
Feb 09 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 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实现将Session写入数据库
2015/07/26 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
2017/06/07 PHP
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
零基础轻松学JavaScript闭包
2016/12/30 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
vue项目中极验验证的使用代码示例
2019/12/03 Javascript
Vue事件处理原理及过程详解
2020/03/11 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
2018/07/06 Python
使用python读取.text文件特定行的数据方法
2019/01/28 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
python 使用tkinter+you-get实现视频下载器
2020/11/17 Python
Python下载的11种姿势(小结)
2020/11/18 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
阿波罗盒子:Apollo Box
2017/08/14 全球购物
机械绘图员岗位职责
2013/11/19 职场文书
保荐人的岗位职责
2013/11/19 职场文书
酒店前台接待岗位职责
2013/12/03 职场文书
小学数学教学反思
2014/02/02 职场文书
我爱我家教学反思
2014/05/01 职场文书
销售提升方案
2014/06/07 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
金融专业求职信
2014/08/05 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python