您好,登錄后才能下訂單哦!
小編給大家分享一下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怎么實現串口自動觸發工作”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。