色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

分享一個開源的QT的串口示波器

strongerHuang ? 來源:果果小師弟 ? 作者:果果小師弟 ? 2022-11-25 10:28 ? 次閱讀

逛github時看到這個QT的串口示波器,完全開源,支持串口、TCP、波形顯示、通信協議。感覺很不錯,跟以前分享的那個vofa+有點像。

Sailor Project功能說明

8a09edd0-6c57-11ed-8abf-dac502259ad0.png

串口調試助手功能

  • 支持傳統的串口調試助手的基本收發功能,同時可以刷新大量的數據而不卡頓
  • 支持保存接收的數據
  • 支持最大200條可編輯指令的設置,并用于多條發送
  • 支持定時器發送
  • 支持換行符替換時間戳功能
  • 支持較多的中文編碼格式
  • 值得注意的是支持Linux簡單的串口調試
  • 支持加載csv表格數據到200條可編輯指令
  • 支持部分窗口配置的保存和重啟恢復(前提是你不會刪除配置文件)

操作說明

注意由于QT自帶文本顯示窗口加載大量數據后會造成軟件卡頓,現解決方案為設定一個顯示緩沖區,在有刷新數據階段(即串口接收數據階段),如果需要保持刷新狀態(即實時顯示接收得數據),則僅顯示顯示緩沖區的內容,你可以使用鼠標移動向上滾動條,停止數據刷新,同時當你向上移動滾動條到一定程度,便會開始加載所有數據,如果你想再次觸發實時刷新數據狀態,只需要將滾動條移動到最低端,并確保有數據接收。

由于保存數據為顯示界面的數據,如果出于刷新狀態,則無法保存所有數據,正確的做法是關閉串口后,將滾動條移動到最頂端,加載全部數據,然后保存窗口數據。

TCPServer界面

8a14e078-6c57-11ed-8abf-dac502259ad0.png8a1f5558-6c57-11ed-8abf-dac502259ad0.png8a2a8ad6-6c57-11ed-8abf-dac502259ad0.png8a3909b2-6c57-11ed-8abf-dac502259ad0.png8a5d4d04-6c57-11ed-8abf-dac502259ad0.png

SEASKY串口通信協議

通信方式是串口,配置為波特率115200, 8位數據位, 1位停止位, 無硬件流控, 無校驗位。

1、通信協議格式

幀頭 設備類型 設備ID 數據ID 幀尾
protocol_header(4-byte) equipment_type(2-byte) equipment_id (2-byte) data_id(2-byte) frame_tail(2-byte,CRC16,整包校驗)

2、幀頭詳細定義

8a6b92a6-6c57-11ed-8abf-dac502259ad0.png

3、串口通信協議

intparse_protocol(protocol_struct*pProtocol,uint16_tparseDataLen)
{
//解析數據,使用前需提前緩沖pProtocol->message_st.pData
intret=-1;
uint16_tpos_offset;
frame_struct*pFrameStruct=&pProtocol->frame_st;
message_struct*pMessageStruct=&pProtocol->message_st;
if(check_protocol_heade(pMessageStruct->pData)==PROTOCOL_RESULT_OK)
{
//更新幀頭數據
pFrameStruct->header.sof=pMessageStruct->pData[0];
//獲取data段的數據長度
pFrameStruct->header.data_length=(pMessageStruct->pData[2]<8)|(pMessageStruct->pData[1]);
pFrameStruct->header.crc_check=pMessageStruct->pData[3];
//獲取此次數據包長度
pMessageStruct->data_len=pFrameStruct->header.data_length+PROTOCOL_DATA_OFFSET+2;
//計算解析后得到的data_union數據長度
pFrameStruct->frame_user.cmd_data.data_len=(pFrameStruct->header.data_length)/sizeof(data_union);
if(pMessageStruct->data_len<=parseDataLen)
????????{
????????????if(pMessageStruct->data_len<=?pMessageStruct->max_data_len)
{
if(CRC16_Check_Sum(&pMessageStruct->pData[0],pMessageStruct->data_len)!=0)
{
pFrameStruct->frame_user.equipment_type=(pMessageStruct->pData[5]<<8)|(pMessageStruct->pData[4]);
pFrameStruct->frame_user.equipment_id=(pMessageStruct->pData[7]<8)|(pMessageStruct->pData[6]);
pFrameStruct->frame_user.data_id=(pMessageStruct->pData[9]<8)|(pMessageStruct->pData[8]);
//拷貝data段指定長度數據
ret=(int)memcpy(&pFrameStruct->frame_user.cmd_data.pData[0],&pMessageStruct->pData[PROTOCOL_DATA_OFFSET],pFrameStruct->header.data_length);
pos_offset=pFrameStruct->header.data_length+PROTOCOL_DATA_OFFSET;
pFrameStruct->frame_tail=(pMessageStruct->pData[pos_offset+1]<8)|(pMessageStruct->pData[pos_offset]);
returnPROTOCOL_RESULT_OK;
}
else
{
//待解析BUFF超過預定解析數據容量,避免內存越界
PROTOCOL_ERROR_PRINTF("parse_protocol->>CRC16_Check_Sumerr!
");
returnPROTOCOL_RESULT_CHECK_FRAME_ERR;
}
}
else
{
//待解析BUFF超過預定解析數據容量,避免內存越界
PROTOCOL_ERROR_PRINTF("parse_protocol->>data_len[%d]>max_data_len[%d]!
",
pMessageStruct->data_len,
pMessageStruct->max_data_len);
returnPROTOCOL_RESULT_OUT_OF_LEN;
}
}
else
{
//通過包頭計算,還未收到完整的數據包
//PROTOCOL_ERROR_PRINTF("parse_protocol->>data_len[%d]>max_data_len[%d]!
",
//pMessageStruct->data_len,
//pMessageStruct->max_data_len);
returnPROTOCOL_RESULT_OUT_OF_LEN;
}
}
else
{
//待解析BUFF超過預定解析數據容量,避免內存越界
PROTOCOL_ERROR_PRINTF("parse_protocol->>check_protocol_headeerr!
");
returnPROTOCOL_RESULT_CHECK_HEAD_ERR;
}
PROTOCOL_DEBUG_PRINTF("parse_protocol->>check_protocol_headeok!
");
returnPROTOCOL_RESULT_ERR;
}

軟件截圖

8a7296c8-6c57-11ed-8abf-dac502259ad0.png8a8152ee-6c57-11ed-8abf-dac502259ad0.png8a905078-6c57-11ed-8abf-dac502259ad0.png8aa36d02-6c57-11ed-8abf-dac502259ad0.png

項目開源地址:

https://github.com/SEASKY-Master/vSailorProject
審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 示波器
    +關注

    關注

    113

    文章

    6264

    瀏覽量

    185283
  • 定時器
    +關注

    關注

    23

    文章

    3251

    瀏覽量

    114993

原文標題:分享一個開源的QT的串口示波器

文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    QT環境下使用CH348芯片進行設備識別與管理

    當多個CH348芯片同時接入電腦時,每塊芯片虛擬出的8串口都相同,這會導致難以區分和管理這些串口。為了解決這個問題,我們可以通過修改每個CH348芯片的SerialString字段,并在Qt
    的頭像 發表于 11-29 01:03 ?170次閱讀
    在<b class='flag-5'>QT</b>環境下使用CH348芯片進行設備識別與管理

    示波器如何測試特定的脈沖信號?還在一個個數?

    客戶在使用示波器時遇到了這樣問題,他測試的信號每間隔段時間就會發出40-70脈沖,但
    的頭像 發表于 09-26 08:09 ?1170次閱讀
    <b class='flag-5'>示波器</b>如何測試特定的脈沖信號?還在<b class='flag-5'>一個</b>個數?

    QT5+OpenCV4搭建應用開發環境

    作為深度學習算法工程師,必須要掌握應用開發技能嗎?搞工程肯定是必須要會界面開發,QT就是很不錯的選擇。本文以QT5.15 + OpenCV4.8 + OpenVINO2023為例,
    的頭像 發表于 07-23 11:23 ?1114次閱讀
    <b class='flag-5'>QT</b>5+OpenCV4搭建應用開發環境

    示波器通道的接地探頭電壓是樣的嗎?

    在電子測量領域,示波器種重要的儀器,用于觀察和測量電信號的波形和幅度。在示波器的測量中,通常會使用探頭來連接被測電路,而探頭的接地引線則是
    的頭像 發表于 06-24 10:19 ?609次閱讀
    <b class='flag-5'>示波器</b>兩<b class='flag-5'>個</b>通道的接地探頭電壓是<b class='flag-5'>一</b>樣的嗎?

    如何使用示波器測量串口波特率

    在通信和電子測量領域,串口波特率是至關重要的參數,它決定了數據在串行通信線上的傳輸速率。使用示波器來測量串口波特率是
    的頭像 發表于 05-27 16:25 ?5158次閱讀

    示波器的帶寬是什么 示波器帶寬選擇的技巧

    示波器的帶寬是示波器性能的重要指標,它指的是示波器可以準確地測量和顯示信號的最高頻率。
    的頭像 發表于 05-20 15:37 ?1469次閱讀

    做了 log 日志觸發器控制示波器

    日常工作中,經常遇到需要在軟件出錯時抓到當時的波形,靠人看太費勁,就搞了觸發器,可以直接讀取串口日志,并在檢測到關鍵字時控制 GPI
    發表于 03-21 21:42

    Qt上位機開發實戰案例

    Qt Creator是用于Qt開發的輕量級跨平臺集成開發環境。 Qt Creator可帶來兩大關鍵益處: 提供首個專為支持跨
    的頭像 發表于 03-13 12:31 ?2617次閱讀
    <b class='flag-5'>Qt</b>上位機開發實戰案例

    AWTK 開源串口屏開發(12) - 記事本應用

    記事本是常用的應用程序,在AWTK串口屏中,內置文件模型和文件選擇對話框,無需編寫行傳統的代碼,即可實現
    的頭像 發表于 03-09 08:23 ?368次閱讀
    AWTK <b class='flag-5'>開源</b><b class='flag-5'>串口</b>屏開發(12) - 記事本應用

    3562-Qt工程編譯說明

    本文檔主要說明如何將已有 Qt 工程進行編譯,生成可在評估板上正常運行的 ARM 端 Qt 程序鏡像。 Qt 開發環境主要包括 Qt Creator 工具、X86 端
    的頭像 發表于 03-05 09:19 ?492次閱讀
    3562-<b class='flag-5'>Qt</b>工程編譯說明

    Qt For OpenHarmony圖形化的進展突破

    Qt 適配 OpenHarmony 意義 Qt C++ 跨平臺開發框架,主要用于開發圖形用戶界面(Graphical User Interface,GUI)程序,具有跨平臺類庫
    的頭像 發表于 02-02 14:29 ?1556次閱讀
    <b class='flag-5'>Qt</b> For OpenHarmony圖形化的進展突破

    基于QT5+OpenCV+OpenVINO C++的應用打包過程

    我用QT C++寫了YOLOv5模型推理演示應用。
    的頭像 發表于 01-26 10:17 ?1338次閱讀
    基于<b class='flag-5'>QT</b>5+OpenCV+OpenVINO C++的應用打包過程

    QT串口通信的簡單使用

    QT串口通信是上位機和下位機通信常用的通信方式, 也是學習QT必須學會的基礎知識, 這篇就簡單介紹QT
    的頭像 發表于 01-15 09:27 ?2074次閱讀
    <b class='flag-5'>QT</b><b class='flag-5'>串口</b>通信的簡單使用

    【干貨】示波器串口數據

    (低電平),數據位8bit,奇偶校驗位(般不加),停止位1bit(高電平)。 所以我選擇的數據幀格式為: 1bit起始位+8bit數據位+1bit停止位(大多數都是這樣) ?首先看示波器
    的頭像 發表于 01-12 08:40 ?1607次閱讀
    【干貨】<b class='flag-5'>示波器</b>扒<b class='flag-5'>串口</b>數據
    主站蜘蛛池模板: 久久中文骚妇内射| CHINESE老阿姨免费视频| 亚洲欧洲日产国码中学| 边吃胸边膜下床震免费版视频 | 老头狠狠挺进小莹体内视频| 亚洲AV怡红院AV男人的天堂| 高H辣肉办公室| 三级黃60分钟| 哺乳溢出羽月希中文字幕| 偷拍自怕亚洲在线第7页| 成在线人免费| 十分钟在线观看免费视频高清WWW| xfplay 无码专区 亚洲| 欧美性喷潮xxxx| 99在线精品国自产拍不卡| 欧美gay69| jizzjizz3d动漫| 无限资源在线完整高清观看1| 国产成人欧美日韩在线电影| 特大巨黑人吊性xxxxgay| 九色91精品国产网站| 亚洲视频网站欧美视频网站| 久久精品天天中文字幕| 伊人激情综合网| 免费三级播放器| h片下载地址| 亚洲乱码国产一区三区| 精品亚洲国产熟女福利自在线 | 牢记永久免费网址| 国产激情精品久久久久久碰| 亚洲AV國產国产久青草| 久久AV国产麻豆HD真实乱| 爆乳啪啪无码成人二区亚洲欧美| 熟女人妻水多爽中文字幕| 久久只精品99品免费久| 国产精品爽黄69天堂A片| 亚洲日韩中文字幕日本有码| 人人听力网mp3下载| 国产内射AV徐夜夜| 在线免费观看成年人视频| 欧美日韩1区|