Qt QSerialPort ReadAll() 報錯 串口讀取錯誤,非法內存,及小項目開發感悟

      網友投稿 1447 2025-04-01

      1 小背景


      從串口讀數據,本來是很簡單的問題,但是這次串口的數據量有點大,而我的上位機也有PC變成了ARM的嵌入式系統,性能相對PC有所下降。以前寫去讀串口,都是在PC下的程序,也一直用的都是readAll函數,沒有啥大問題。這次出現了問題,在第一版本中,出現了丟包嚴重,好多數據丟失,開始一度懷疑都是單片機出數的問題,所以優先解決單片機問題,解決方法很簡單,把現有程序改成PC版,在PC上通過串口連接到單片機的串口上,發現單片機確實存在出數據量不夠的因素。隨后將單片機波特率調至高波特率。在PC上驗證數據可以。

      2 串口readAll讀取數據問題

      移植到ARM嵌入式系統上面,畫面依舊卡頓,無解,隨打印Log查看發現,每次readAll的數據長度都不一樣,而我的解析函數都是默認解析第一幀,和面的數據等于全部丟失,導致畫面卡頓;這里要說一下,以前以我淺陋的認識認為中斷的方式就是一幀一幀的來接受,但是這幾天學習才發現我以前的認識是錯誤的,中斷只是在接收到有數據的時候就會觸發了,所以這里在使用串口的時候,最后可以加上結束符,這樣也好判斷包的完整性。

      3 線程問題

      其實包的完整性不是我第一個考慮的問題,我第一個考慮的問題是ARM開發板的處理性能問題,打開資源管理器查看,發現有一個核心CPU占用率95左右,有時直接100了。所以第一想到的可能是應為CPU性能有限,而我在界面上有大量的繪制工作,導致數據處理不及時或者畫面渲染卡頓造成,所以開了線程。一開線程,那就發現我以前的認知又錯了。一直以為只要寫在線程類里面的東西,都會去線程里面,后面通過打印線程ID發現根部不是一回事,線程ID和主線程ID一樣,一度懷疑開了一個假線程,后面學習才發現,只有在run函數里面的才會去到線程里面。這里又一個知識點。開了線程還是沒有解決我的問題。畫面依舊卡頓??紤]可能是中斷的問題,所以轉換思路,換直接讀取,直接在run函數里面while(1)讀取串口數據,還是無解,畫面依舊卡頓,這才回到上面“2”中的內容,打印串口readAll數據發現每次接收的數據量都不是一樣的。找到方法就很簡單了,在我的數據解析函數里面加入拆包處理就可以了。完美決絕問題。

      4 線程遇到內存錯誤問題

      線程其實就是一個最大的坑,這里當我竊喜的時候,程序運行無緣無故崩潰 Debug發現都是內存錯誤,傳說中的問題終于讓我遇到,但是呢,沒有解決,怎么改也不行,都是內存先關的問題,嘗試過吧串口對象設置靜態、全局、指針、實體。均失敗,都會有程序崩潰線程,最后還是把串口數據讀取移動到主進程中,才解決。

      5 小總結

      繞了一圈最后發現還是出現在讀取數據理解的問題上,還是自己的開發經驗不足呀。不過還是解決了這個問題了,老板看到新的畫面絲滑搬流暢,很開心,哈哈哈哈。

      6 題外話

      Qt QSerialPort ReadAll() 報錯 串口讀取錯誤,非法內存,及小項目開發感悟

      這次開發有個插曲,在第一版中,客戶給的文件中圖形畫面模糊,而且是黑白的,畫面描述很多地方都不具體,導致做出來的東西都是摸索出來的,很不滿意,加上客戶還讓出六份文檔,導致我個人直接崩潰,完全沒有得到客戶的認可,文檔也不是客戶想要的,這里是因為客戶的問題“上位機”軟件,我沒有理解到客戶的點,導致文檔全部作廢。直接爆發,和老板干了一架。估計這也沒誰了,還是太年輕,自己也沒有擺好自己的位置,我們做開發的,不就是解決客戶的問題嗎,客戶要是知道自己要啥,那還找我們做啥了,希望在后面的職業生涯中,自己可以穩重點,不要還和一個剛畢業的大學生的一樣。逼近也不小了,總不能天天讓被人哄著。

      Qt 單片機 嵌入式

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:wps表格怎么求和如何快速自動求和(怎樣將wps表格自動求和)
      下一篇:GaussDB(DWS)《通過JDBC,實現遠程COPY導入數據到DWS》
      相關文章
      在线免费观看亚洲| 激情亚洲一区国产精品| 亚洲经典在线观看| 亚洲AV午夜成人影院老师机影院| 亚洲色一色噜一噜噜噜| mm1313亚洲国产精品美女| 日韩国产欧美亚洲v片 | 亚洲乱码国产乱码精品精| 亚洲综合精品网站| 久久亚洲2019中文字幕| 国产午夜亚洲精品理论片不卡| 亚洲精品无码永久在线观看 | 国产成人精品亚洲一区| 色偷偷亚洲男人天堂| 国产午夜亚洲精品不卡免下载| 亚洲中文字幕无码久久| 亚洲综合色婷婷在线观看| 国内精品久久久久影院亚洲 | 亚洲中文字幕无码中文| 亚洲国产精品精华液| 久久久久久亚洲av无码蜜芽| 最新亚洲人成无码网站| 国产亚洲精品2021自在线| 国产成人精品曰本亚洲79ren| 国产亚洲美日韩AV中文字幕无码成人 | 久久精品国产亚洲AV大全| 1区1区3区4区产品亚洲| 亚洲国产精品专区| 亚洲一卡2卡3卡4卡国产网站| 亚洲狠狠成人综合网| 亚洲精品GV天堂无码男同| 小说专区亚洲春色校园| 久久精品亚洲乱码伦伦中文| 亚洲男人的天堂www| 亚洲天天在线日亚洲洲精| 亚洲免费黄色网址| 亚洲Av永久无码精品黑人| 亚洲国产精品专区在线观看| 亚洲人成人网站色www| 久久亚洲精品成人av无码网站| 亚洲乱码卡一卡二卡三|