重複進入測試主介面出現“已關閉Safe handle”的錯誤

一個整機測試程式,在測試主介面開啟多個串列埠讀儀表資料,但是退出主介面重新進去,會出現電源通訊錯誤,而且比較高頻的出現“已關閉Safe handle”的錯誤。

網上查詢這個錯誤的原因是是在關閉串列埠前就關閉了執行緒,這樣就會出現這樣的錯誤。

看到其他儀器串列埠沒有錯誤,只有電源才會通訊錯誤,查詢程式碼發現,進入主介面時查詢是否有光柵異常,急停等錯誤,有錯誤的時候就是與電源通訊,關閉輸出。 所以退出介面時,電源的串列埠還是開啟狀態,沒有關閉。 這樣重新進入介面,電源埠就會已經被佔用了。

if (!GlobalVariable。AfxPLC。IsGratingSafe(nFix)) { unNormalStop = true; btn。OnColor = Color。Red; btn。OnText = “安全光柵”; } else { if (btn。OnText == “安全光柵”) { btn。OnColor = Color。Yellow; btn。OnText = “就緒。。。”; } } if (GlobalVariable。AfxPLC。IsReset(nFix)) { //復位 btn。OnColor = Color。Yellow; btn。OnText = “就緒。。。”; GlobalVariable。AfxPower[nFix - 1]。CloseAlarm(); } if (unNormalStop) { GlobalVariable。AfxPower[nFix - 1]。StopPower(nFix); }

解決方法:

每次與電源通訊完之後關閉串列埠.