多執行緒與底層等待問題
各位前輩好,小弟寫了一個程式,但是有控制4-5個RS232,因為有些視窗是需要反饋,因
此需要等待RS232的訊息,因為不知道什麼時候會回傳給電腦,所以都建立thread在後台
運作,但是問題來了,當我用comport.write送出訊息,我在thread那端持續監聽,看有
無回送,然後再將收下的訊息儲存後,判斷這個收到是正確或非正確,或是timeout,只是
這個用await task.delay好像也不是很精確的等待,如果用thread.sleep又會卡死程式,
更不用說while loop,因為後面程序要依照這個狀態進行動作,所以要很精確,一定要等
待到,但又不能讓畫面卡死,實在很苦惱。因為牽涉人身安全性的問題,所以一堆都是防
範機制,直流600V的電源切換與充電放電.不小心就燒機器了,先前沒做好,做實驗就燒
了幾十顆IGBT!
大家有什麼好建議嗎?
在底層的程序與上層的對應
因為特殊儀器,要假定板子會當機,儀表會損壞,若損壞則警報立即發出並中斷所有電源
與放電以避免人員傷害!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.10.96.198
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1520918363.A.394.html
推
03/13 16:29,
7年前
, 1F
03/13 16:29, 1F
你是說用data receive event trigger嗎?如果送訊息的當機了,就用timeout處理是嗎
?@@
推
03/13 17:13,
7年前
, 2F
03/13 17:13, 2F
→
03/13 17:13,
7年前
, 3F
03/13 17:13, 3F
→
03/13 17:14,
7年前
, 4F
03/13 17:14, 4F
如果對方被高電壓打昏了,送不出來怎麼辦,這個我再想想看
※ 編輯: albert2942 (101.10.96.198), 03/13/2018 18:20:11
推
03/13 18:22,
7年前
, 5F
03/13 18:22, 5F
→
03/13 18:23,
7年前
, 6F
03/13 18:23, 6F
→
, , 7F
03/13 18:24
感謝,我想一下架構如何修正後測試
推
03/13 19:52,
7年前
, 8F
03/13 19:52, 8F
→ jamyang: 然後做一個timer檢查旗標這樣呢
03/13 19:52
多執行緒這樣有風險
→
03/14 13:42,
7年前
, 9F
03/14 13:42, 9F
硬體也有保護都已經完全隔離設計,只是IC吃的是小電,才5V,當空氣或機板因為高電壓
的開啟或關閉產生電磁耦合過去的能量過大,MCU就會瞬間因為dv/dt造成瞬當,但是又不
足以啟動POR,導致狀態無法恢復,也因此需要時時確認,這顆MCU處的環境相當惡劣,105
度的環溫跟高電壓衝擊,人機是為了不同的東西測試,所以會打開看狀態跟資料庫建檔.
只是如果人機不知道它跟MCU失聯就會造成風險,因為板上也有高壓電容,當未放電完畢
都會對人體傷害,雖然我是可以直接將供給電源迅速關閉,卻無法將板子的開關打開放電
,這也是一定要知道狀態,失聯就啟動重啟機制,因為重啓機制也是很複雜,所以要很注
意 ,現在這版本已經比創始設計好太多了,在高溫高壓下一定可以重啓成功,不會傷
害MCU
※ 編輯: albert2942 (101.10.96.198), 03/14/2018 16:10:15
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章