2023-12-29 09:41:37 +08:00
|
|
|
|
#include "keep_live.h"
|
|
|
|
|
#include "interface/if_tcp.h"
|
|
|
|
|
#include "base/mycfg.h"
|
|
|
|
|
#include "interface/if_tcp.h"
|
|
|
|
|
#include "prot/prot_pc.h"
|
|
|
|
|
#include "QDateTime"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int keep_live_checker::dolater(int cmd,myarray data)
|
|
|
|
|
{
|
|
|
|
|
data.remove(0,1);
|
|
|
|
|
QDateTime t=QDateTime::currentDateTime();
|
|
|
|
|
if(t.toString("yyyy-MM-dd hh:mm:ss")!=QString(data))
|
|
|
|
|
{
|
|
|
|
|
// 时间不相等则设置
|
|
|
|
|
//qInfo()<<"set time="<<QString(data)<<endl;
|
|
|
|
|
QString m="date -s \"%1\"";
|
|
|
|
|
m=m.arg(QString(data));
|
|
|
|
|
//qInfo()<<m<<endl;
|
|
|
|
|
system(m.toLocal8Bit().data()); // 0312 表示3月12日,1025表示当前时分
|
|
|
|
|
system("hwclock -w"); // 同步系统时间
|
|
|
|
|
system("sync"); // 保存配置
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static HandlePc *get_keep_live_checker(){
|
|
|
|
|
return new keep_live_checker();}
|
|
|
|
|
protpc_export(0x23, get_keep_live_checker);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void keep_live::init()
|
|
|
|
|
{
|
|
|
|
|
mycfg *cfg_=syscfg();
|
|
|
|
|
if_tcp *tcp=static_cast<if_tcp *>(if_tcp_get());
|
|
|
|
|
if(cfg_->tcp_enable!=true){
|
2024-01-13 11:48:21 +08:00
|
|
|
|
qDebug("keeplive not init.");
|
2023-12-29 09:41:37 +08:00
|
|
|
|
return;
|
2024-01-13 11:48:21 +08:00
|
|
|
|
}else{
|
|
|
|
|
qDebug("keeplive init.");
|
2023-12-29 09:41:37 +08:00
|
|
|
|
}
|
|
|
|
|
if(timer_==nullptr){
|
|
|
|
|
timer_=new QTimer();
|
|
|
|
|
connect(timer_,&QTimer::timeout,this,&keep_live::timeout_slot);
|
|
|
|
|
timer_->setInterval(1000);
|
|
|
|
|
timer_->start();
|
|
|
|
|
connect(tcp,&if_tcp::tcp_connected_signal,this,&keep_live::connected_slot);
|
|
|
|
|
connect(tcp,&if_tcp::tcp_recv_signal,this,&keep_live::recv_slot);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void keep_live::connected_slot()
|
|
|
|
|
{
|
2024-01-13 11:48:21 +08:00
|
|
|
|
// qDebug("keeplive connected.");
|
2023-12-29 09:41:37 +08:00
|
|
|
|
if(timer_!=nullptr){
|
2024-01-13 11:48:21 +08:00
|
|
|
|
timer_->setInterval(1*1000);
|
2023-12-29 09:41:37 +08:00
|
|
|
|
timer_->start();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void keep_live::recv_slot()
|
|
|
|
|
{
|
2024-01-13 11:48:21 +08:00
|
|
|
|
// qDebug("keeplive recv.");
|
2023-12-29 09:41:37 +08:00
|
|
|
|
if(timer_!=nullptr){
|
2024-01-13 11:48:21 +08:00
|
|
|
|
timer_->setInterval(30*1000);
|
2023-12-29 09:41:37 +08:00
|
|
|
|
timer_->start();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// state 0idle,1,busy,2,failt
|
|
|
|
|
void keep_checker::timeout_slot(){
|
|
|
|
|
myarray data;
|
|
|
|
|
mycfg *cfg_=syscfg();
|
|
|
|
|
ProtPc *pc_=protPc();
|
|
|
|
|
data.append(uint8_t(cfg_->local_id));
|
|
|
|
|
data.append(uint8_t(pc_->busy()));
|
|
|
|
|
data.append(myarray("正常"));
|
|
|
|
|
pc_->send_data_slot(uint8_t(0x23),data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void keep_coder::timeout_slot(){
|
|
|
|
|
myarray data;
|
|
|
|
|
mycfg *cfg_=syscfg();
|
|
|
|
|
ProtPc *pc_=protPc();
|
|
|
|
|
data.append(uint8_t(0));
|
|
|
|
|
data.append(uint8_t(0xff));
|
|
|
|
|
data.append(uint8_t(0x03));
|
|
|
|
|
data.append(uint8_t(cfg_->local_id));
|
|
|
|
|
data.append(uint8_t(0xff));
|
|
|
|
|
data.append(uint8_t(0x03));
|
|
|
|
|
pc_->send_data_slot(uint8_t(0x8a),data);
|
2024-01-13 11:48:21 +08:00
|
|
|
|
// qDebug("coder keeplive.");
|
2023-12-29 09:41:37 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
keep_live *KeepLive()
|
|
|
|
|
{
|
|
|
|
|
static keep_live *kp=nullptr;
|
|
|
|
|
mycfg *cfg_=syscfg();
|
|
|
|
|
if(kp!=nullptr){
|
|
|
|
|
return kp;
|
|
|
|
|
}
|
|
|
|
|
if(cfg_->tcp_enable){
|
|
|
|
|
if(cfg_->device_type=="checker"){
|
|
|
|
|
kp=new keep_checker();
|
|
|
|
|
}else if(cfg_->device_type.contains("coder",Qt::CaseInsensitive)==true){
|
|
|
|
|
kp=new keep_coder();
|
2024-01-13 11:48:21 +08:00
|
|
|
|
}else{
|
|
|
|
|
qWarning("device type err,not creat keeplive.");
|
|
|
|
|
}
|
|
|
|
|
if(kp!=nullptr){
|
|
|
|
|
QTimer::singleShot(0, kp, &keep_live::init);
|
2023-12-29 09:41:37 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return kp;
|
|
|
|
|
}
|
|
|
|
|
|