這個(gè)為什么叫串口設(shè)備調(diào)試工具而不是串口調(diào)試工具,是因?yàn)檫@個(gè)工具比網(wǎng)絡(luò)上的串口調(diào)試工具多出了一些真實(shí)需要的用來(lái)調(diào)試設(shè)備的功能,首先一點(diǎn)就是大部分的串口調(diào)試工具收到數(shù)據(jù)都是立即返回,這樣的數(shù)據(jù)都是連著的,頭一條數(shù)據(jù)和后一條數(shù)據(jù)頭尾相連,對(duì)于調(diào)試著來(lái)說(shuō)要看數(shù)據(jù)非常麻煩,而且在不斷有數(shù)據(jù)過(guò)來(lái)時(shí),要停下來(lái)看數(shù)據(jù)除非關(guān)閉串口,而不能在打開(kāi)串口的時(shí)候看數(shù)據(jù),因?yàn)椴粩嘤袛?shù)據(jù)過(guò)來(lái)沖掉前面的數(shù)據(jù)顯示,甚至有些還不能最大化等等情況,這個(gè)工具是根據(jù)將近四年的與硬件通信這塊開(kāi)發(fā)工具的切身實(shí)際需求量身定做的,還能模擬設(shè)備立即回復(fù)數(shù)據(jù)。之前很多QT開(kāi)發(fā)的版本源碼分成兩套,一套在windows下編譯,一套在linux下編譯,甚至麻煩,雖然QT5.1之后的版本自帶了串口通信類(lèi),本人測(cè)試過(guò),貌似還有小問(wèn)題,在快速收發(fā)數(shù)據(jù)時(shí)容易卡住,這次帶來(lái)的源碼不用做任何改動(dòng)即可在多個(gè)平臺(tái)編譯。
項(xiàng)目名稱(chēng):串口設(shè)備調(diào)試工具
開(kāi)發(fā)環(huán)境:WIN7+QT4.7+QT CREATOR2.8+MINGW
已編譯通過(guò)測(cè)試平臺(tái):XP、Win7、ubuntu、tiny210
技術(shù)實(shí)現(xiàn):通過(guò)第三方串口通信類(lèi),解析協(xié)議并作出處理
1:支持16進(jìn)制數(shù)據(jù)發(fā)送與接收。
2:支持windows下COM9以上的串口通信。
3:自動(dòng)加載對(duì)應(yīng)操作系統(tǒng)串口號(hào)。
4:實(shí)時(shí)顯示收發(fā)數(shù)據(jù)字節(jié)大小以及串口狀態(tài)。
1:可自由管理需要發(fā)送的數(shù)據(jù),每次只要從下拉框中選擇數(shù)據(jù)即可,無(wú)需重新輸入數(shù)據(jù)。
2:可模擬設(shè)備回復(fù)數(shù)據(jù),需要在主界面開(kāi)啟模擬設(shè)備回復(fù)數(shù)據(jù)。當(dāng)接收到設(shè)置好的指令時(shí),立即回復(fù)設(shè)置的回復(fù)指令。例如指定收到0x16 0x00 0xFF 0x01需要回復(fù)0x16 0x00 0xFE 0x01,則只需要在SendData.txt中添加一條數(shù)據(jù)16 00 FF 01:16 00 FE 01即可。
3:可定時(shí)發(fā)送數(shù)據(jù)和保存數(shù)據(jù)到文本文件:,默認(rèn)間隔5秒鐘,可更改間隔時(shí)間。
4:在不斷接收到大量數(shù)據(jù)時(shí),可以暫停顯示數(shù)據(jù)來(lái)查看具體數(shù)據(jù),后臺(tái)依然接收數(shù)據(jù)但不處理,無(wú)需關(guān)閉串口來(lái)查看已接收到的數(shù)據(jù)。
5:每次收到的數(shù)據(jù)都是完整的一條數(shù)據(jù),而不是脫節(jié)的,做了延時(shí)處理。
6:一套源碼隨處編譯,無(wú)需更改串口通信類(lèi),已在XP/WIN7/UBUNTU/ARMLINUX系統(tǒng)下成功編譯并運(yùn)行。
第一步:布局好界面,控件命名好,建議用pascal命名法。
第二步:準(zhǔn)備unix和windows串口通信第三方類(lèi)qextserialport.h、qextserialport.cpp、qextserialport_global.h、qextserialport_p.h、qextserialport_unix.cpp、qextserialport_win.cpp。
第三步:初始化主界面,自動(dòng)加載對(duì)應(yīng)串口號(hào)波特率等信息。
第四步:采用定時(shí)器讀取串口數(shù)據(jù),其實(shí)也可以采用事件機(jī)制,在幾大平臺(tái)也測(cè)試通過(guò)事件來(lái)收數(shù)據(jù)也可以,但是在windows下在快速收發(fā)大量數(shù)據(jù)時(shí)候居然會(huì)卡住,同樣的代碼在linux表現(xiàn)很好,不明原因,后面采用定時(shí)器讀取機(jī)制,問(wèn)題就沒(méi)有了。
在嵌入式開(kāi)發(fā)、數(shù)據(jù)通信等場(chǎng)景中,串口通信扮演著至關(guān)重要的角色。今天,我們將為大家揭秘一個(gè)功能強(qiáng)大的串口通信工具——LLCOM,讓你的串口通信如虎添翼!
LLCOM是一款功能強(qiáng)大的串口通信工具。它支持多種串口通信協(xié)議,如RS-232、RS-485等,支持多種波特率、數(shù)據(jù)位、停止位和校驗(yàn)位等設(shè)置。此外,LLCOM還提供了豐富的數(shù)據(jù)分析和處理功能,幫助你輕松地解析和調(diào)試串口數(shù)據(jù)。并且支持Lua自動(dòng)化處理、串口調(diào)試、串口監(jiān)聽(tīng)、串口曲線、TCP測(cè)試、MQTT測(cè)試、編碼轉(zhuǎn)換、亂碼恢復(fù)等功能。
圖形化界面:LLCOM提供了直觀的圖形化用戶(hù)界面,使得用戶(hù)可以輕松地配置串口參數(shù)、發(fā)送和接收數(shù)據(jù)。
Lua腳本支持:LLCOM支持Lua腳本語(yǔ)言,用戶(hù)可以通過(guò)編寫(xiě)Lua腳本來(lái)實(shí)現(xiàn)自動(dòng)化處理,提高工作效率。
多線程安全:LLCOM采用了多線程技術(shù),保證了數(shù)據(jù)通信的穩(wěn)定性和安全性。
功能豐富:LLCOM支持各種串口通信協(xié)議,無(wú)論是RS232還是RS485,它都能輕松應(yīng)對(duì)。
開(kāi)源精神:LLCOM是完全開(kāi)源的,這意味著你可以根據(jù)自己的需求進(jìn)行定制開(kāi)發(fā)。無(wú)論是增加新功能,還是優(yōu)化現(xiàn)有功能,LLCOM都為你提供了無(wú)限可能。
LLCOM的Lua腳本功能是其核心優(yōu)勢(shì)之一。Lua是一種輕量級(jí)、高效且易于嵌入的腳本語(yǔ)言,非常適合用于自動(dòng)化處理。通過(guò)Lua腳本,你可以實(shí)現(xiàn)以下功能:
自定義數(shù)據(jù)格式:你可以根據(jù)實(shí)際需求定義數(shù)據(jù)包的格式,并自動(dòng)解析和生成符合該格式的數(shù)據(jù)包。
定時(shí)發(fā)送數(shù)據(jù):利用Lua的定時(shí)器功能,你可以設(shè)置定時(shí)發(fā)送數(shù)據(jù),實(shí)現(xiàn)周期性數(shù)據(jù)的采集或發(fā)送。
事件觸發(fā):當(dāng)接收到特定數(shù)據(jù)時(shí),Lua腳本可以自動(dòng)執(zhí)行相應(yīng)的操作,如記錄日志、觸發(fā)其他串口通信等。
多線程處理:Lua支持協(xié)程,可以實(shí)現(xiàn)多線程處理,提高數(shù)據(jù)處理能力
安裝與配置:下載并安裝LLCOM軟件,根據(jù)實(shí)際需求配置串口參數(shù),如波特率、數(shù)據(jù)位、停止位等。
數(shù)據(jù)捕獲與監(jiān)控:?jiǎn)?dòng)LLCOM,即可實(shí)時(shí)捕獲串口數(shù)據(jù)并進(jìn)行監(jiān)控。你可以通過(guò)圖形界面或腳本編程對(duì)數(shù)據(jù)進(jìn)行處理和分析。
故障排查與調(diào)試:利用LLCOM的數(shù)據(jù)分析功能,快速定位問(wèn)題并進(jìn)行調(diào)試,提高工作效率。
自動(dòng)化處理:通過(guò)腳本編程,實(shí)現(xiàn)自動(dòng)化處理串口數(shù)據(jù),簡(jiǎn)化工作流程。
return uartData.."\r\n
return uartData:fromHex()
此腳本可將形如30313233發(fā)送數(shù)據(jù),處理為0123的結(jié)果
json = require("JSON")
t = uartData:split(",")
return json:encode({
key1 = t[1],
key2 = t[2],
key3 = t[3],
})
此腳本可將形如a,b,c發(fā)送數(shù)據(jù),處理為{"key1":"a","key2":"b","key3":"c"}的結(jié)果
此處理腳本,同樣對(duì)右側(cè)快捷發(fā)送區(qū)域有效。
--注冊(cè)串口接收函數(shù)
uartReceive = function (data)
log.info("uartReceive",data)
sys.publish("UART",data)--發(fā)布消息
end
--新建任務(wù),等待接收到消息再繼續(xù)運(yùn)行
sys.taskInit(function()
while true do
local _,udata = sys.waitUntil("UART")--等待消息
log.info("task waitUntil",udata)
local sendResult = apiSendUartData("ok!")--發(fā)送串口消息
log.info("uart send",sendResult)
end
end)
--新建任務(wù),每休眠1000ms繼續(xù)一次
sys.taskInit(function()
while true do
sys.wait(1000)--等待1000ms
log.info("task wait",os.time())
end
end)
--1000ms循環(huán)定時(shí)器
sys.timerLoopStart(log.info,1000,"timer test")
request = CS.System.Net.WebRequest.Create("http://example.com")
request.ContentType = "text/html;charset=UTF-8";
request.Timeout = 5000;--超時(shí)時(shí)間
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36 Vivaldi/2.2.1388.37";
response = request:GetResponse():GetResponseStream()
myStreamReader = CS.System.IO.StreamReader(response, CS.System.Text.Encoding.UTF8);
print(myStreamReader:ReadToEnd())--打印獲取的body內(nèi)容
myStreamReader:Close()
response:Close()
使用此功能,你可以完成大部分的自動(dòng)化串口調(diào)試操作。
LLCOM作為一款功能強(qiáng)大的串口通信工具,無(wú)論是嵌入式開(kāi)發(fā)人員還是通信工程師都能從中受益。通過(guò)使用LLCOM,你將能夠輕松地進(jìn)行串口通信、數(shù)據(jù)分析與處理,提高工作效率。如果你還在為串口通信問(wèn)題煩惱,不妨試試LLCOM,相信它會(huì)成為你的得力助手!
版權(quán)聲明:本文來(lái)源于網(wǎng)絡(luò)素材收集整理或網(wǎng)友供稿,版權(quán)歸版權(quán)所有者所有,如有侵權(quán)請(qǐng)聯(lián)系小編予以刪除