python实现串口自动触发工作的示例
作者:victoryseven 发布时间:2023-11-06 22:19:09
标签: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信号置低时触发工作
来源:https://blog.csdn.net/ubuntu14/article/details/75335106


猜你喜欢
- 众所周知,Python 支持多种编程范式:过程式(使用基础的语句)、面向对象编程和函数式编程。Python 也提供了其他函数式编程语言的工具
- 本文实例为大家分享了tkinter+pygame+spider实现音乐播放器,供大家参考,具体内容如下1.确定页面SongSheet&nbs
- 本文实例讲述了Python封装shell命令的方法。分享给大家供大家参考。具体实现方法如下:# -*- coding: utf-8 -*-i
- 训练keras时遇到了一个问题,就是内存不足,将 .fit 改成 .fit_generator以后还是放不下一张图(我的图片是8192×81
- 前言大家都知道Web运维总要关注相关域名的实时2xx/s、4xx/s、5xx/s、响应时间、带宽等这些指标,之前的日志是五分钟一分割,简单的
- 问题:最新在爬取某站点的时候,发现在post请求当中,参数构造正确却获取不到数据,索性将post的参数urlencode之后放到post请求
- 使用open-cv实现简单的手势识别。刚刚接触python不久,看到了很多有意思的项目,尤其时关于计算机视觉的。网上搜到了一些关于手势处理的
- python作为一门动态语言,在使用变量之前是不需要进行定义,而是通过动态绑定的方法将变量绑定为某种类型。这样做为我们使用变量时提供了方便,
- 笔者小白在收集印刷体汉字的深度学习训练集的时候,一开始就遇到的了一个十分棘手的问题,就是如何获取神经网络的训练集数据。通过上网搜素,笔者没有
- requests是使用Apache2 licensed 许可证的HTTP库。用python编写。比urllib2模块更简洁。Request支
- 一、 只复制一个表结构,不复制数据 select top 0&
- 这篇文章主要介绍了python自动化unittest yaml使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- 一、简介 XML(eXtensible Markup Languag
- 目录一、MySQL数据备份1.1、 mysqldump命令备份数据1.2、 mysqldump常用操作示例1.3、 还原mysql备份内容二
- 先来看一下Spring官网首页的一个图片滑动显示效果可以看到, 随着鼠标的滑动,绿色图片和灰色图片可以无缝的在鼠标俩两边切换显示。显示这样的
- 看代码吧~name = input('Name') height = input('Height(m):')
- JavaScript substr 方法substr 方法用于根据开始位置和长度截取字符串并返回截取部分字符串。其语法如下:str_obje
- 本来非常喜欢偷懒最好就是不干活那种所以最近在研究把Jenkins模块集成起来做成傻瓜界面这样就给他们用本人Python搓望大神不要喷,多多指
- 准备篇:1、配置防火墙,开启80端口、3306端口vi /etc/sysconfig/iptables-A INPUT -m state -
- 可以查看: OPEN SYMMETRIC KEY 命令关于 对称密钥加密使用证书解密 CREATE MASTER KEY ENCRYPTIO