看板 C_Sharp 關於我們 聯絡資訊
各位前輩好,小弟寫了一個程式,但是有控制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
jamyang: 接受可以寫在event裡面喔03/13 16:29
你是說用data receive event trigger嗎?如果送訊息的當機了,就用timeout處理是嗎 ?@@
lightyen: 我是寫一個func裡面用while loop收資料 每次都Sleep一毫03/13 17:13
lightyen: 秒03/13 17:13
lightyen: 然後在根據收到的資料發出event03/13 17:14
如果對方被高電壓打昏了,送不出來怎麼辦,這個我再想想看 ※ 編輯: albert2942 (101.10.96.198), 03/13/2018 18:20:11
Litfal: 將com那邊的讀寫提至一個controller層,以便處理狀態與交 03/13 18:22
Litfal: 握,狀態複雜的話請善用狀態模式。UI層使用這個controller 03/13 18:23
Litfal: 而不直接控制com
03/13 18:24 感謝,我想一下架構如何修正後測試
jamyang: 發送命令後改變旗標,receive event檢查正確恢復旗標,03/13 19:52
jamyang: 然後做一個timer檢查旗標這樣呢 03/13 19:52 多執行緒這樣有風險
smmoon: 硬體的保護跟安全規劃應該從硬體上下手吧? 怎麼會靠人機?03/14 13:42
硬體也有保護都已經完全隔離設計,只是IC吃的是小電,才5V,當空氣或機板因為高電壓 的開啟或關閉產生電磁耦合過去的能量過大,MCU就會瞬間因為dv/dt造成瞬當,但是又不 足以啟動POR,導致狀態無法恢復,也因此需要時時確認,這顆MCU處的環境相當惡劣,105 度的環溫跟高電壓衝擊,人機是為了不同的東西測試,所以會打開看狀態跟資料庫建檔. 只是如果人機不知道它跟MCU失聯就會造成風險,因為板上也有高壓電容,當未放電完畢 都會對人體傷害,雖然我是可以直接將供給電源迅速關閉,卻無法將板子的開關打開放電 ,這也是一定要知道狀態,失聯就啟動重啟機制,因為重啓機制也是很複雜,所以要很注 意 ,現在這版本已經比創始設計好太多了,在高溫高壓下一定可以重啓成功,不會傷 害MCU ※ 編輯: albert2942 (101.10.96.198), 03/14/2018 16:10:15