python實(shí)現(xiàn)串口自動(dòng)觸發(fā)工作的示例
最近在一個(gè)python工具中需要實(shí)現(xiàn)串口自動(dòng)觸發(fā)工作的功能,之前只在winform上面實(shí)現(xiàn),今天使用python試試。這里簡(jiǎn)單記一下:
首先用wxpython實(shí)現(xiàn)一個(gè)Button,點(diǎn)擊事件綁定函數(shù)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控件實(shí)現(xiàn)點(diǎn)擊下拉時(shí)自動(dòng)加載當(dāng)前串口名
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)
下拉菜單事件函數(shù)
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 = []
#轉(zhuǎn)換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)
然后進(jìn)入正題,這里根據(jù)DSR信號(hào)來(lái)觸發(fā)。
#串口自動(dòng)觸發(fā)檢測(cè)線程
class Job(threading.Thread):
...
def run(self):
while self.__running.isSet():
self.__flag.wait() # 為T(mén)rue時(shí)立即返回, 為False時(shí)阻塞直到內(nèi)部的標(biāo)識(shí)位為T(mén)rue后返回
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)
...
即每當(dāng)DSR信號(hào)置低時(shí)觸發(fā)工作
以上這篇python實(shí)現(xiàn)串口自動(dòng)觸發(fā)工作的示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解如何使用Pytest進(jìn)行自動(dòng)化測(cè)試
這篇文章主要介紹了詳解如何使用Pytest進(jìn)行自動(dòng)化測(cè)試,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
python的類(lèi)變量和成員變量用法實(shí)例教程
這篇文章主要介紹了python的類(lèi)變量和成員變量用法,是學(xué)習(xí)Python程序設(shè)計(jì)所必須牢固掌握的,需要的朋友可以參考下2014-08-08
對(duì)django2.0 關(guān)聯(lián)表的必填on_delete參數(shù)的含義解析
今天小編就為大家分享一篇對(duì)django2.0 關(guān)聯(lián)表的必填on_delete參數(shù)的含義解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
使用python os模塊復(fù)制文件到指定文件夾的方法
今天小編就為大家分享一篇使用python os模塊復(fù)制文件到指定文件夾的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
通過(guò)PYTHON來(lái)實(shí)現(xiàn)圖像分割詳解
這篇文章主要介紹了通過(guò)PYTHON來(lái)實(shí)現(xiàn)圖像分割詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06
關(guān)于DataFrame取值操作總結(jié)(取指定列指定值的行)
這篇文章主要介紹了關(guān)于DataFrame取值操作總結(jié)(取指定列指定值的行),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
淺談python條件表達(dá)式:多項(xiàng)分支,雙向分支
這篇文章主要介紹了淺談python條件表達(dá)式:多項(xiàng)分支,雙向分支的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04
python動(dòng)態(tài)加載技術(shù)解析
這篇文章主要介紹了python動(dòng)態(tài)加載技術(shù)解析,說(shuō)簡(jiǎn)單點(diǎn)就是,如果開(kāi)發(fā)者發(fā)現(xiàn)自己的代碼有bug,那么他可以在不關(guān)閉原來(lái)代碼的基礎(chǔ)之上,動(dòng)態(tài)替換模塊替換方法一般用reload來(lái)完成,需要的朋友可以參考下2023-07-07

