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检测一个对象是否为字符串类的方法
May 21 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
使用python 和 lint 删除项目无用资源的方法
Dec 20 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
python调用百度语音识别api
Aug 30 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
使用python将多个excel文件合并到同一个文件的方法
Jul 09 Python
Django框架创建项目的方法入门教程
Nov 04 Python
Python流程控制常用工具详解
Feb 24 Python
python ETL工具 pyetl
Jun 07 Python
深入理解pytorch库的dockerfile
Jun 10 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
PHP5中MVC结构学习
2006/10/09 PHP
php设计模式 FlyWeight (享元模式)
2011/06/26 PHP
php explode函数实例代码
2012/02/27 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
2016/09/11 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
js 对小数加法精度处理示例说明
2013/12/27 Javascript
两个select多选模式的选项相互移动(示例代码)
2014/01/11 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
Python 文件重命名工具代码
2009/07/26 Python
python中关于时间和日期函数的常用计算总结(time和datatime)
2013/03/08 Python
12步教你理解Python装饰器
2016/02/25 Python
python 读写、创建 文件的方法(必看)
2016/09/12 Python
python实现斐波那契数列的方法示例
2017/01/12 Python
Python语言描述最大连续子序列和
2017/12/05 Python
Python实现的FTP通信客户端与服务器端功能示例
2018/03/28 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
django drf框架中的user验证以及JWT拓展的介绍
2019/08/12 Python
pytorch标签转onehot形式实例
2020/01/02 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
奥巴马连任演讲稿
2014/05/15 职场文书
解决Swagger2返回map复杂结构不能解析的问题
2021/07/02 Java/Android