通訊突然異常

各位前輩好,

使用232與MCU通訊時,每次傳輸到某個範圍的數值(2500~2600)之後

通訊接收暫存區就會異常,如下圖照片所示

像是某次通訊沒有抓取完畢的值,遺留到下次(紅色標記處)

必須等到數值超過2800之後才會正常。

請問有前輩知道問題嗎?

下圖是通訊程式碼

你試試把 VISA Configure Serial Port 放置迴圈 外
或者 把 VISA Close 放置迴圈 內.

您好,

我作了以下交叉測試:

  1. Serial Port放迴圈外,Close放迴圈外 => 完全無法通訊
  2. Serial Port放迴圈外,Close放迴圈內 => 完全無法通訊
  3. Serial Port放迴圈內,Close放迴圈內 => 完全無法通訊
  4. Serial Port放迴圈內,Close放迴圈外 => 原程式寫法

我無法理解你所謂的 完全無法通訊. 有異常訊息嗎?

你方便將程式碼上傳嗎?

FYI.

無異常訊息,

底下是程式碼,麻煩您了

Motor Current_1ms.vi (34.9 KB)

rs232 Read Buffer Status.vi (21.2 KB)

你可以先
看看運行時, 有沒有錯誤訊息.

或者觀察一下 Read Buffer Status
Number of Bytes at Serial Port 跟 Read Buffer
字串長度 Bytes 數 是否不符.

感謝您幫忙提供範例,

目前測試情況

  1. 運轉中無錯誤
  2. Read Buffer Status無顯示訊息
  3. 數值於某範圍時,Number of Bytes at Serial Port 跟 Read Buffer字串長度不符
    3-1.Number of Bytes at Serial Port是對的
    3-2.Read Buffer是錯的

麻煩你執行下列 Read Buffer Status 2 程式, 然後將結果畫面上傳貼圖.
Read Buffer Status 2.vi (27.3 KB)

麻煩前輩了!!

測試結果如下圖:

你觀察一下
都是在 迴圈 i = 29 時候停止嗎?

沒有固定在29時候停止,但是異常狀況都是一樣的,如下圖

說明一下我使用的用途&方式,

使用LabVIEW通訊讀取MCU內的ADC數值,數值範圍0~4096

當數值慢慢增大且範圍於2500-2600,回傳LabVIEW就會有現在問題 (少抓取Buffer資料)

可是當數值持續增加到2800以上,又可回復正常通訊

我大致上知道問題了.
因為終止字符 = A
DeBug Read Buffer.vi (42.1 KB)

1個讚

感謝前輩幫忙!!