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 list转dict示例分享
Jan 28 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
Python注释详解
Jun 01 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
python定时利用QQ邮件发送天气预报的实例
Nov 17 Python
django最快程序开发流程详解
Jul 19 Python
解决django同步数据库的时候app models表没有成功创建的问题
Aug 09 Python
python中open函数的基本用法示例
Sep 07 Python
python3实现单目标粒子群算法
Nov 14 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
Feb 26 Python
Python 使用双重循环打印图形菱形操作
Aug 09 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 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制作新闻系统的思路
2006/10/09 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
简单理解PHP的面向对象编程方式
2016/05/17 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
jquery与js函数冲突的两种解决方法
2013/09/09 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
Javascript模拟实现new原理解析
2020/03/03 Javascript
Python urlopen 使用小示例
2008/09/06 Python
Python实现简单HTML表格解析的方法
2015/06/15 Python
AI人工智能 Python实现人机对话
2017/11/13 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
python线性插值解析
2020/07/05 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
纯CSS3打造属于自己的“小黄人”
2016/03/14 HTML / CSS
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
行政人员岗位职责
2013/12/08 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
初中作文评语集锦
2014/12/25 职场文书
行政复议决定书
2015/06/24 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
MySQL 数据类型选择原则
2021/05/27 MySQL