中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么實現串口自動觸發工作

發布時間:2021-04-07 09:59:41 來源:億速云 閱讀:254 作者:小新 欄目:開發技術

小編給大家分享一下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怎么實現串口自動觸發工作”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阿勒泰市| 泸水县| 大化| 陕西省| 邳州市| 通城县| 关岭| 八宿县| 新宾| 遵义市| 乐业县| 水富县| 昂仁县| 常德市| 大安市| 方正县| 堆龙德庆县| 嘉善县| 油尖旺区| 镇雄县| 霍山县| 永昌县| 内乡县| 和顺县| 应城市| 五峰| 尼勒克县| 辽源市| 辉县市| 洪江市| 西乌| 怀柔区| 专栏| 福海县| 巍山| 靖西县| 炎陵县| 广水市| 浙江省| 当涂县| 康乐县|