Qt在樹莓派中根據心跳包的返回值同步伺服器時間

2021-10-11 01:12:17 字數 1739 閱讀 6655

在之前的專案中需要根據伺服器返回心跳包的值來設定本地時間。我是通過編寫shell指令碼,將更改時間的命令列寫在指令碼裡,使用qprocess呼叫指令碼,這部分在qt中呼叫system()和qprocess執行命令列,更改樹莓派的系統時間中有說明。

這裡主要將通過qfile改寫指令碼檔案,將伺服器給的時間當作引數寫入指令碼檔案。(網上好像有shell指令碼直接使用引數的方法,當時我沒有了解到)

qfile readfile(/

....

.)//讀取檔案路徑

readfile.

open

(qiodevice::readonly|qiodevice::text)

//第乙個引數qiodevice::readonly表示要進行讀檔案操作

//第二個引數qiodevice::text表示以text的方式讀取

qfile writefile(/

....

.)//編輯後儲存檔案路徑

writefile.

open

(qiodevice::writeonly|qiodevice::text)

//第乙個引數qiodevice::writeonly表示要進行寫檔案操作

//第二個引數qiodevice::text表示以text的方式編輯

qstring strall;

//接收檔案內容

qfile readfile

("/home/pi/release/settime.sh");

//檔案位址

if(readfile.

open

((qiodevice::readonly|qiodevice::text)))

//讀取檔案

readfile.

close()

;qfile writefile

("/home/pi/release/settime.sh");

if(writefile.

open

(qiodevice::writeonly|qiodevice::text)

)//寫檔案

else

if(strlist.

at(i)==(

"#! bin/bash"))

//尋找目標的上一行}}

writefile.

close()

;//關閉儲存檔案

//根據具體情況,使用qprocess執行指令碼檔案

qprocess pro;

pro.

start

("sudo bash /home/pi/release/settime.sh");

//指令碼路徑

pro.

waitforstarted()

;pro.

waitforfinished()

;

上面這種主要是檔案內容較多時使用的,如果檔案內容不多,可以每次清空檔案,然後將需要的資料全部寫進去,這樣**更簡單。

qfile readfile

("/home/pi/release/settime.sh");

//檔案位址

if(readfile.

open

((qiodevice::readonly|qiodevice::text)))

//讀取檔案

readfile.

close()

;

Qt 在樹莓派中封裝wiringPi中斷

關於樹莓派的介紹這裡就不做過多描述了,關於樹莓派的更多資訊請移步 樹莓派學習筆記 gpio功能學習 由於 wiringpi 的中斷不會在新中斷來臨時將之前還沒有執行完的中斷函式給終止掉 最多會存在兩個 因此不能使用 delay 的方式做延時消抖,在這裡我採用的辦法是使用qtimer來做非同步的延時消...

樹莓派中QT實現串列埠通訊

開發平台為qt 此部落格qt使用的為wiringpi驅動 我使用的串列埠除錯助手為 cutecom 接線示意 widget.pro 中 qt core gui libs lwiringpi qt serialport widget.h 中 include include include includ...

樹莓派3B在Qt下使用串列埠傳送資料

使用putty的時候神奇的發現樹莓派竟然是支援serial進行操作。試了試,和在ssh下使用沒有多少區別,速度也很快。樹莓派的串列埠主要也就是被這個占用了,配置釋放之後才能使用它來進行串列埠通訊。在命令列裡輸入如下指令 sudo raspi config在如下出現的介面中選擇 5 選擇 p6 ser...