使用VISA送出韌體無法識別的指令就當機,之後再送出任何指令都無回應。錯誤碼(Timeout)

韌體架構是↓

CMD=1;
while(1)
{
  switch(CMD):
            {
             default:
             case 1:
                   程式碼;
                   break;
             case 2: 
                   程式碼;
                   break;
             case 3:
                   程式碼;
                   break;
             case 4:
                   程式碼;
                   break;
             }
}

Case 1就是閑置用的,所以進入while前,預設CMD = 1;

我在新版韌體寫了一個需要很常用的Case 5 ,需要去識別硬體上的某個按鈕狀況(防呆)。
可是卻遇到舊版的相容性問題,只要在舊版韌體收到Case 5的指令,就整個卡住。
之後不管軟體端送出什麼支援或不支援的指令,
只會在VISA Read的時候,收到錯誤碼-1073807339
Hex(0xBFFF0015)Timeout expired before operation completed.

請問各位有經驗的大大,假設舊版韌體完全不更動,遇到這種相容性問題有解嗎?

Timeout問題已經解決,似乎是讀取Buff的時候設定6bit, 可是因為韌體指令不支援而沒送任何資料,實際上BUFF只有0bit,所以在read的時候卡在那等Timeout。
但是還是存在韌体無法在接收任何的指令的問題。

另外想請問韌體這樣當機是因為收到的case不屬於while switch的其中一個,導致無法Break??

 

Lovesmartx40668.4281828704

你是用VISA Configure Serial Port來設定嗎?還是自己寫?

基本上VISA通訊的部份是這樣,一但送出硬體不認識的指令之後,之後就算再送出原本硬體認識的指令,VISA READ還是會出現錯誤碼.....
只差在Config元件的結束字元和流量控制的節點沒有接任何東西。

 

 

Lovesmartx40668.424525463