C 學習 專案實戰之串列埠通訊工具三

2021-10-01 23:33:23 字數 1051 閱讀 5481

寫在結尾

不學不知道,一學嚇一跳,乙個禮拜之前做完了這個串列埠通訊工具,感覺自己牛的不行,因為工作原因,一直沒做實況測試,所以一直沉浸在我是高手的感覺中。。。這兩天做了一些實況測試,我的媽,問題一大堆。。。

因為測試的失敗,我又花了乙個小時,找到serialport的官方文件並仔細的閱讀了一邊,其實大多數方法和屬性的概念還是很好理解的,唯獨關於緩衝區的知識點我是乙個都沒看懂,什麼接收緩衝區,輸入緩衝區,serialport緩衝區,總之就是各種各樣的緩衝區,然後根據串列埠通訊原理,我以為這些緩衝區都是有聯絡的,但是經過我的多方考證,上位機是訪問不到裝置的快取區的,最遠也只能訪問到pc串列埠驅動上的快取區,所以serialport類上的任何關於緩衝區的屬性和方法操作的都是上位機的緩衝區與下位無關。

我的上位機是接受下位機感測器的資料,然後製圖。但是在製圖後,觀察圖表會發現,圖示經常會出現缺失資料塊的現象,我首先想到的就是串列埠通訊的常見問題,丟包了唄。但是在用過很多專業的工具測試後發現,只有我的程式有這種現象。我表示不服,憑啥我寫的程式就不好使呢。因為是多執行緒處理的程式,所以資料儲存這一塊用的是佇列,因為佇列的訪問分別是對這個佇列的頭尾進行的,所以可以在一定程度上解決多執行緒對乙個物件同時操作而產生的死鎖問題。但是實時上傳資料的工具,上傳資料量很大,所以我就想是不是大量資料的流動導致了佇列的資料丟失。但是這個問題不容易檢測,我又不能對每進佇列的資料都做記錄吧,那我只能做對比測試,選擇乙個比佇列更好的集合來解決這個問題,這就是 concurrentqueue 高效的執行緒安全佇列。

using system.collections.concurrent;

private concurrentqueue]> dataqueue =

newconcurrentqueue

]>()

;

果然,不出我所料,就是因為佇列不安全的原因。當然我只是挑選了比較重要的問題來說,其實在實測的時候還遇到了很多問題。。。

真實要不斷的學習不斷的進步啊,乙個月以前,我對串列埠通訊的了解最多也就是,書裡面的乙個專業名詞,但是乙個月的專案經驗,真的幫助了我很多,所以這裡告訴大家乙個真理,學一樣東西,最好的方法就是不斷的使用和完善它。

C 學習 專案實戰之串列埠通訊工具一

寫在結尾 有段時間沒更新文章了,剛開始考事業編制複習,結果也沒考過,後來公司有乙個比較急的專案,花了大概乙個月左右的時間,想著忙完後更新,忙完後突發奇想想要去考研,就買了一些複習的書,複習了半個月才知道,報名時間早過了,要報名也要等到明年 月份了吧,所以開始慢慢恢復文章的更新 用 實現串列埠通訊其實...

zigbee學習之串列埠通訊

糾錯 u0dbuf傳送緩衝區,但是我在中文手冊手冊上沒有找的到這個暫存器,手冊上只有u0buf,u0buf編譯會出錯,我去查了下英文手冊,才發現原來是翻譯人員翻譯錯誤了,只有u0dbuf,建議看英文手冊。串列埠通訊 p 2 接收端 p 3傳送端 微控制器和電腦的電頻不同,通過pl2303轉換,這是針...

C 串列埠通訊學習筆記(7 17)

分布類 partial class 類的宣告可以分割成幾個分部類的宣告。每個分部類的宣告都含有一些類成員的宣告。類的分部類宣告可以在同一檔案中也可以在不同檔案中。每個區域性宣告必須被標為partial class,而不是單獨的關鍵字class,分部類宣告看起來和普通類宣告相同,除了那個附加型別修飾符...