diff --git a/prot_cmd/cmd_pc.cpp b/prot_cmd/cmd_pc.cpp index 2510a2a..2d7c669 100644 --- a/prot_cmd/cmd_pc.cpp +++ b/prot_cmd/cmd_pc.cpp @@ -809,3 +809,57 @@ protpc_export(0x41, get_selfdev_set_rescv); + + +// 执行任务 +int selfdev_runtask::dolater(int cmd, myarray data) +{ + prot_slave *slave=protSlave(); + mycfg *cfg_=syscfg(); + busy=1; + // 这里开始检测 + qDebug("set_rescv."); + emit send_data_signal(cmd,myarray(1,0)); + HandleBoardCast *b=new slave_cmd(); + bool ack=slave->set_boardcast_handle(cfg_->calc_slave_addrs(),b); + if(ack==false){ + qWarning("handle is busy."); + busy=0; + }else{ + connect(b,&HandleBoardCast::end_signal,this,&selfdev_runtask::slave_end_slot); + // 广播设置校准值,需使用新增命令 + b->cmd=0x13; + b->start(data); + } + slave_acked.clear(); + for(int i=0;islave_num;i++){ + slave_acked.append(myarray()); + } + slave_acked_num=0; + return 0; +} + +void selfdev_runtask::timeout() +{ + busy=0; +} + +void selfdev_runtask::slave_end_slot(int addr,int ack, slave_data data) +{ + qDebug("selfdev set_rescv end."); + myarray r; + r.append(char(0)); + emit send_data_signal(0x50,r); + busy=0; +} + +static HandlePc *get_selfdev_runtask(){ + return new selfdev_runtask(); +} +protpc_export(0x50, get_selfdev_runtask); + + + + + + diff --git a/prot_cmd/cmd_pc.h b/prot_cmd/cmd_pc.h index 4368c42..2556c58 100644 --- a/prot_cmd/cmd_pc.h +++ b/prot_cmd/cmd_pc.h @@ -251,4 +251,32 @@ signals: + + + +// 执行任务 +class selfdev_runtask : public HandlePc +{ + Q_OBJECT +public: + selfdev_runtask() : HandlePc() { + slave_acked_num=0; + } + ~selfdev_runtask() { + } + int dolater(int cmd, myarray data); + void timeout(); +public slots: + void slave_end_slot(int addr,int ack, slave_data data); +protected: + QList slave_acked; + int slave_acked_num; +signals: + void send_to_m4_signal(myarray data); +}; + + + + + #endif