[問題] event能夠取代timer嗎?

看板C_and_CPP (C/C++)作者 (read and be read)時間12年前 (2013/12/23 16:40), 編輯推噓7(7013)
留言20則, 6人參與, 最新討論串1/2 (看更多)
開發平台(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

12/23 19:41, , 1F
callback function?
12/23 19:41, 1F

12/23 19:42, , 2F
拍謝,沒看清楚,我講的可能不適合,當我沒推......囧
12/23 19:42, 2F

12/23 20:25, , 3F
interrupt?
12/23 20:25, 3F

12/23 21:14, , 4F
Serial port 有 OS interrupt, 不過值不值得用是另一回事
12/23 21:14, 4F

12/24 11:07, , 5F
原則上一定是有東西在檢查 即使是event也是
12/24 11:07, 5F

12/24 11:08, , 6F
只是做的東西是硬體/OS/程式自己 越左邊越有效率
12/24 11:08, 6F

12/24 11:09, , 7F
硬體跟OS之間還有一個FW
12/24 11:09, 7F

12/24 11:10, , 8F
OS 與程式之間還有一個DRIVER
12/24 11:10, 8F

12/24 11:10, , 9F
CPU(chip) / FW / OS / driver / application
12/24 11:10, 9F

12/24 11:18, , 10F
IRQ應該屬於硬體interrupt controller做掉
12/24 11:18, 10F

12/24 11:47, , 11F
uranusjr 大大說的那個你可以試試
12/24 11:47, 11F

12/24 11:49, , 12F
如果你能碰到FW 可以用FW來做 只是要與OS上層溝通
12/24 11:49, 12F

12/24 11:50, , 13F
可能得用ACPI的方式 最後application還是要想辦法去
12/24 11:50, 13F

12/24 11:50, , 14F
access .... 好像會繞一圈..
12/24 11:50, 14F

12/24 17:21, , 15F
最理想就是用硬體中斷 不過那個要硬體配合
12/24 17:21, 15F

12/24 21:53, , 16F
此題答案當然是可以.只是rs232就是傳入訊息,通常就是要顯
12/24 21:53, 16F

12/24 21:56, , 17F
示,polling一般不放棄前景,顯示可立即回應.event只是flag
12/24 21:56, 17F

12/24 21:59, , 18F
如同interrupt通知後設定事件,還是得去做對應後續處理.
12/24 21:59, 18F

12/24 22:04, , 19F
若直接在interrupt service routine 做後續處理就可能擋
12/24 22:04, 19F

12/24 22:07, , 20F
到其他中斷.用callback function掛載,則不影響中斷.
12/24 22:07, 20F
文章代碼(AID): #1Ij_Rsvv (C_and_CPP)
文章代碼(AID): #1Ij_Rsvv (C_and_CPP)