1、概述
有句話叫做,出來(lái)還混,早晚是要還得,當(dāng)時(shí)為快點(diǎn)使用完成can的qt上位機(jī),偶然在網(wǎng)上找到一個(gè)樣例,正好能運(yùn)行,就直接拿著那個(gè)樣例進(jìn)行改了,后來(lái)上位機(jī)遇到點(diǎn)精準(zhǔn)時(shí)間問(wèn)題,一時(shí)間不知道如何調(diào),正好也借著這個(gè)機(jī)會(huì),學(xué)習(xí)一下樣例代碼,純手打一遍。
2、實(shí)驗(yàn)環(huán)境
實(shí)驗(yàn)環(huán)境還是挺重要的,因?yàn)橛袝r(shí)候,在你電腦上能運(yùn)行的東西,在別人的電腦就不一定能運(yùn)行,這一部分的原因就可能是實(shí)驗(yàn)版本不一樣。
系統(tǒng)環(huán)境:window環(huán)境
QT軟件版本:qt 5.14.2
3、自我總結(jié)和提升
(1)通過(guò)學(xué)習(xí)他人代碼,理解他的大致思路,是通過(guò)調(diào)用外部寫好的庫(kù)。
(2)自己需要布局和寫相應(yīng)控件函數(shù)。
(3)使用了一個(gè)叫“標(biāo)準(zhǔn)數(shù)組(QStandardItem)”的模型,來(lái)承載收與發(fā)出的數(shù)據(jù)。
(4)因?yàn)橹皩W(xué)習(xí)了示波器,于是將示波器,換成自己之前學(xué)習(xí)那種。
4、事先聲明
(1)我學(xué)習(xí)的這份代碼,是通過(guò)那片文章作者留下的聯(lián)系方式,花錢買的,原本想弄成收費(fèi)的就完事了,結(jié)果等級(jí)不夠,那就設(shè)成VIP專享吧,覺(jué)得有價(jià)值,可以拿走,或者評(píng)論索取。
會(huì)提供那篇文章連接,如有需要自己向他尋求。
博客鏈接:https://blog.csdn.net/hs977986979/article/details/109652847
(2)我目前使用的can卡種類不是很多,就一種,是專門針對(duì)這個(gè)can卡,學(xué)習(xí)和寫的上位機(jī),所以軟件可能不支持其它類型can卡,我會(huì)發(fā)出我買這款can卡連接。
1、can卡購(gòu)買鏈接:某寶搜“創(chuàng)芯科技 CAN分析儀 CANOpen J1939 DeviceNet USBCAN USB轉(zhuǎn)CAN 高配版(紅色)”
2、can卡資料鏈接:can卡:>>https://download.csdn.net/download/qq_22146161/87439313
5、效果展示
這個(gè)系列最后效果圖展示。
(1)第一個(gè)界面:接收界面
(2)第二個(gè)界面:繪圖界面
本篇文章,最后效果界面
6、代碼編寫過(guò)程
(1)操作步驟部分
1、新建工程
新建空白工程,老操作步驟了,盡量快點(diǎn)說(shuō),選擇widget或者main
(1)點(diǎn)擊文件>>>新建文件或項(xiàng)目
(2)如下選
(3)一路下一步,這里如果不是很理解“QWidget”和“QMainWindow”,可以理解為都一樣的。
(4)運(yùn)行,如下圖,一個(gè)空白工程建立好了
2、加入外部庫(kù),并且加入qt工程中
(1)運(yùn)行的時(shí)候,就是使用如下三個(gè)文件,將文件放在建好的工程下,
(2)然后引用的時(shí)候,只要引用“ControlCAN.h”文件就可以了。
(3)添加”qcustomplot.cpp“和“qcustomplot.cpp”,這兩個(gè)事原先文件里繪圖的,這類因?yàn)楹笃谟米约旱?,看自己需求,也不是我們需要練?xí)的代碼,帶著也無(wú)所謂。
3、ui頁(yè)面布局
ui布局這塊對(duì)于初學(xué)者還是比較難的,很多方式優(yōu)化界面方式,這塊沒(méi)有什么好的辦法,只能多看其它人怎么做的,我自己就是這么過(guò)來(lái)的,然后去一點(diǎn)點(diǎn)自己嘗試,很多設(shè)置的細(xì)節(jié),才能達(dá)到某種效果,之前也做個(gè)一些特效的實(shí)現(xiàn)方式,這里非常建議去看看,當(dāng)然本篇作為第一篇基礎(chǔ)篇,修飾這類的事情,再完成軟功能后做。同時(shí),也會(huì)說(shuō)一些效果如何添加。
這里需要注意:布局可以不太相同,但是ID名字最好注意一下,在代碼里引用的時(shí)候,名字不一樣,可能會(huì)造成一定錯(cuò)誤。
4、代碼練習(xí)
這樣就進(jìn)入了代碼練習(xí)部分,基本是找不同環(huán)節(jié),那不一樣,就手動(dòng)敲一遍。
(1)pro文件
哪里不i一樣,就敲哪里。
(2).h文件
.h文件下,主要是包含引入文件,一些變量和自己定義的函數(shù)。
(3).cpp文件
.cpp文件里主要是自己使用函數(shù),編寫功能,具體實(shí)現(xiàn)。
5、運(yùn)行測(cè)試
代碼弄好后,其實(shí)有很多細(xì)節(jié)部分,這里可能因?yàn)榇a打錯(cuò),可能會(huì)遇到很多問(wèn)題,新手的話建議多練習(xí)吧。具體碰到的一些問(wèn)題,我也會(huì)在細(xì)節(jié)部分進(jìn)行說(shuō)明。
(2)代碼解析
如果你按照說(shuō)明一路敲寫了一遍,那么自己會(huì)認(rèn)為,會(huì)學(xué)到很多東西的,這里就是對(duì)自己學(xué)習(xí)的一些點(diǎn),進(jìn)行羅列。
1)標(biāo)準(zhǔn)QStandardItemModel
文檔鏈接:https://doc.qt.io/qt-5/qstandarditemmodel.html
其實(shí)光看這些說(shuō)明,其實(shí)不是很理解如何用的,可謂是道路看了許多,真正用起來(lái),還是不明白。
通過(guò)本次代碼樣例吧,先練習(xí)一下,反過(guò)來(lái)理解這個(gè),反而輕松明了許多。
第一步:聲明與初始化
第二步:一條數(shù)據(jù)格式編寫,如下圖。
第三步:進(jìn)行添加
2)外部庫(kù),can相關(guān)提供的函數(shù)。
如下圖,像這類函數(shù),都是來(lái)自“ControlCAN.h頭文件”,我們?cè)谙旅嬖O(shè)置好配置后,都是在調(diào)用這些函數(shù),讓函數(shù)來(lái)幫我們打開設(shè)備和關(guān)閉等功能。
其中帶的資料:can卡:>>https://download.csdn.net/download/qq_22146161/87439313
我們可以直接看看“ControlCAN.h頭文件”,如下圖,可以看到有一些定義,和函數(shù)方法。
有個(gè)文檔里專門說(shuō)這些函數(shù)的,我們練習(xí)完代碼可以加深對(duì)這些函數(shù)理解,我也是練習(xí)完了代碼,對(duì)這些函數(shù)理解更深一點(diǎn)。
3)自己寫的功能函數(shù)
如下圖,我認(rèn)為這點(diǎn)是參照的那位博主寫的好地方,很多小功能的代碼片段,來(lái)整理收到數(shù)據(jù),將其轉(zhuǎn)換成我們需要的樣子,因?yàn)閏an數(shù)據(jù)有小端模式的原因,數(shù)據(jù)是倒過(guò)來(lái),我們可以用這些函數(shù)重新拼接。
我們發(fā)什么數(shù)據(jù)也可以直接定成字符串,當(dāng)然可以自己寫相應(yīng)功能函數(shù)。
4)接收功能和解析功能函數(shù)
如下圖,是接收數(shù)據(jù)的函數(shù),這里將收到數(shù)據(jù),給到標(biāo)準(zhǔn)模型去(QStandardItemModel ),還有數(shù)據(jù)解析,這里主要是調(diào)用外部庫(kù)的收取函數(shù)。
在數(shù)據(jù)解析里,可以根據(jù)具體按鍵,做相應(yīng)解析,本篇先不講,先知道有這么個(gè)函數(shù)就行。
5)槽函數(shù)
跟界面上觸發(fā)相關(guān),有很多槽函數(shù),這些槽函數(shù),在點(diǎn)擊界面會(huì),會(huì)觸發(fā)功能。
7、代碼鏈接
這里還是需要說(shuō)明一下的,我學(xué)習(xí)的這份代碼,是通過(guò)那片文章作者留下的聯(lián)系方式,花錢買的,原本想弄成收費(fèi)的就完事了,結(jié)果等級(jí)不夠,那就設(shè)成VIP專享吧,覺(jué)得有價(jià)值,可以拿走,或者評(píng)論索取。
此代碼為第一階段,樣例dome代碼。
代碼鏈接:https://download.csdn.net/download/qq_22146161/87740755
目前已經(jīng)可以付費(fèi)了,大家有需要就自己下載吧,一個(gè)個(gè)發(fā)送郵件實(shí)在是太麻煩了。
代碼連接:https://download.csdn.net/download/qq_22146161/88301204
8、細(xì)節(jié)部分
(1)波特率的由來(lái)
最開始的是,不清楚為啥,波特率為啥是這個(gè)樣子的數(shù)組。
直到練習(xí)一遍代碼后,看了資料。
(2)放置再其它目錄下,在當(dāng)前目錄下運(yùn)行問(wèn)題。
在實(shí)際運(yùn)行過(guò)程中,一定啟動(dòng),發(fā)現(xiàn)運(yùn)行是最終的那個(gè),這里做如下勾選掉,這樣就是當(dāng)前目錄的了。
(3)報(bào)錯(cuò):如下“ui was not …”或者 “use of …”什么的。
解決:就是忘記加入"Widget::"MWaveViewInit()了。
(4)設(shè)置儲(chǔ)存位置大小為2500
在文檔中,有如下說(shuō)明
代碼中位置設(shè)置。
(5)一個(gè)錯(cuò)誤,顯示不知道外部庫(kù)函數(shù)。
解決方式:在.pro文件加入代碼段文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-428703.html
9、總結(jié)
想說(shuō)的話以下:
(1)學(xué)樣例的優(yōu)點(diǎn)是,很快,很容易學(xué)會(huì),但這是畢竟不是自主創(chuàng)造的,所以可能不會(huì)那么深入。
(2)自己摸索創(chuàng)造的優(yōu)點(diǎn)是,很深入每個(gè)細(xì)節(jié),自己提升更高,缺點(diǎn)是很慢,時(shí)常摸不到頭腦。
(3)本篇為第一篇,主要使用外部庫(kù)和can卡硬件,顯示can的qt軟件基本收發(fā)功能。加入示波器和其它,請(qǐng)看后續(xù)文章。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-428703.html
到了這里,關(guān)于【QT5:CAN卡通信的上位機(jī)-代碼練習(xí)-收發(fā)數(shù)據(jù)+布局+引用外部庫(kù)+基礎(chǔ)樣例(1)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!