看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) borland C++ 最近在讀前輩寫的RS232程式。 發現從device讀取資料回來,是用timer在polling。雖然 程式裡面有幾個事件是去檢查rs232 port的狀態是否有改 變,進而決定是否要做讀取資料的動作。 但是檢查rs232 port的狀態是用timer去不斷的檢查。 想請教一個問題,能不能夠讓軟體被處於一個被動的狀態, 當port上狀態有改變時,進而使得程式進行某些動作。 而不是讓程式主動的去檢查port的狀態是否改變。 謝謝! -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.185.182 notBeing:轉錄至看板 Programming 12/23 16:40
mida:callback function? 12/23 19:41
mida:拍謝,沒看清楚,我講的可能不適合,當我沒推......囧 12/23 19:42
MetalChao:interrupt? 12/23 20:25
uranusjr:Serial port 有 OS interrupt, 不過值不值得用是另一回事 12/23 21:14
donkeychen:原則上一定是有東西在檢查 即使是event也是 12/24 11:07
donkeychen:只是做的東西是硬體/OS/程式自己 越左邊越有效率 12/24 11:08
donkeychen:硬體跟OS之間還有一個FW 12/24 11:09
donkeychen:OS 與程式之間還有一個DRIVER 12/24 11:10
donkeychen:CPU(chip) / FW / OS / driver / application 12/24 11:10
donkeychen:IRQ應該屬於硬體interrupt controller做掉 12/24 11:18
donkeychen:uranusjr 大大說的那個你可以試試 12/24 11:47
donkeychen:如果你能碰到FW 可以用FW來做 只是要與OS上層溝通 12/24 11:49
donkeychen:可能得用ACPI的方式 最後application還是要想辦法去 12/24 11:50
donkeychen:access .... 好像會繞一圈.. 12/24 11:50
wuliou:最理想就是用硬體中斷 不過那個要硬體配合 12/24 17:21
ggg12345:此題答案當然是可以.只是rs232就是傳入訊息,通常就是要顯 12/24 21:53
ggg12345:示,polling一般不放棄前景,顯示可立即回應.event只是flag 12/24 21:56
ggg12345:如同interrupt通知後設定事件,還是得去做對應後續處理. 12/24 21:59
ggg12345:若直接在interrupt service routine 做後續處理就可能擋 12/24 22:04
ggg12345:到其他中斷.用callback function掛載,則不影響中斷. 12/24 22:07