#include "prot/prot_cmdline.h" #include "base/mycfg.h" #include "QNetworkConfigurationManager" #include "QTimer" #include "QtNetwork" #include "prot/prot_slave.h" #include "prot_cmd/cmd_slave.h" #include "QFile" #include "base/base.h" // 获取设备基本信息 static void whos(QList args) { QString out; QString name = "local_id:%1,name:%2"; QString hostName = QHostInfo::localHostName(); command *c=command_start(); mycfg *cfg_=syscfg(); name = name.arg(cfg_->local_id).arg(hostName); out.append(name + "\n"); out.append("builed time:" + cfg_->build_date + "\n"); QList network = QNetworkInterface::allInterfaces(); foreach (QNetworkInterface net, network) { QString str = "net:%1"; QString netName = net.humanReadableName(); str = str.arg(netName); out.append(str + "\n"); QList list = net.addressEntries(); // 获取IP地址与子掩码等 foreach (QNetworkAddressEntry address, list) { QString str = "ip:%1"; if (address.ip().protocol() == QAbstractSocket::IPv4Protocol) // 获取IPv4的地址 { out.append(str.arg(address.ip().toString()) + "\n"); } } } out = "ack:1," + out; c->send(out.toLocal8Bit()); } cmdline_export(whos, whos, print device base info.); // mcu 相关 static void mcu_cmdlines(QList args) { command *c=command_start(); if(args.size()<2){ c->send("cmd len too less."); return ; } if((args.size()>=4)&&(args[1]=="updata")){ QList addrs=str_to_nums(args[2],','); HandleBoardCast *b=new boardcast_updata(); prot_slave *slave=protSlave(); mycfg *cfg_=syscfg(); bool ack=slave->set_boardcast_handle(addrs,b); if(ack==false){ qWarning("handle is busy."); }else{ // connect(b,&HandleBoardCast::end_signal,nullptr,[=](int addr,int ack, myarray data){ // if(ack==0) // c->send("slave updata success."); // else // c->send("slave updata failed."); // }); QFile file; file.setFileName(args[3]); if(file.open(QIODevice::ReadOnly)){ myarray data=file.readAll(); b->start(data); file.close(); }else{ qWarning("open file failed."); } } } } cmdline_export(mcu, mcu_cmdlines, mcu cmdlines` input [mcu help] to detail.);