最近做乙個專案需要用到串列埠實時傳送與接收,串列埠通訊採用同步的方式。
在開發本機上測試沒有任何問題後,放到測試機上執行,發現記憶體以 4 kb / s 的速度增長,再次將測試機上程式拷貝到開發機器上發現無記憶體增長。。
於是開始查詢原因,發現測試機上使用的是電腦原生的串列埠,開發機上使用的是usb轉串列埠,於是在開發機上用原生串列埠與usb轉串列埠分別測試。
結果發現 ,原生串列埠記憶體增長,usb轉串列埠沒有任何問題。
於是拿了三種不同機器測試,發現結果一樣(其中有一台機器的usb轉串列埠晶元不一樣也會記憶體增長)。正常的usb轉串列埠晶元為(pl2301和ftdi232),異常的為原生串列埠與ch340g。
於是抱著試一試的態度用qt第三方的串列埠類測試一下,鏈結為
測試**分別如下
class
qoriginserialport
:public
qthread
~qoriginserialport
()
protected:
void
run()
serial
.setbaudrate
(qserialport
::baud115200
);
serial
.setdatabits
(qserialport
::data8
);
serial
.setparity
(qserialport
::evenparity
);
serial
.setflowcontrol
(qserialport
::noflowcontrol
);
serial
.setstopbits
(qserialport
::onestop
);
qbytearray
data
;
establishprotocol(1
,data
);
forever
if(isinterruptionrequested
())
break
;
msleep(1);
}
serial
.clear
();
serial
.close
();
}
};
class
_3rpartyserialport
:public
qthread
~_3rpartyserialport
()
protected:
void
run()
serial
.setbaudrate(baud115200);
serial
.setdatabits(data_8);
serial
.setparity(par_even);
serial
.setflowcontrol(flow_off);
serial
.setstopbits(stop_1);
qbytearray
data
;
establishprotocol(1
,data
);
forever
;
serial
.readline(
data1,6
);
msleep(1
);
if(isinterruptionrequested
())
break
;
}
serial
.close();
}
};
發現第乙個記憶體會漲,第二個記憶體不會漲,於是懷疑是不是qt串列埠類有一些不知道的問題存在,知道原因或者碰到此類問題的朋友可以交流。
QT實現串列埠除錯功能 QSerialPort類
1 簡介 本博文主要是介紹如何使用qt的串列埠類 qserialport 來實現串列埠的開發,使用這個類來實現串列埠的基本功能,比如如何查詢本機可用串列埠 com 開啟串列埠 設定串列埠波特率 設定資料位 設定校驗位 停止位等視窗屬性。還實現了十六進製制收發顯示資料,經過測試,本工程 可以在win7...
關於qt5 arm移植心得
首先是關於qt5編譯前的配置問題。對於配置,可以根據配置的help進行設定,其中有乙個比較重要的配置就是sysroot,sysroot就是本次編譯所要應用到的檔案系統上,這裡邊包括大量的動態庫,如果配置不正確,很可能在實際執行過程中缺少一定的庫,導致qt應用無法正常執行,所以sysroot是非常重要...
Qt5 中關於訊號槽的改動
qt5發布對訊號 槽的新方法。保證了在編譯階段即可對訊號槽使用進行檢查,避免了到執行階段才發現問題的尷尬。現將舊 新的訊號槽用法進行回顧總結。qt4中最常用的訊號槽寫法 connect obj1,signal fun1 param1,param2,obj2,slot fun2 param1,編譯後 ...