我的應用程序需要通過串行通信與大約1MHz時鐘速度的嵌入式設備進行通信。在這個過程中,我們發現我們錯過了設備中的一些數據。c#.NET串行驅動程序性能
因此,我開始測試我使用的串行驅動程序的性能。該設備持續發送帶有計數器的原始數據,每個數據包的波特率爲115200比特/秒。當連接到超級終端並運行整晚時,我們發現它不會丟失任何數據。
但是,當我使用DataReceived處理程序和書面找到包是否丟失或不解析器的C#串口驅動程序,我們遇到的情況一樣
1)丟失的數據包 2)緩衝超限錯誤的。
我無法得出結論。我希望獲得關於可用數據的全部觀點。
它是一個延伸任何串行設備驅動程序邊界的測試嗎?或者.NET串行驅動程序寫入的方式不符合標記?
我實施的方式非常簡單。我剛剛使用了一個DataReceived處理程序,並將數據更新爲List,其中inturn由運行在具有最高優先級的不同線程中的解析器使用。在DataReceived hanlder中完成的功能只不過是將收到的數據添加到列表中。
由於提前
我以某種方式懷疑它是'波特率115200 Kbps',你可能意味着115200bps。 – leppie 2010-08-19 05:02:21
「解析器運行在具有最高優先級的不同線程中」 - 該線程可能會搶佔處理傳入串行數據的線程,具體取決於解析器線程如何處理從列表讀取以及如何同步線程 – Peter 2010-08-19 05:03:52