
我們正在測試具有與 PC 序列埠連接的較新 Wyse 用戶端(Z90D7 型號)。我們有一個外部客戶使用專用設備,但我們使用 PC 進行測試。我們透過 Citrix 在客戶端上執行 C# 應用程式。當我們運行在舊 Wyse 設備上使用的應用程式時,一切運行正常,沒有錯誤。然而,在新設備上,串行埠大約每 10 次嘗試才會工作一次。在所有其他情況下,它都會給出溢位錯誤、奇偶校驗錯誤或 RXOver 錯誤。
我已透過日誌記錄驗證連接埠確實打開,並且在打開後執行了多個命令。然而,隨機錯誤會發生在傳輸任何實際資料之前。 我在很多地方讀到這可能是緩衝區問題,但是我沒有看到任何帖子提到收到數據之前發生的錯誤,所以我不完全確定。
我還嘗試使用握手和更大的讀/寫緩衝區,但沒有成功。我嘗試了新電纜和該設備上的第二個 COM 端口,但也沒有成功。我們的預設是:
9600 波特率,偶校驗,8 個資料位,1 個停止位
鑑於這是在 Citrix 上運行,我們還必須執行此處顯示的 net use 命令在做任何事情之前。不這樣做將導致串行連接總是說已連接但未接收到任何資料(這種情況也會發生在舊設備上)。我們正在執行的確切命令(當然,應用程式名稱已更改)是:
net use com1 /DELETE
net use com2 /DELETE
net use com1: \\client\com1:
net use com2: \\client\com2:
start /d "D:\myapp" MyApplication.exe
有處理過串口的人聽過這三個錯誤像這樣交替出現嗎?除了故障的連接埠(或兩個故障的連接埠)之外,是否還有其他原因可能導致此問題?我認為硬體緩衝區大小可能是問題所在,但找不到任何方法來克服這個問題。
答案1
所有錯誤似乎都表明數據沒有移動,而且是雙向移動。
RXOver 清空接收緩衝區的速度不夠快。溢出是串列埠驅動程式沒有足夠快地清空晶片發送緩衝區。
我不確定是否存在增加硬體緩衝區大小的方法。 Windows 緩衝區可以透過 API 增加,但驅動程式可能會忽略它。
我建議嘗試更多設備以更好地了解問題,也許您的測試計算機存在一些相容性問題。
文章 5 種常見串口問題 列出了此類問題的一些可能原因:
通訊參數不正確
兩台設備需要設定相同的通訊參數,包括波特率、奇偶校驗、資料位數和停止位數。串行電纜不正確
- 串行電纜不良
- 接線錯誤