使用C++實時讀取串口數據(window使用已編譯LibModbus庫并用QT實現一個實時讀取串口數據)

先看這篇文章,寫得很詳細:
QT應用篇 四、window編譯LibModbus庫并用QT編寫一個Modbus主機 手把手教學
編譯好的LibModbus庫可以在上面文章里下載,也可以在我的鏈接里下載:

為了在Qt Creator中創建新項目并嵌入上述C++代碼,請執行以下步驟:
打開Qt Creator。
新建項目:
在菜單欄中選擇 File > New File or Project…
在彈出窗口中,選擇 Non-Qt Project。
選擇 Plain C++ Application 然后點擊“選擇…”。
輸入項目名稱和位置,然后點擊“下一步”。
選擇編譯器套件,比如GCC或MSVC,然后點擊“下一步”。
確認項目摘要信息,點擊“完成”創建項目。

大家看完上面的那篇文章后,正確的目錄如下:
在這里插入圖片描述
.Pro工程的信息如下:
在這里插入圖片描述
這三處信息如上圖所示。
main.cpp完整代碼如下:

#include <iostream>
#include <libmodbus/config.h>
#include <unistd.h>
#include<libmodbus/modbus.h>// 配置參數
const int TIMER = 1; // 讀取間隔時間(秒)
const int SERVER_ADDRESS = 1;
const int START_ADDRESS = 101;
const int START_ADDRESS_2 = 1;
const int QUANTITY = 100;
const int QUANTITY_2 = 4;
//const char *COM_PORT = "/dev/ttyS0"; // 示例的Linux串口設備文件
const char *COM_PORT = "COM8";
const int BAUD_RATE = 9600;void modbus_master_rtu() {// 創建Modbus RTU連接modbus_t *ctx = modbus_new_rtu(COM_PORT, BAUD_RATE, 'N', 8, 1);if (ctx == NULL) {std::cerr << "Unable to create the libmodbus context" << std::endl;return;}// 設置從站地址modbus_set_slave(ctx, SERVER_ADDRESS);// 建立連接if (modbus_connect(ctx) == -1) {std::cerr << "Connection failed: " << modbus_strerror(errno) << std::endl;modbus_free(ctx);return;}uint16_t tab_reg[QUANTITY];uint16_t tab_reg_2[QUANTITY_2];// 無限循環讀取數據while (true) {// 讀取第一組保持寄存器int rc = modbus_read_registers(ctx, START_ADDRESS, QUANTITY, tab_reg);// 讀取第二組保持寄存器int rc2 = modbus_read_registers(ctx, START_ADDRESS_2, QUANTITY_2, tab_reg_2);// 處理讀取結果if (rc == QUANTITY) {for (int i = 0; i < rc; i++) {std::cout << tab_reg[i];if (i < rc - 1) {std::cout << ", ";}}std::cout << std::endl;} else {std::cerr << "Error reading registers: " << modbus_strerror(errno) << std::endl;}if (rc2 == QUANTITY_2) {for (int i = 0; i < rc2; i++) {std::cout << tab_reg_2[i];if (i < rc2 - 1) {std::cout << ", ";}}std::cout << std::endl;} else {std::cerr << "Error reading registers: " << modbus_strerror(errno) << std::endl;}// 暫停執行,等待下一輪讀取sleep(TIMER);}modbus_close(ctx);modbus_free(ctx);
}int main() {modbus_master_rtu();return 0;
}

上面的代碼中的串口COM_PORT ,地址要根據自己的modbus協議要求進行修改。
在這里插入圖片描述
1.當串口線未連接電腦時,串口連接失敗,運行結果如下:
在這里插入圖片描述
2.當串口線連接電腦時,串口數據每秒輸出到緩存,運行結果如下:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12457.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12457.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12457.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux監控apache腳本

監控apache腳本&#xff1a; 1、每十分鐘檢查apache是否正常運行 分析&#xff1a;進程在運行如何判斷 1&#xff09;lockfile是否存在 2&#xff09;pid是在后臺存在 3&#xff09;能否正常訪問頁面 2、如果apache運行不正常&#xff08;進程死亡、頁面訪問也不正常等情況&am…

C++進階:紅黑樹介紹及模擬實現(圖示詳解過程)

C進階&#xff1a;紅黑樹介紹及模擬實現 上次介紹了AVL樹&#xff1a;C進階&#xff1a;AVL樹詳解及模擬實現&#xff08;圖示講解旋轉過程&#xff09; 今天就來緊接著來紅黑樹啦!!! 文章目錄 1.紅黑樹介紹約束規則 2.項目文件規劃3.整體框架&#xff08;節點和Tree&#xf…

whisper報錯:hp, ht, pid, tid = _winapi.CreateProcess [WinError 2] 系統找不到指定的文件。

in _execute_child hp&#xff0c; ht&#xff0c; pid&#xff0c; tid _winapi.CreateProcess&#xff08;executable&#xff0c; args&#xff0c; FileNotFoundError&#xff1a; [WinError 2] 系統找不到指定的文件。 原因&#xff1a; 沒裝ffmpeg 或者 ffmpeg沒添加到…

k8s pod就緒探針

Pod 可能需要時間來加載配置或數據&#xff0c;或者可能需要執行預熱過程以防止第一個用戶請求時間太長影響了用戶體驗。在這種情況下&#xff0c;不希望該 pod 立即開始接收請求&#xff0c;尤其是在運行的實例可以正確快速地處理請求的情況下。不要將請求轉發到正在啟動的 po…

YOLOv5獨家改進:backbone改進 | 微軟新作StarNet:超強輕量級Backbone | CVPR 2024

??????創新點:star operation(元素乘法)在無需加寬網絡下,將輸入映射到高維非線性特征空間的能力,這就是StarNet的核心創新,在緊湊的網絡結構和較低的能耗下展示了令人印象深刻的性能和低延遲 ??????如何跟YOLOv5結合:替代YOLOv5的backbone 收錄 YOL…

電容筆記匯總

電容 一、電容理論基礎 1、電容的本質 兩個相互靠近的導體&#xff0c;中間夾一層不導電的絕緣介質&#xff0c;這就構成了電容器。當電容器的兩個極板之間加上電壓時&#xff0c;電容器就會儲存電荷。 兩個相互靠近的金屬板中間夾一層絕緣介質組成的器件&#xff0c;當兩端…

豆漿機缺水檢測功能如何實現的

豆漿機缺水檢測功能的實現是通過光學液位傳感器來完成的。這種傳感器具有多種優勢&#xff0c;如內部所有元器件經過樹脂膠封處理&#xff0c;沒有任何機械活動部件&#xff0c;免調試、免檢驗、免維護等特點。它采用了光電液位傳感器內置的光學電子元件&#xff0c;體積小、功…

Docker常用鏡像安裝

1. mysql 1.1 安裝 獲取鏡像 docker pull mysql:8.0.30創建文件掛載目錄 創建容器并運行 docker run -p 3306:3306 --name mysql8 \ -v /home/docker/mysql8/log:/var/log/mysql \ -v /home/docker/mysql8/data:/var/lib/mysql \ -v /home/docker/mysql8/mysql-files:/va…

保研機試之【設備驅動程序】

B選項&#xff1a; 綜上&#xff0c;我認為這道題選擇D~

一些近來對內網攻防的思考

我知道我最近托更托了很久了&#xff0c;其實也不是小編懶啊 這小編也是一直在寫&#xff0c;但是遇到的問題比較多&#xff08;我太菜了&#xff09;&#xff0c;所以一直拖著。 但是總不能不更吧 那就講一下進來的一些內網攻防的思考吧 1.CrossC2上線Linux到CS(成功) …

用友網絡的危與機:2023年虧損約10億元,王文京面臨嚴肅拷問

“企業在新的產業浪潮來臨時&#xff0c;應該主動推進新階段的產品和業務創新&#xff0c;這樣才能夠在新的浪潮成為主流的時候&#xff0c;走到行業前面&#xff0c;否則就會從產業發展的潮流中掉下來”。用友網絡創始人王文京&#xff0c;曾用“沖浪理論”形容一家企業成功的…

Steam喜加一,限時免費領取《Machinika Museum》

《Machinika Museum》限時免費領取啦&#xff01;這是一款燒腦解謎游戲&#xff0c;讓你挖掘神秘外星裝置的秘密。在這個非常特別的異星裝置博物館里&#xff0c;你將扮演一名研究員&#xff0c;負責解開各種機械謎題&#xff0c;探索背后的故事。 在這個未來世界&#xff0c;外…

MLP的代替:KAN

受柯爾莫哥洛夫-阿諾德表示定理的啟發&#xff0c;作者提出柯爾莫哥洛夫-阿諾德網絡&#xff08;KAN&#xff09;作為多層感知器&#xff08;MLP&#xff09;有前途的替代品。MLP 在節點&#xff08;“神經元”&#xff09;上具有固定的激活函數&#xff0c;而 KAN 在邊&#x…

自動化中遇到的問題歸納總結

1、動態元素定位不到 解決方法&#xff1a;盡量使用固定元素定位&#xff0c;如沒有固定元素&#xff0c;則采用絕對路徑進行定位&#xff0c;因為元素路徑是唯一且不變的 2、自動化腳本執行速度較慢 盡量使用css方法定位元素&#xff0c;使用等待時&#xff0c;少用sleep方…

C#中string.format的格式和用法

C#中string.format的格式和用法 第1部分 格式化數字 string str1 string.Format("{0:N1}",56789); //result: 56,789.0string str2 string.Format("{0:N2}",56789); //result: 56,789.00string str3 string.Format("{0:…

Kubernetes 文檔 / 概念 / 容器 / 容器環境

Kubernetes 文檔 / 概念 / 容器 / 容器環境 此文檔從 Kubernetes 官網摘錄 中文地址 英文地址 容器環境 Kubernetes 的容器環境給容器提供了幾個重要的資源&#xff1a; 文件系統&#xff0c;其中包含一個鏡像 和一個或多個的卷容器自身的信息集群中其他對象的信息 容器信…

[筆記] srlua庫編譯

文章目錄 前言一、環境二、編譯過程2.1 gcc安裝2.2 編譯lua2.3 編譯srlua庫 三、測試srlua庫參考總結 前言 一、環境 centos7.9 gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) lua5.1源碼 srlua 源碼 二、編譯過程 2.1 gcc安裝 yum install gcc這里gcc安裝過程和環…

蘋果電腦卡頓反應慢怎么辦 蘋果電腦卡頓嚴重解決方法 mac電腦太卡了怎么辦

作為Mac用戶&#xff0c;你是否正在經歷或者曾經遭遇過電腦卡頓、反應慢的困擾&#xff1f;這可能是由于多種原因導致的&#xff0c;包括自啟動程序過多、系統與應用未及時更新、內存管理不當等。今天和你一起來探討下&#xff0c;蘋果電腦卡頓反應慢時怎么辦。希望能夠幫助你解…

KBPC5010-ASEMI電源控制柜專用KBPC5010

編輯&#xff1a;ll KBPC5010-ASEMI電源控制柜專用KBPC5010 型號&#xff1a;KBPC5010 品牌&#xff1a;ASEMI 封裝&#xff1a;KBPC-4 正向電流&#xff08;Id&#xff09;&#xff1a;50A 反向耐壓&#xff08;VRRM&#xff09;&#xff1a;1000V 正向浪涌電流&#x…

FreeRTOS中的動態內存管理(heap_1、heap_2、heap_3、heap_4)

FreeRTOS 提供了多種動態內存分配方案&#xff0c;這些方案通過不同的內存管理器&#xff08;heap managers&#xff09;實現&#xff0c;主要位于 FreeRTOS/Source/portable/MemMang 目錄下。以下是幾種常見的動態內存分配方案&#xff1a; heap_1 特點&#xff1a; 簡單性…