Serial config & VISA close的迷惑

小弟最近在研究Serial 的通訊,對一些設定概念有些迷思。懇請大大們為小弟離清。

 下圖示典型的串列通訊的步驟

小弟感到疑惑的是有關VISA資源的開啟與釋放

首先看到左邊藍色框框的部份,針對COM100設定它的BaudRate,Timeout等相關設定,想請問被設定的是這個COMPort還是通訊Session?

請問紫色的這條數據流包含了哪些東西呢?我使用Prob去觀察,發現似乎包含非常多的資訊。

在此用圖片右邊三格紅色框框舉例:

第一個VISA Close是延續資料流,Input是與原本產生的Visa Resoirce name同一個。

第二個是使用Visa Resoirce name的區域變數

第三個是建立另一個Visa Resoirce變數,COM number設定與原先那個COM100一樣,去Close。

想請問這三個的效果是否一樣呢?

還有一個問題是,雖然每次執行都使用VISA close了,但我發現下一次針對同一個COM Port使用時,他的通訊Session ID 還是一模一樣,這是正常現象嗎?Serial的特性?我以為Close釋放完資源以後,再次開啟應該會重新建立Session。

最後想再請教一個問題,如果使用VISA Open以後,資源不使用時,會間隔一定時間被釋放嗎?還是說會永遠被程式咬著呢?

如果我Open 100次 是否需要 Close100次才能完全釋放資源?

還請各位前輩幫忙解惑。

Lovesmartx40710.6595833333


    嗨嗨 大大您好唷

雖然小弟沒有使用過 lv 不過提供一點淺見您參考看看嚕

1.首先看到左邊藍色框框的部份,針對COM100設定它的BaudRate,Timeout等相關 設定,想請問被設定的是這個COMPort還是通訊Session?
我猜應該跟 Asp 一樣 Session 包好一個 Object 而這個 Object 
        本身 為 「 Public ComPort As New SerialPort 」 一個SerialPort物件
應該就是藍色滴部份全部都在裡面哩
2. 還有一個問題是,雖然每次執行都使用VISA close了,但我發現下一次針對同一  個COM Port使用時,他的通訊Session ID 還是一模一樣,這是正常現象嗎?Serial的特性?我以為Close釋放完資源以後,再次開啟應該會重新建立Session

     如果說阿, 一個Session包了一個SerialPort Object 則
SerialPort Object 他 Open / Close 應該都是一個Function 
            的命令 除非您去 Free 例如 令 Session(SerialPort) = nothing
             讓系統釋放他的記憶體,不然應該都還是存在 Memory裡面吧?
至於您提到的三種關閉的方式阿
正常來說 如果在 Thread 裡面,應該通常會用第一種方式
While (True)
            待系統關閉或者條件達到不需要對設備連結時,才關閉
而如果Comport已經開啟了,結果透過二三種方式
由外部關閉滴化 在程式內是需要作 Try catch 去作
錯誤判斷 阿 在 lv其實小弟不知道會發生什麼事情說 = =a 
  
            以上拙見 還請您參考 正確的回應 在待真正懂得大哥們回覆您阿

:D