python实现串口自动触发工作的示例


Posted in Python onJuly 02, 2019

最近在一个python工具中需要实现串口自动触发工作的功能,之前只在winform上面实现,今天使用python试试。这里简单记一下:

首先用wxpython实现一个Button,点击事件绑定函数OnButtonAutoStopAll

self.button_autoStopAll = wx.Button(id=wxID_FRAME1BUTTONAUTOSTARTALL, label=u'AUTO STOP ALL',
       name='button_autoStop', parent=self.staticBox_common, pos=wx.Point(8, 284),
       size=wx.Size(180, 80), style=0)
    self.button_autoStopAll.SetFont(wx.Font(24, wx.SWISS, wx.NORMAL, wx.BOLD, False,
       u'Agency FB'))
    self.button_autoStopAll.Bind(wx.EVT_BUTTON, self.OnButtonAutoStopAll,
       id=wxID_FRAME1BUTTONAUTOSTARTALL)

再有ComboBox控件实现点击下拉时自动加载当前串口名

self.combox = wx.ComboBox(self, -1, pos=wx.Point(10,100), size=wx.Size(100,50), 
     style=wx.CB_READONLY) #串口combox
 self.combox.Bind(wx.EVT_COMBOBOX_DROPDOWN, self.evt_combox_dropdown)

下拉菜单事件函数

def evt_combox_dropdown(self, event):
    print 'combox%d dropdown'%self.sta_num
    serial_list = list(serial.tools.list_ports.comports())
    if serial_list: #判断是否为空
      portName_list = []
  #转换serial handle为port name
      for i in range(0, len(serial_list)):
        portname = list(serial_list[i])
        portName_list.append(str(portname[0]))
      print portName_list
    
    self.combox.SetItems(portName_list)

然后进入正题,这里根据DSR信号来触发。

#串口自动触发检测线程
class Job(threading.Thread):
  ...
 
  def run(self):
    while self.__running.isSet():
      self.__flag.wait()       # 为True时立即返回, 为False时阻塞直到内部的标识位为True后返回
      print "into job function"
	  i=0
      isOpen = serial_isOpen(i)
      if serial_list[i]!=1 and isOpen:
        now_dsr = serial_list[i].getDSR()
        if now_dsr != last_dsr[i]:
          last_dsr[i] = now_dsr
          print 'dsr level changed to %d'%now_dsr
          if now_dsr == True:
            if thread_list[i] != 1:
              if ~thread_list[i].is_alive():
                serial_Open(0, False)
                #do something
            else:
              serial_Open(0, False)
              #do something
        break
      time.sleep(1)
 
  ...

即每当DSR信号置低时触发工作

以上这篇python实现串口自动触发工作的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
将Python的Django框架与认证系统整合的方法
Jul 24 Python
python编码总结(编码类型、格式、转码)
Jul 01 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
Python实现PS滤镜碎片特效功能示例
Jan 24 Python
Python3使用SMTP发送带附件邮件
Jun 16 Python
基于python二叉树的构造和打印例子
Aug 09 Python
150行python代码实现贪吃蛇游戏
Apr 24 Python
使用python-cv2实现视频的分解与合成的示例代码
Oct 26 Python
PyChon中关于Jekins的详细安装(推荐)
Dec 28 Python
python字符串的多行输出的实例详解
Jun 08 Python
利用Python读取微信朋友圈的多种方法总结
Aug 23 Python
Python tensorflow卷积神经Inception V3网络结构
May 06 Python
python常用函数与用法示例
Jul 02 #Python
pandas DataFrame 行列索引及值的获取的方法
Jul 02 #Python
python for和else语句趣谈
Jul 02 #Python
python交互模式下输入换行/输入多行命令的方法
Jul 02 #Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 #Python
python格式化输出保留2位小数的实现方法
Jul 02 #Python
Python 获取ftp服务器文件时间的方法
Jul 02 #Python
You might like
PHP安全性漫谈
2012/06/28 PHP
PHP中unset,array_splice删除数组中元素的区别
2014/07/28 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
jquery 页眉单行信息滚动显示实现思路及代码
2014/06/26 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
使用JavaScript 编写简单计算器
2014/11/24 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
2015/09/20 Javascript
Javascript中replace()小结
2015/09/30 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
jQuery幻灯片插件owlcarousel参数说明中文文档
2018/02/27 jQuery
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
Python单体模式的几种常见实现方法详解
2017/07/28 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
python装饰器练习题及答案
2019/11/01 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
行政监察建议书
2014/05/19 职场文书
2014年学校工作总结
2014/11/20 职场文书
老人院义工活动感想
2015/08/07 职场文书
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
使用Redis实现实时排行榜功能
2021/07/02 Redis
canvas实现贪食蛇的实践
2022/02/15 Javascript