2017-05-21 379 views
0

我需要能夠通過命令提示符(Windows 7操作系統)關閉COM端口。原因是我使用了很多實驗設備,並使用稱爲LabVIEW的語言進行控制,並且與這些設備的通信有時會丟失。現在唯一的解決方法是在設備管理器中重命名COM,或重啓。理想情況下,我想關閉命令提示符下的端口,我可以在我的控制軟件中以編程方式實現該端口。用命令提示符關閉COM端口

有誰知道;如何在命令提示符下關閉COM端口,或者關閉COM端口的快捷方式,那麼我可以重新建立與設備的連接?

乾杯!

+0

從我的經驗的LabVIEW葉COM端口打開(打開一次),只要的applcation運行。您是否嘗試過使用任務管理器來清除所有LabVIEW應用程序? –

+0

不,您可以使用適當的關閉VISA會話命令關閉端口。但問題通常是在程序運行時間結束時放置它,所以如果你的設備出現故障,那麼程序當然永遠不會到達最終階段的事件。 – QuantumPenguin

回答

0

我不認爲你可以簡單地關閉另一個程序正在使用的資源,這無疑會導致錯誤。正確編程LabVIEW不應該讓端口處於打開狀態,即使端口處於打開狀態,只需關閉labview就足夠了。

在LabVIEW中以編程方式打開和關閉COM端口,不要依賴於VISA系統的自動關閉。同時爲串行連接添加超時,比你應該得到一個連接錯誤超時並能夠清理資源。

基本上你需要在原點解決你的問題,如果需要幫助發佈你的LabVIEW代碼。

假設您在while循環中從串行端口讀取數據,只要在發現錯誤時停止while循環,請參閱代碼片段。這會停止循環,並且不管錯誤如何,資源都將在循環外部關閉。

enter image description here

+0

當設備正常工作時,沒有問題,當程序關閉並再次重新啓動時,所有設備都可以與控制PC進行通信,而不會出現任何問題。問題是如果一個設備出現故障並需要重新啓動,那麼COM就會被打開。當程序正常結束時,每個設備都有相應的關閉VISA會話。問題是,當一個設備發生故障時,程序顯然永遠不能發送這個命令。 – QuantumPenguin

+0

這就是超時進入的地方。如果你添加一個超時,你可以在設備發生故障時捕獲超時,並且從這樣一個錯誤中正常恢復,那麼串行通信的超時時間現在設置爲無窮大(或LV爲-1) 。 –

+0

@ D.J. Klomp謝謝你的建議,我會試試看看會發生什麼。 – QuantumPenguin