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基础-流程控制
Mar 18 Python
详解如何使用Python编写vim插件
Nov 28 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
Python generator生成器和yield表达式详解
Aug 08 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
用Python写一个自动木马程序
Sep 17 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
通过python扫描二维码/条形码并打印数据
Nov 14 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
使用python matploblib库绘制准确率,损失率折线图
Jun 16 Python
python利用opencv保存、播放视频
Nov 02 Python
Python torch.flatten()函数案例详解
Aug 30 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
解析yii数据库的增删查改
2013/06/20 PHP
Yii实现Command任务处理的方法详解
2016/07/14 PHP
详解使用php调用微信接口上传永久素材
2017/04/11 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
jQuery实现模拟flash头像裁切上传功能示例
2016/12/11 Javascript
Nodejs连接mysql并实现增、删、改、查操作的方法详解
2018/01/04 NodeJs
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
react-router 路由切换动画的实现示例
2018/12/03 Javascript
jQuery实现ajax的嵌套请求案例分析
2019/02/16 jQuery
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
[01:03]悬念揭晓 11月26日DOTA2完美盛典不见不散
2017/11/23 DOTA
Python XML RPC服务器端和客户端实例
2014/11/22 Python
简单学习Python time模块
2016/04/29 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
详解Django CAS 解决方案
2019/10/30 Python
财务经理岗位职责
2013/11/09 职场文书
11月红领巾广播稿
2014/01/17 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
涪陵白鹤梁导游词
2015/02/09 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
告知书格式
2015/07/01 职场文书
2015年国培研修感言
2015/08/01 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
CSS 实现多彩、智能的阴影效果
2021/05/12 HTML / CSS