介绍
小编给大家分享一下python怎么实现串口自动触发工作,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!
最近在一个python工具中需要实现串口自动触发工作的功能,之前只在winform上面实现,今天使用python试试。这里简单记一下:
<强>首先用wxpython实现一个按钮,点击事件绑定函数OnButtonAutoStopAll 强>
self.button_autoStopAll =, wx.Button (id=wxID_FRAME1BUTTONAUTOSTARTALL,,标签=u # 39; AUTO STOP 所有# 39;, ,,,,,,的名字=& # 39;button_autoStop& # 39;,,父母=self.staticBox_common, pos=wx.Point (8, 284), ,,,,,,大?wx.Size(180,, 80),风格=0) ,,,self.button_autoStopAll.SetFont (wx.Font (wx.SWISS, 24日,wx.NORMAL,, wx.BOLD,,假的, ,,,,,,你# 39;Agency fb # 39;)) ,,,self.button_autoStopAll.Bind (wx.EVT_BUTTON, self.OnButtonAutoStopAll, ,,,,,,id=wxID_FRAME1BUTTONAUTOSTARTALL)
<强>再有组合框控件实现点击下拉时自动加载当前串口名强>
, self.combox =, wx.ComboBox(自我,,1,,pos=wx.Point(10100),大?wx.Size(100年,50), ,,,,风格=wx.CB_READONLY), #串口combox ,self.combox.Bind (wx.EVT_COMBOBOX_DROPDOWN, self.evt_combox_dropdown)
<强>下拉菜单事件函数强>
def evt_combox_dropdown(自我,事件): ,,,print & # 39; combox % d 拉# 39;% self.sta_num ,,,serial_list =,列表(serial.tools.list_ports.comports ()) ,,,if serial_list:, #判断是否为空 ,,,,,portName_list =, [] #才能转换serial 处理为port 名字 ,,,,,for 小姐:拷贝范围(0,,len (serial_list)): ,,,,,,,portname =,列表(serial_list[我]) ,,,,,,,portName_list.append (str (portname [0])) ,,,,,print portName_list ,,,, ,,,self.combox.SetItems (portName_list)
然后进入正题,这里根据域信号来触发。
#串口自动触发检测线程 class 工作(threading.Thread): ,,… , def 才能运行(自我): ,,,while self.__running.isSet (): ,,,,,self.__flag.wait(),,,,,,, #,为真时立即返回,,为假时阻塞直到内部的标识位为真正的后返回 ,,,,,print “into job function" 我才能=0 ,,,,,isOpen =, serial_isOpen(我) ,,,,,if serial_list[我]!=1,以及isOpen: ,,,,,,,now_dsr =, serial_list[我].getDSR () ,,,,,,,if now_dsr !=, last_dsr[我]: ,,,,,,,,,last_dsr[我],=now_dsr ,,,,,,,,,print & # 39; dsr level changed 用% d # 39; % now_dsr ,,,,,,,,,if now_dsr ==,真的: ,,,,,,,,,,,if thread_list[我],!=,1: ,,,,,,,,,,,,,if ~ thread_list[我].is_alive (): ,,,,,,,,,,,,,,,serial_Open(0,,假) ,,,,,,,,,,,,,,,# do 一些东西 ,,,,,,,,,,,其他的: ,,,,,,,,,,,,,serial_Open(0,,假) ,,,,,,,,,,,,,# do 一些东西 ,,,,,,,休息 ,,,,,time . sleep (1) , ,,…
即每当域信号置低时触发工作
看完了这篇文章,相信你对“python怎么实现串口自动触发工作”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!