1、定義
class hk_r_version_cmd :public qthread
;//輸出結果
struct dataout ;
public:
explicit hk_r_version_cmd()
~hk_r_version_cmd()
;int
setdatain
(struct datain *datain)
;int
readdataout
(struct dataout*dataout)
;void
stop()
protected:
int m_port;
//攝像頭埠
qstring m_ip;
//攝像頭
qudpsocket *m_udpsocket;
struct datain m_dataintempstr;
//啟動執行緒時
struct dataout m_dataouttempstr;
//輸出結果
volatile bool m_tostop;
void
run();
};
2、執行緒實現
hk_r_version_cmd::~
hk_r_version_cmd()
int hk_r_version_cmd:
:setdatain
(hk_r_version_cmd:
:datain *datain)
int hk_r_version_cmd:
:readdataout
(hk_r_version_cmd:
:dataout *dataout)
void hk_r_version_cmd:
:run()
//傳送資料
struct hk_txddata txddatatemp;
txddatatemp.command =
0x01
; txddatatemp.state =
0x00
; txddatatemp.length =0;
unsigned
char
*txddatabuff = new unsigned
char
[txddatatemp.length+6]
;int txdlength =
hk_txddatacreat
(&txddatatemp,txddatabuff);if
(txdlength ==-1
) qbytearray txdbuff;
txdbuff.
resize
(txdlength)
; toolfunc:
:chararrtobytearraycopy
(txdbuff,txddatabuff,txdlength)
;int rxdtimecount;
//計時
int trycount =3;
//重試
int breakmark =1;
struct hk_rxddata* rxdcommand = new struct hk_rxddata;
unsigned
char
* rxdbuff = new unsigned
char
[600];
while
(breakmark==1)
//協議
if(rxdcommand->command !=
0x81
)//資料長度
if(rxdcommand->length!=12)
toolfunc:
:chararrcopy
(m_dataouttempstr.data,rxdcommand->data,rxdcommand->length)
; m_dataouttempstr.res =1;
breakmark =0;
break;}
else}if
(m_dataouttempstr.res !=0)
else}}
delete rxdcommand;
delete[
] rxdbuff;
delete[
] txddatabuff;
delete m_udpsocket;
}
3、建立執行緒
void detetioncamerahkwswin:
:readversion_btn_clicked()
3、執行緒結束處理(ui執行緒中處理)
void detetioncamerahkwswin:
:thk_r_version_cmd_manage()
else
if(dataoutttemp.res ==1)
else
if(dataoutttemp.res ==2)
else
ui->rxdstateedit->
settext
(statestr);if
(dataoutttemp.res ==1)
else
statestr.
(str)
; statestr.
("\r\n");
ui->rxdtedit->
settext
(statestr);}
//****************************************===
//關閉處理執行緒
m_thk_r_version_cmd->
disconnect()
; delete m_thk_r_version_cmd;
m_thk_r_version_cmd =
null
;//顯示結果***********************************=
//****************************************====
}
Qt之執行緒同步
qt中實現了如下類,提供執行緒同步機制 qmutex 互斥量。用來確保同一時刻,只能有乙個執行緒訪問某一資源。qreadwritelock 讀寫鎖。允許同一時刻多個執行緒讀取某一資源,但只要有乙個執行緒在寫該資源,則不允許其他程同時讀取該資源。qwaitcondition 等待條件。提供了乙個條件變...
python之執行緒相關操作 補充
1 執行緒的其他方法 import threading import time from threading import thread,current thread deff1 n time.sleep 1 print 子執行緒名稱 current thread getname print 子執行...
多執行緒補充
標籤 空格分隔 多執行緒 pragma mark 延遲執行 void delay pragma mark 只執行一次 void once pragma mark 快速迭代 獲取 資料夾路徑和目的資料夾路徑 nsstring source users v desktop source nsstring...