|
|
@ -13,6 +13,8 @@ Widget::Widget(QWidget *parent)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ui->setupUi(this);
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
on_btnRefresh_clicked();
|
|
|
|
|
|
|
|
|
|
|
|
memset(rxbuf, 0, sizeof(rxbuf));
|
|
|
|
memset(rxbuf, 0, sizeof(rxbuf));
|
|
|
|
rxbufLen = 0;
|
|
|
|
rxbufLen = 0;
|
|
|
|
|
|
|
|
|
|
|
@ -28,22 +30,54 @@ Widget::Widget(QWidget *parent)
|
|
|
|
upFileRecvSize = 0;
|
|
|
|
upFileRecvSize = 0;
|
|
|
|
upFileSize = 0;
|
|
|
|
upFileSize = 0;
|
|
|
|
isDataRefresh = false;
|
|
|
|
isDataRefresh = false;
|
|
|
|
|
|
|
|
|
|
|
|
waveParam = 0;
|
|
|
|
waveParam = 0;
|
|
|
|
|
|
|
|
|
|
|
|
is_log_up = 0;
|
|
|
|
is_log_up = 0;
|
|
|
|
|
|
|
|
|
|
|
|
logIndex = 0;
|
|
|
|
logIndex = 0;
|
|
|
|
|
|
|
|
waveIndex = 0;
|
|
|
|
|
|
|
|
is_wave_up = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
energyMode[0] = "未知";
|
|
|
|
|
|
|
|
energyMode[1] = "正常模式";
|
|
|
|
|
|
|
|
energyMode[2] = "节能模式";
|
|
|
|
|
|
|
|
energyMode[3] = "休眠模式";
|
|
|
|
|
|
|
|
|
|
|
|
//usartProtocol = new Protocol;
|
|
|
|
//usartProtocol = new Protocol;
|
|
|
|
|
|
|
|
|
|
|
|
crc32_table_init();
|
|
|
|
crc32_table_init();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 配置校准页面表格 */
|
|
|
|
|
|
|
|
ui->adjustTable->horizontalHeader()->setVisible(true);
|
|
|
|
|
|
|
|
ui->adjustTable->horizontalHeader()->resizeSection(0,20);
|
|
|
|
|
|
|
|
ui->adjustTable->horizontalHeader()->resizeSection(1,50);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//如下代码设置横向表格头的间隔线,有四个方向的间隔线,不需要间隔线的可以设置为0px
|
|
|
|
|
|
|
|
ui->adjustTable->horizontalHeader()->setStyleSheet(
|
|
|
|
|
|
|
|
"QHeaderView::section{"
|
|
|
|
|
|
|
|
"border-top:0px solid #E5E5E5;"
|
|
|
|
|
|
|
|
"border-left:0px solid #E5E5E5;"
|
|
|
|
|
|
|
|
"border-right:0.5px solid #E5E5E5;"
|
|
|
|
|
|
|
|
"border-bottom: 0.5px solid #E5E5E5;"
|
|
|
|
|
|
|
|
"background-color:white;"
|
|
|
|
|
|
|
|
"padding:4px;"
|
|
|
|
|
|
|
|
"}"
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
/* 打开配置文件, 恢复关闭前的状态. */
|
|
|
|
/* 打开配置文件, 恢复关闭前的状态. */
|
|
|
|
QString file = QCoreApplication::applicationDirPath()+"/CableTool.ini";
|
|
|
|
QString file = QCoreApplication::applicationDirPath()+"/CableTool.ini";
|
|
|
|
settings = new QSettings(file, QSettings::IniFormat, this);
|
|
|
|
settings = new QSettings(file, QSettings::IniFormat, this);
|
|
|
|
|
|
|
|
|
|
|
|
searchUsablePort();
|
|
|
|
|
|
|
|
|
|
|
|
ui->comboBaud->setCurrentIndex(settings->value("baudBoxIndex", 6).toInt());
|
|
|
|
|
|
|
|
filePath = settings->value("updateFile", "").toString();
|
|
|
|
|
|
|
|
adjFilePath = settings->value("adjFile", "").toString();
|
|
|
|
|
|
|
|
waveFilePath = settings->value("waveFile", "").toString();
|
|
|
|
|
|
|
|
QFileInfo fileinfo = QFileInfo(filePath);
|
|
|
|
|
|
|
|
ui->fileNameEdit->setText(fileinfo.fileName());
|
|
|
|
|
|
|
|
ui->fileNameEdit->setReadOnly(true);
|
|
|
|
|
|
|
|
ui->fileTypeBox->setCurrentIndex(settings->value("updateFileType", 0).toInt());
|
|
|
|
|
|
|
|
ui->freChBox->setCurrentIndex(settings->value("freChIndex", 0).toInt());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//searchUsablePort();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -265,6 +299,60 @@ void Widget::buttonEnable(bool flag)
|
|
|
|
ui->RatioParamGetButton->setEnabled(flag);
|
|
|
|
ui->RatioParamGetButton->setEnabled(flag);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QString Widget::devStateWaveStateGet(uint8_t state)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
switch(state)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
case WAVE_STATE_IDLE:
|
|
|
|
|
|
|
|
return "空闲";
|
|
|
|
|
|
|
|
case WAVE_STATE_START:
|
|
|
|
|
|
|
|
return "准备";
|
|
|
|
|
|
|
|
case WAVE_STATE_WAIT:
|
|
|
|
|
|
|
|
return "等待";
|
|
|
|
|
|
|
|
case WAVE_STATE_READ:
|
|
|
|
|
|
|
|
return "读取";
|
|
|
|
|
|
|
|
case WAVE_STATE_STOP:
|
|
|
|
|
|
|
|
return "结束";
|
|
|
|
|
|
|
|
case WAVE_STATE_ADC_ERROR:
|
|
|
|
|
|
|
|
case WAVE_STATE_TIMEOUT:
|
|
|
|
|
|
|
|
return "错误";
|
|
|
|
|
|
|
|
case WAVE_STATE_COMPLETION:
|
|
|
|
|
|
|
|
return "完成";
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
return "未知";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QString Widget::devStateWlStateGet(uint8_t state)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
switch(state)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
case WL_STATE_SOFT:
|
|
|
|
|
|
|
|
case WL_STATE_AT_ATE:
|
|
|
|
|
|
|
|
case WL_STATE_AT_QICSGP:
|
|
|
|
|
|
|
|
case WL_STATE_AT_QIACT:
|
|
|
|
|
|
|
|
case WL_STATE_AT_CSQ:
|
|
|
|
|
|
|
|
case WL_STATE_AT_QIOPEN:
|
|
|
|
|
|
|
|
return "AT";
|
|
|
|
|
|
|
|
case WL_STATE_WAKEUP:
|
|
|
|
|
|
|
|
return "联络";
|
|
|
|
|
|
|
|
case WL_STATE_REALDATA:
|
|
|
|
|
|
|
|
return "数据";
|
|
|
|
|
|
|
|
case WL_STATE_PWR_FRE:
|
|
|
|
|
|
|
|
return "工频";
|
|
|
|
|
|
|
|
case WL_STATE_WAVE:
|
|
|
|
|
|
|
|
return "高频";
|
|
|
|
|
|
|
|
case WL_STATE_UPDATE:
|
|
|
|
|
|
|
|
return "升级";
|
|
|
|
|
|
|
|
case WL_STATE_UPDATE_RT:
|
|
|
|
|
|
|
|
return "升级回复";
|
|
|
|
|
|
|
|
case WL_STATE_END:
|
|
|
|
|
|
|
|
return "完成";
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
return "未知";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Widget::uiDevInfoRefresh()
|
|
|
|
void Widget::uiDevInfoRefresh()
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -445,6 +533,64 @@ void Widget::uiDevRealDataRefresh()
|
|
|
|
ui->elec6Label->setText(temp);
|
|
|
|
ui->elec6Label->setText(temp);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Widget::uiDevStateRefresh()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
QString temp;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (clientDevState.energyMode < 4)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
ui->stateEnergyLabel->setText(energyMode[clientDevState.energyMode]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
ui->stateEnergyLabel->setText(energyMode[0]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
ui->stateBatChargeLabel->setText(clientDevState.isBatCharge ? "未充电" : "充电");
|
|
|
|
|
|
|
|
ui->stateForceSleepUpLabel->setText(clientDevState.forceSleepUp ? "是" : "否");
|
|
|
|
|
|
|
|
ui->stateAdcColLabel->setText(clientDevState.isAdcCollect ? "完成" : "未完成");
|
|
|
|
|
|
|
|
ui->stateAdcUpLabel->setText(clientDevState.isAdcUp ? "完成" : "未完成");
|
|
|
|
|
|
|
|
ui->stateAdcThrLabel->setText(clientDevState.isAdcthr ? "是" : "否");
|
|
|
|
|
|
|
|
ui->stateAdciCntLabel->setText(QString::number(clientDevState.AdciCnt));
|
|
|
|
|
|
|
|
ui->stateAdciStLabel->setText(QString::number(clientDevState.AdciState));
|
|
|
|
|
|
|
|
ui->stateAdcCntLabel->setText(QString::number(clientDevState.AdcCnt));
|
|
|
|
|
|
|
|
ui->stateAdcStLabel->setText(QString::number(clientDevState.AdcState));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*得到系统时间*/
|
|
|
|
|
|
|
|
time_t cur = static_cast<time_t>(clientDevState.waveTime);
|
|
|
|
|
|
|
|
tm *day;
|
|
|
|
|
|
|
|
day = localtime(&cur);
|
|
|
|
|
|
|
|
temp.sprintf("%d/%d/%d %d:%d:%d", day->tm_year + 1900, day->tm_mon+1, day->tm_mday,
|
|
|
|
|
|
|
|
day->tm_hour, day->tm_min, day->tm_sec);
|
|
|
|
|
|
|
|
ui->stateWaveTmLabel->setText(temp);
|
|
|
|
|
|
|
|
ui->stateWaveFinLabel->setText(clientDevState.waveStart ? "未完成" : "完成");
|
|
|
|
|
|
|
|
ui->stateWaveUpLabel->setText(clientDevState.waveUpStart ? "未完成" : "完成");
|
|
|
|
|
|
|
|
ui->stateWaveIdxLabel->setText(QString::number(clientDevState.waveIdx));
|
|
|
|
|
|
|
|
ui->stateWaveStLabel->setText(devStateWaveStateGet(clientDevState.waveState));
|
|
|
|
|
|
|
|
ui->stateWaveRtLabel->setText(QString::number(clientDevState.waveRt));
|
|
|
|
|
|
|
|
ui->stateWaveForceLabel->setText(clientDevState.waveForce ? "是" : "否");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ui->stateWlStLabel->setText(devStateWlStateGet(clientDevState.wlState));
|
|
|
|
|
|
|
|
ui->stateWlCntLabel->setText(QString::number(clientDevState.wlCnt));
|
|
|
|
|
|
|
|
ui->stateWlUpLabel->setText(clientDevState.isWlUpdate ? "升级" : "未升级");
|
|
|
|
|
|
|
|
ui->stateWlIdxLabel->setText(QString::number(clientDevState.wlWaveIdx));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ui->waveParamEdit->setText(QString::number(clientDevState.waveAdj));
|
|
|
|
|
|
|
|
ui->waveFinLabel->setText(clientDevState.waveStart ? "未完成" : "完成");
|
|
|
|
|
|
|
|
ui->waveMinEdit->setText(QString::number(clientDevState.waveMin));
|
|
|
|
|
|
|
|
ui->waveMaxEdit->setText(QString::number(clientDevState.waveMax));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
temp.sprintf("%dh:%dm:%ds", clientDevState.sysTime / 3600, (clientDevState.sysTime / 60) % 60, clientDevState.sysTime % 60);
|
|
|
|
|
|
|
|
ui->stateRunTimeLabel->setText(temp);
|
|
|
|
|
|
|
|
double tempSc;
|
|
|
|
|
|
|
|
tempSc = clientDevState.scMax / 1000.00;
|
|
|
|
|
|
|
|
ui->stateScMaxLabel->setText(QString::number(tempSc, 'g', 3));
|
|
|
|
|
|
|
|
tempSc = clientDevState.scMin / 1000.00;
|
|
|
|
|
|
|
|
ui->stateScMinLabel->setText(QString::number(tempSc, 'g', 3));
|
|
|
|
|
|
|
|
ui->stateUpTimeLabel->setText(QString::number(clientDevState.scUpTime));
|
|
|
|
|
|
|
|
ui->stateDownTimeLabel->setText(QString::number(clientDevState.scDownTime));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Widget::protoContact(char *data)
|
|
|
|
void Widget::protoContact(char *data)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
char *pbody = data + sizeof(proto_head_t);
|
|
|
|
char *pbody = data + sizeof(proto_head_t);
|
|
|
@ -511,6 +657,63 @@ int Widget::protoUpdateReply(char *data, int fileType)
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int Widget::protoWaveDataUploadReply(char *data)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
mul_head_t *header = reinterpret_cast<mul_head_t*>(data + sizeof(proto_head_t));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 数据头校验. */
|
|
|
|
|
|
|
|
qDebug() << "recv:index:" << header->index << "waveIndex:" << waveIndex << "len:" << header->len << endl;
|
|
|
|
|
|
|
|
if (header->index != waveIndex
|
|
|
|
|
|
|
|
|| header->len > UPDATE_DATA_SIZE)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 获取文件. */
|
|
|
|
|
|
|
|
QFile file(waveFilePath);
|
|
|
|
|
|
|
|
if (0 == header->index)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
file.remove();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (file.open(QIODevice::WriteOnly | QIODevice::Append))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
file.write(data + sizeof(proto_head_t) + sizeof(mul_head_t), header->len);
|
|
|
|
|
|
|
|
file.close();
|
|
|
|
|
|
|
|
qDebug() << "file " << header->index << header->len;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
qDebug() << "file ERROR";
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 通知发包线程进入下个状态. */
|
|
|
|
|
|
|
|
if (header->len < UPDATE_DATA_SIZE)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
waveIndex = 0;
|
|
|
|
|
|
|
|
buttonEnable(true);
|
|
|
|
|
|
|
|
is_wave_up = false;
|
|
|
|
|
|
|
|
ui->upWaveIndexLabel->setText("下载完成");
|
|
|
|
|
|
|
|
QMessageBox::information(this, "SUCCEED", "高频录波文件下载完成.", QMessageBox::Ok);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
waveIndex = header->index + 1;
|
|
|
|
|
|
|
|
sendMsgDeviceWaveDataGet();
|
|
|
|
|
|
|
|
ui->upWaveIndexLabel->setText(QString("%1 / 8000").arg(waveIndex));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int Widget::protoState(char *data)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
char *pbody = data + sizeof(proto_head_t);
|
|
|
|
|
|
|
|
memcpy(&clientDevState, pbody, sizeof(devState));
|
|
|
|
|
|
|
|
uiDevStateRefresh();
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int Widget::paraseProtocols(char *data)
|
|
|
|
int Widget::paraseProtocols(char *data)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -562,7 +765,7 @@ int Widget::paraseProtocols(char *data)
|
|
|
|
//_debug_pkt_power_fre_get();
|
|
|
|
//_debug_pkt_power_fre_get();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case DEBUG_PRV_DEFECT:
|
|
|
|
case DEBUG_PRV_DEFECT:
|
|
|
|
//_debug_pkt_wave_get();
|
|
|
|
protoWaveDataUploadReply(data);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case DEBUG_PRV_ADJ_INFO:
|
|
|
|
case DEBUG_PRV_ADJ_INFO:
|
|
|
|
//_debug_pkt_adj_get();
|
|
|
|
//_debug_pkt_adj_get();
|
|
|
@ -574,7 +777,7 @@ int Widget::paraseProtocols(char *data)
|
|
|
|
//_debug_pkt_adj_auto();
|
|
|
|
//_debug_pkt_adj_auto();
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case DEBUG_PRV_DEV_STATE:
|
|
|
|
case DEBUG_PRV_DEV_STATE:
|
|
|
|
//_debug_pkt_dev_state_get();
|
|
|
|
protoState(data);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case DEBUG_PRV_WAVE_COL:
|
|
|
|
case DEBUG_PRV_WAVE_COL:
|
|
|
|
//_debug_pkt_wave_col();
|
|
|
|
//_debug_pkt_wave_col();
|
|
|
@ -818,6 +1021,46 @@ int Widget::sendMsgDeviceRealDataGet()
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int Widget::sendMsgDeviceWaveDataGet()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
char buf[2048] = {0};
|
|
|
|
|
|
|
|
uint32_t *crc = nullptr;
|
|
|
|
|
|
|
|
proto_head_t *header = reinterpret_cast<proto_head_t*>(buf);
|
|
|
|
|
|
|
|
mul_head_t *m_head = (mul_head_t*)(buf + sizeof(proto_head_t));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 初始化报文头. */
|
|
|
|
|
|
|
|
protoHeaderInit(header, sizeof(proto_head_t) + sizeof(mul_head_t), clientDevInfo.id, DEBUG_CT_PRV_REQUEST, DEBUG_PRV_DEFECT);
|
|
|
|
|
|
|
|
m_head->index = waveIndex;
|
|
|
|
|
|
|
|
m_head->len = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 计算校验位. */
|
|
|
|
|
|
|
|
crc = reinterpret_cast<uint32_t*>(buf + header->len);
|
|
|
|
|
|
|
|
*crc = crc32(buf, header->len);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HexPrint(__FUNCTION__, buf, header->len + 4);
|
|
|
|
|
|
|
|
writeData(buf, header->len + 4);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int Widget::sendMsgDeviceStateGet()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
char buf[2048] = {0};
|
|
|
|
|
|
|
|
uint32_t *crc = nullptr;
|
|
|
|
|
|
|
|
proto_head_t *header = reinterpret_cast<proto_head_t*>(buf);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 初始化报文头. */
|
|
|
|
|
|
|
|
protoHeaderInit(header, sizeof(proto_head_t), clientDevInfo.id, DEBUG_CT_PRV_REQUEST, DEBUG_PRV_DEV_STATE);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 计算校验位. */
|
|
|
|
|
|
|
|
crc = reinterpret_cast<uint32_t*>(buf + header->len);
|
|
|
|
|
|
|
|
*crc = crc32(buf, header->len);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HexPrint(__FUNCTION__, buf, header->len + 4);
|
|
|
|
|
|
|
|
writeData(buf, header->len + 4);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int Widget::sendMsgWaveCol()
|
|
|
|
int Widget::sendMsgWaveCol()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
char buf[2048] = {0};
|
|
|
|
char buf[2048] = {0};
|
|
|
@ -1162,7 +1405,7 @@ void Widget::on_dataRefreshAutoButton_clicked()
|
|
|
|
|
|
|
|
|
|
|
|
void Widget::on_stateRefreshButton_clicked()
|
|
|
|
void Widget::on_stateRefreshButton_clicked()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
sendMsgDeviceStateGet();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Widget::on_freRefreshButton_clicked()
|
|
|
|
void Widget::on_freRefreshButton_clicked()
|
|
|
@ -1274,3 +1517,52 @@ void Widget::on_historyDataButton_clicked()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Widget::on_waveButton_clicked()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (is_wave_up)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
is_wave_up = false;
|
|
|
|
|
|
|
|
ui->waveButton->setText("下载高频数据");
|
|
|
|
|
|
|
|
buttonEnable(true);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
QString curPath;
|
|
|
|
|
|
|
|
if (waveFilePath.isEmpty())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
curPath = QCoreApplication::applicationDirPath();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
QFileInfo info = QFileInfo(waveFilePath);
|
|
|
|
|
|
|
|
curPath = info.path();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
curPath.append("/wavefile.wave");
|
|
|
|
|
|
|
|
QString path = QFileDialog::getSaveFileName(this, tr("下载高频数据文件"), curPath, tr("data(*.*)"));
|
|
|
|
|
|
|
|
if (path.isNull() || path.isEmpty())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
QMessageBox::information(this, tr("提示"), tr("下载高频数据文件失败"));
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
waveFilePath = path;
|
|
|
|
|
|
|
|
settings->setValue("waveFile", waveFilePath);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QString temp;
|
|
|
|
|
|
|
|
temp.sprintf("%d / 8000", waveIndex);
|
|
|
|
|
|
|
|
ui->upWaveIndexLabel->setText(temp);
|
|
|
|
|
|
|
|
waveIndex = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* 关闭按钮. */
|
|
|
|
|
|
|
|
buttonEnable(false);
|
|
|
|
|
|
|
|
ui->waveButton->setEnabled(true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
is_wave_up = true;
|
|
|
|
|
|
|
|
ui->waveButton->setText("暂停高频数据");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|