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 相关文章推荐
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
Python 文件操作的详解及实例
Sep 18 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
python监测当前联网状态并连接的实例
Dec 18 Python
Python使用selenium + headless chrome获取网页内容的方法示例
Oct 16 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
pytorch 求网络模型参数实例
Dec 30 Python
python机器学习库xgboost的使用
Jan 20 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 Python
利用python调用摄像头的实例分析
Jun 07 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
2011/11/10 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
PHP7常量数组用法分析
2016/09/26 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
jquery 获取json数据实现代码
2009/04/27 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
javascript实现2048游戏示例
2014/05/04 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
layui 弹出删除确认界面的实例
2019/09/06 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
[02:25]专访DOTA2负责人Erik 国际邀请赛暂不会离开西雅
2014/07/21 DOTA
python抓取网页图片并放到指定文件夹
2014/04/24 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
pow在python中的含义及用法
2019/07/11 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
美国知名艺术画网站:Art.com
2017/02/09 全球购物
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
应届大学生求职信
2013/12/01 职场文书
家长学校培训材料
2014/08/20 职场文书
先进工作者个人总结
2015/02/15 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
2016年寒假家长评语
2015/10/10 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
详解 TypeScript 枚举类型
2021/11/02 Javascript
PHP获取学生成绩的方法
2021/11/17 PHP
Golang解析JSON对象
2022/04/30 Golang