兩個定時器實現串列埠熱插拔思路介紹

2021-09-29 23:39:46 字數 1605 閱讀 6342

1.開啟軟體的同時開啟定時器timer1,

timer1主要做搜尋串列埠,如果沒搜尋到,就提示「未搜尋到串列埠」,如果搜到了,就開啟串列埠,這裡可能會連線多個裝置,如果要開啟指定的裝置,就需要遍歷串口號去傳送乙個資料,同時裝置要有乙個返回值才行,這樣就可以開啟指定的串列埠了,開啟串列埠之後開啟定時器timer2

def detect_serial(self):

port_list =

exist_flag = false

com_list =

com_list.clear()

port_list.clear()

com_list = list(serial.tools.list_ports.comports())

if len(com_list) == 0:

exist_flag = false

else:

exist_flag = true

for item in com_list:

com = item.device

if exist_flag == true:

for port in port_list:

self.m_th.m_ser.port = port

if self.m_th.m_ser.is_open == true:

self.m_th.m_ser.write(b'\x00') #與微控制器串列埠連線

else:

self.m_th.m_ser.open()

self.m_th.m_ser.write(b'\x00')

time.sleep(0.1)

rdata = self.m_th.m_ser.read_all()

print(rdata)

if rdata == b'\x00':

print(rdata)

self.serial_timer.stop()

if self.judge_serial_timer.isactive() == false:

self.judge_serial_timer.start()

qtwidgets.qmessagebox.information(self,'提示', '串列埠已連線!')

return

else:

qtwidgets.qmessagebox.information(self, '提示', '未找到串列埠!')

2.定時器搜尋到串列埠開啟之後開啟定時器timer2並關閉定時器timer1

定時器timer2主要是搜尋串列埠,如果搜到則什麼都不執行,如果搜尋到串列埠數量為0,則開啟定時器timer1並關閉定時器timer2

def judge_serial(self):

com_list = list(serial.tools.list_ports.comports())

if len(com_list) > 0:

pass

else:

self.judge_serial_timer.stop()

self.serial_timer.start()

好像只能處理連乙個串列埠時的情況,現在先寫這麼多,以後有更好的方法再更吧

兩個C 毫秒級定時器

test time.cpp 定義控制台應用程式的入口點。include stdafx.h include timer.h include timecounter.h define n 10000 define test pro for int i 0 i n i printf loop ok.n n...

Android實現定時器的兩種方法

android實現定時器的兩種方法。1 採用handler與執行緒sleep的方法。2 與採用handlertimertask的方法。現附上 通過三種方法實現每秒鐘更新一次時間的操作 首先新建handler,進行處理相應動作 private final handler mhandler new ha...

Linux使用乙個定時器實現設定任意數量定時器功能

為什麼需要這個功能,因為大多數計算機軟體時鐘系統通常只能有乙個時鐘觸發一次中斷。當執行多個任務時,我們會想要多個定時器 的時鐘跟蹤併發這樣可以生成正確的時間重疊,作業系統這樣做。本例子是為了實現使用linux下的乙個定時器,實現任一數量的定時器功能。首先我們需要一些資料型別用來描述時鐘資料結構 in...