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

 更新时间:2019年07月02日 11:39:38   作者:victoryseven  
今天小编就为大家分享一篇python实现串口自动触发工作的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

最近在一个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 Socket实现搭建HTTP协议

    使用Python Socket实现搭建HTTP协议

    网络编程中,了解底层的通信机制是极其重要的,本文将带领大家深入探索如何使用Python的socket库来实现一个简单的HTTP协议,感兴趣的可以了解下
    2024-02-02
  • python关于倒排列的知识点总结

    python关于倒排列的知识点总结

    在本篇文章里小编给大家分享的是一篇关于python关于倒排列的知识点总结,有需要的朋友们可以参考下。
    2020-10-10
  • 使用python把xmind转换成excel测试用例的实现代码

    使用python把xmind转换成excel测试用例的实现代码

    这篇文章主要介绍了使用python把xmind转换成excel测试用例的实现代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 解决python中import文件夹下面py文件报错问题

    解决python中import文件夹下面py文件报错问题

    这篇文章主要介绍了解决python中import文件夹下面py文件报错问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Pytorch 统计模型参数量的操作 param.numel()

    Pytorch 统计模型参数量的操作 param.numel()

    这篇文章主要介绍了Pytorch 统计模型参数量的操作 param.numel(),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python startswith()和endswith() 方法原理解析

    Python startswith()和endswith() 方法原理解析

    这篇文章主要介绍了Python startswith()和endswith() 方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • python QT界面关闭线程池的线程跟随退出完美解决方案

    python QT界面关闭线程池的线程跟随退出完美解决方案

    这篇文章主要介绍了python QT界面关闭,线程池的线程跟随退出解决思路方法,本文给大家分享两种方法结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • python中K-means算法基础知识点

    python中K-means算法基础知识点

    在本篇文章里小编给大家整理的是一篇关于python中K-means算法基础知识点内容,有兴趣的朋友们可以学习参考下。
    2021-01-01
  • python爬虫实战项目之爬取pixiv图片

    python爬虫实战项目之爬取pixiv图片

    最近决定写个P站的爬虫,实际操作起来确实遇到了些新问题,通过解决也有所收获,下面这篇文章主要给大家介绍了关于python爬虫实战项目之爬取pixiv图片的相关资料,需要的朋友可以参考下
    2022-07-07
  • Sanic框架请求与响应实例分析

    Sanic框架请求与响应实例分析

    这篇文章主要介绍了Sanic框架请求与响应,结合实例形式详细分析了Sanic框架请求与相应的相关参数、方法及使用技巧,需要的朋友可以参考下
    2018-07-07

最新评论