-#include "dialogsettings.h"\r
+#include "dialogsettings.h"\r
#include <QDebug>\r
#include "settings.h"\r
+#include <QMetaObject>\r
DialogSettings::DialogSettings():g_dialogSettings(new Ui::Dialog())\r
{\r
g_dialogSettings->setupUi(this);\r
+// QMetaObject::connect(&settings::getInstance(),SIGNAL(update_process()),this,SLOT(update_process()));\r
update_view();\r
+\r
}\r
\r
void DialogSettings::accept()\r
{\r
qDebug()<<"accept ";\r
// this->close();\r
- settings::getInstance().create_new_database();\r
+ settings::getInstance().create_new_database();\r
this->done(1);\r
}\r
\r
// this->close();\r
this->done(0);\r
}\r
+void DialogSettings::update_process(int percent)\r
+{\r
+ if (percent>0 && percent <=100)\r
+ g_dialogSettings->progressBar->setValue(percent);\r
+}\r
\r
void DialogSettings::update_view()\r
{\r
if (mac_start.length() != 6 )\r
{\r
qDebug()<< "mac_start != 6";\r
- status.append("mac地址开始长度只能为6!\n");\r
+ status.append(QString::fromLocal8Bit("mac地址开始长度只能为6!\n"));\r
num_is_ok = false;\r
}\r
if (prefix.length() != 6)\r
{\r
qDebug()<< "prefix != 6";\r
- status.append("mac地址固定头长度只能为6!\n");\r
+ status.append(QString::fromLocal8Bit("mac地址固定头长度只能为6!\n"));\r
num_is_ok = false;\r
}\r
if (num_is_ok == true)\r
if (ret == 0)\r
status.append(settings::getInstance().getmacStatus());\r
else if (ret == 1)\r
- status.append("mac 地址数量过大");\r
+ status.append(QString::fromLocal8Bit("mac地址数量过大"));\r
else\r
- status.append("mac地址生成失败,错误码 ").append(ret);\r
+ status.append(QString::fromLocal8Bit("mac地址生成失败,错误码")).append(ret);\r
}\r
g_dialogSettings->label_mac_status->setText(status);\r
\r
-#ifndef DIALOGSETTINGS_H\r
+#ifndef DIALOGSETTINGS_H\r
#define DIALOGSETTINGS_H\r
\r
#include "ui_mac_settings.h"\r
void accept();\r
void reject();\r
void update_view();\r
+ void update_process(int percent);\r
private:\r
Ui::Dialog *g_dialogSettings;\r
};\r
<rect>\r
<x>0</x>\r
<y>0</y>\r
- <width>506</width>\r
- <height>400</height>\r
+ <width>534</width>\r
+ <height>478</height>\r
</rect>\r
</property>\r
<property name="windowTitle">\r
<widget class="QDialogButtonBox" name="buttonBox">\r
<property name="geometry">\r
<rect>\r
- <x>130</x>\r
- <y>340</y>\r
+ <x>140</x>\r
+ <y>410</y>\r
<width>341</width>\r
<height>32</height>\r
</rect>\r
共 100000 个地址</string>\r
</property>\r
</widget>\r
+ <widget class="QProgressBar" name="progressBar">\r
+ <property name="geometry">\r
+ <rect>\r
+ <x>30</x>\r
+ <y>360</y>\r
+ <width>461</width>\r
+ <height>23</height>\r
+ </rect>\r
+ </property>\r
+ <property name="value">\r
+ <number>0</number>\r
+ </property>\r
+ </widget>\r
</widget>\r
<resources/>\r
<connections>\r
-#include "mainwindow.h"\r
+#include "mainwindow.h"\r
#include "ui_mainwindow.h"\r
#include "dialogsettings.h"\r
#include <QDesktopServices>\r
ui_setting_read();\r
\r
}\r
+\r
+void MainWindow::ui_show_result(QString msg,bool success)\r
+{\r
+ ui->label_runtime_status1->setText(msg);\r
+ if (success)\r
+ {\r
+ this->write_success_count1++;\r
+ ui->label_result_success1->setText(QString::fromLocal8Bit("成功%1").arg(write_success_count1));\r
+ }else{\r
+ this->write_fail_count1++;\r
+ ui->label_result_fail1->setText(QString::fromLocal8Bit("失败%1").arg(write_fail_count1));\r
+ }\r
+ if (spp_timer_handle1->isActive())\r
+ spp_timer_handle1->stop();\r
+ waiting_cmd1=false;\r
+}\r
+\r
void MainWindow::readData1()\r
{\r
const QByteArray data = serialport1->readAll();\r
- qDebug()<<uart_rx_flag1;\r
- qDebug()<<data;\r
+// qDebug()<<uart_rx_flag1;\r
+ if(uart_rx_flag1)\r
+ qDebug()<<data;\r
+\r
+ if (working_state_1 == false)\r
+ {\r
+ qDebug()<<"写号结束,跳过读取串口";\r
+ return;\r
+ }\r
+ if (data.indexOf(BOOT_UP_MSG)>=0)\r
+ {\r
+ this->ui->label_runtime_status1->setText(QString::fromLocal8Bit("发现新设备"));\r
+ waiting_cmd1 = true;\r
+ cmd_index_1 = 0;\r
+ QString avalible_mac = settings::getInstance().getAvalibleMac();\r
+ ui->ledit_spp_addr_1->setText(avalible_mac);\r
+ ui->txtb_dispaly->clear();\r
+ }\r
+ if (waiting_cmd1 && data.indexOf(TIME_FOR_CMD)>=0)\r
+ {\r
+ uart_send_data1(ATCMD_ADD_VOTE);\r
+ }\r
+\r
if (uart_rx_flag1)\r
{//指令下达完毕,开始接收数据\r
uart_rx_buff_array1.append(data);\r
- if (uart_rx_buff_array1.indexOf("OK")>0)\r
+ if (uart_rx_buff_array1.indexOf("OK~")>0)\r
{\r
uart_rx_flag1 = false;\r
uart_process1();//开始处理当前指令结果\r
return;\r
}\r
cmd_index_1 ++; //开始执行下一指令\r
+ qDebug()<<"next cmdindex "<<cmd_index_1;\r
switch(cmd_index_1){\r
case 0:\r
{\r
\r
}\r
- break;\r
case 1:\r
+ {\r
+ this->uart_send_data1(ATCMD_GET_MAC);\r
+ }\r
+ break;\r
+ case 2:\r
{\r
QString set_mac_cmd=QString(ATCMD_SET_MAC).arg(ui->ledit_spp_addr_1->text());\r
this->uart_send_data1(set_mac_cmd);\r
}\r
break;\r
- case 2:\r
+ case 3:\r
{\r
this->uart_send_data1(ATCMD_GET_MAC);\r
}\r
break;\r
- case 3:\r
+ case 4:\r
{\r
this->uart_send_data1(ATCMD_GET_CPUID);\r
}\r
spp_timer_handle1->stop();\r
spp_timer_handle1 = nullptr;\r
}\r
- if (spp_connected_handle != nullptr) {\r
- spp_connected_handle->stop();\r
- spp_connected_handle = nullptr;\r
- }\r
+// if (spp_connected_handle != nullptr) {\r
+// spp_connected_handle->stop();\r
+// spp_connected_handle = nullptr;\r
+// }\r
ui_setting_save();\r
result_thread1->stop();\r
result_thread1->wait();\r
//处理指令结果\r
switch(cmd_index_1){\r
case 0:\r
+ ui_display1(QString::fromLocal8Bit("阻止休眠\r\n"),LOG_DIRECT_IN);\r
+ qDebug()<<"阻止休眠";\r
+ break;\r
+ case 1:\r
{\r
//检查当前的号是否已经是写过的号,放置重复写号造成的浪费。\r
int ret = uart_rx_buff_array1.indexOf(tr("28*****"));\r
bool mac_used=settings::getInstance().getMacUsed(unit.toUpper());\r
if (mac_used)\r
{\r
- ui_display1("手表地址"+unit+"已占用\r\n",LOG_DIRECT_OUT);\r
+ ui_display1(QString::fromLocal8Bit("手表地址")+unit+QString::fromLocal8Bit("已占用\r\n"),LOG_DIRECT_OUT);\r
+ ui_show_result(QString::fromLocal8Bit("Mac地址已占用"),false);\r
cmd_index_1 = -1;\r
+\r
}else{\r
- ui_display1("手表地址"+unit+" 可用!\r\n",LOG_DIRECT_IN);\r
+ ui_display1(QString::fromLocal8Bit("手表地址")+unit+QString::fromLocal8Bit(" 可用!\r\n"),LOG_DIRECT_IN);\r
}\r
\r
}else{\r
- ui_display1("get Mac failed !\r\n",LOG_DIRECT_OUT);\r
+ ui_display1(QString::fromLocal8Bit("查询手表Mac失败!\r\n"),LOG_DIRECT_OUT);\r
+ cmd_index_1 = -1;\r
+ ui_show_result(QString::fromLocal8Bit("查询手表Mac失败"),false);\r
}\r
\r
}\r
break;\r
- case 1:\r
- break;\r
case 2:\r
+ ui_display1(QString::fromLocal8Bit("执行设置地址\r\n"),LOG_DIRECT_IN);\r
+ break;\r
+ case 3:\r
{\r
// local_addr : 28*****010101\r
QString unit=ui->ledit_spp_addr_1->text();\r
qDebug()<<unit;\r
if(unit_watch.toUpper() == unit)\r
{\r
- ui_display1("set Mac "+unit_watch+" success! \r\n",LOG_DIRECT_IN);\r
+ ui_display1(QString::fromLocal8Bit("设置Mac")+unit_watch+QString::fromLocal8Bit("成功\r\n"),LOG_DIRECT_IN);\r
}else{\r
- ui_display1("set Mac "+unit_watch+" failed! \r\n",LOG_DIRECT_OUT);\r
+ ui_display1(QString::fromLocal8Bit("设置Mac")+unit_watch+QString::fromLocal8Bit("失败\r\n"),LOG_DIRECT_OUT);\r
cmd_index_1 = -2;\r
+ ui_show_result(QString::fromLocal8Bit("Mac地址已占用"),false);\r
}\r
\r
}else{\r
- ui_display1("set Mac "+unit+" failed !\r\n",LOG_DIRECT_OUT);\r
+ ui_display1(QString::fromLocal8Bit("设置Mac")+unit+QString::fromLocal8Bit("失败\r\n"),LOG_DIRECT_OUT);\r
cmd_index_1 = -3;\r
+ ui_show_result(QString::fromLocal8Bit("查询手表Mac失败"),false);\r
}\r
\r
}\r
break;\r
- case 3:\r
+ case 4:\r
{\r
int ret = uart_rx_buff_array1.indexOf("[soc id:]");\r
{\r
if (ret == 1)\r
{\r
ui->textBrowser_result->setText(settings::getInstance().getmacStatusFull());\r
+ ui_show_result(QString::fromLocal8Bit("设置mac成功"),true);\r
+ }else{\r
+ ui_show_result(QString::fromLocal8Bit("获取cpuid失败"),false);\r
}\r
+\r
}\r
+ waiting_cmd1 = false;\r
}else{\r
- ui_display1("get cpu-info failed !\r\n",LOG_DIRECT_OUT);\r
+ ui_display1(QString::fromLocal8Bit("获取cpuid失败\r\n"),LOG_DIRECT_OUT);\r
cmd_index_1 = -4;\r
+ ui_show_result(QString::fromLocal8Bit("获取cpuid失败"),false);\r
}\r
}\r
}\r
// uart_close();\r
// }\r
}\r
-void MainWindow::uart_open(QString com,QString com_baud)\r
-{\r
+//void MainWindow::uart_open(QString com,QString com_baud)\r
+//{\r
\r
-}\r
-void MainWindow::uart_close()\r
-{\r
+//}\r
+//void MainWindow::uart_close()\r
+//{\r
\r
-}\r
+//}\r
void MainWindow::uart_send_data1(QString cmd)\r
{\r
qint64 ret =0;\r
+ qDebug()<<"uart_send_data1 "<<cmd;\r
ret=serialport1->write(cmd.toUtf8());\r
m_bytesToWrite1 = ret;\r
- qDebug()<<cmd << " ret "<<m_bytesToWrite1;\r
+ qDebug()<<"uart_send_data1 "<<cmd << " ret "<<m_bytesToWrite1;\r
if (spp_timer_handle1->isActive())\r
spp_timer_handle1->stop();\r
spp_timer_handle1->start(1500);\r
free(buf);\r
}\r
\r
-void MainWindow::uart_rx_dispaly2(int buf_len, u8Piont buf)\r
-{\r
- uart_rx_flag1 = true;\r
- if (uart_rx_Ignoring_display) {\r
- QString str((char *)buf);\r
- if(str.contains("ADDR")){\r
-// ui->ledit_dongle_mac->setText(str.mid(str.indexOf("=",0)+1,12));\r
- }\r
- return;\r
- }\r
- QString str;\r
- QByteArray data((const char*)buf, buf_len);\r
-// if (ui->ckbox_Hex_Display->isChecked()) {\r
-// for (int i = 0; i < data.size(); i++) {\r
-// str += QString("%1 ").arg((quint8)data.at(i), 2, 16, QChar('0'));\r
-// }\r
-// str=str.toUpper();\r
-// } else {\r
-// for (int i = 0; i < data.size(); i++) {\r
-// str += QString(data.at(i));\r
-// }\r
-// }\r
- ui_display2(str,true);\r
- free(buf);\r
-}\r
-void MainWindow::uart_rx_dispaly3(int buf_len, u8Piont buf)\r
-{\r
- uart_rx_flag1 = true;\r
- if (uart_rx_Ignoring_display) {\r
- QString str((char *)buf);\r
- if(str.contains("ADDR")){\r
-// ui->ledit_dongle_mac->setText(str.mid(str.indexOf("=",0)+1,12));\r
- }\r
- return;\r
- }\r
- QString str;\r
- QByteArray data((const char*)buf, buf_len);\r
-// if (ui->ckbox_Hex_Display->isChecked()) {\r
-// for (int i = 0; i < data.size(); i++) {\r
-// str += QString("%1 ").arg((quint8)data.at(i), 2, 16, QChar('0'));\r
-// }\r
-// str=str.toUpper();\r
-// } else {\r
-// for (int i = 0; i < data.size(); i++) {\r
-// str += QString(data.at(i));\r
-// }\r
-// }\r
- ui_display3(str,true);\r
- free(buf);\r
-}\r
-void MainWindow::uart_rx_dispaly4(int buf_len, u8Piont buf)\r
-{\r
- uart_rx_flag1 = true;\r
- if (uart_rx_Ignoring_display) {\r
- QString str((char *)buf);\r
- if(str.contains("ADDR")){\r
-// ui->ledit_dongle_mac->setText(str.mid(str.indexOf("=",0)+1,12));\r
- }\r
- return;\r
- }\r
- QString str;\r
- QByteArray data((const char*)buf, buf_len);\r
-// if (ui->ckbox_Hex_Display->isChecked()) {\r
-// for (int i = 0; i < data.size(); i++) {\r
-// str += QString("%1 ").arg((quint8)data.at(i), 2, 16, QChar('0'));\r
-// }\r
-// str=str.toUpper();\r
-// } else {\r
-// for (int i = 0; i < data.size(); i++) {\r
-// str += QString(data.at(i));\r
-// }\r
-// }\r
- ui_display4(str,true);\r
- free(buf);\r
-}\r
-\r
void MainWindow::uart_com_select()\r
{\r
ui->cbox_uart_com_select_1->clear();\r
void MainWindow::spp_timer_callback1()\r
{\r
uart_rx_flag1 = false;\r
- ui_display1(ui->cbox_uart_com_select_1->currentText()+tr(" send cmd fail!"),false);\r
+// ui_display1(ui->cbox_uart_com_select_1->currentText()+QString::fromLocal8Bit("AT指令指令超时!\r\n"),false);\r
+ ui_display1(QString::fromLocal8Bit("AT指令指令超时!\r\n"),false);\r
if (spp_timer_handle1->isActive())\r
spp_timer_handle1->stop();\r
\r
}\r
+\r
+\r
void MainWindow::spp_connect_1()\r
{\r
+ if (working_state_1 == false)\r
+ {\r
+ QString baud_rate = ui->cbox_uart_baud_select->currentText();\r
+ QString com_name = ui->cbox_uart_com_select_1->currentText();\r
+\r
+ serialport1->setPortName(com_name);\r
+ serialport1->setBaudRate(baud_rate.toInt());\r
+ serialport1->setDataBits(QSerialPort::DataBits::Data8);\r
+ serialport1->setParity(QSerialPort::Parity::NoParity);\r
+ serialport1->setStopBits(QSerialPort::StopBits::OneStop);\r
+ serialport1->setFlowControl(QSerialPort::FlowControl::NoFlowControl);\r
+\r
+ ui->txtb_dispaly->clear();\r
+ if (serialport1->isOpen())\r
+ {\r
+ this->cmd_index_1 = 0;\r
+// this->uart_send_data1(ATCMD_GET_MAC);\r
+\r
+ //\r
+ }else{\r
+ if (serialport1->open(QIODevice::ReadWrite)) {\r
+ // serialport1->setEnabled(true);\r
+ // serialport1->setLocalEchoEnabled(false);\r
+\r
+ connect(serialport1, &QSerialPort::readyRead, this, &MainWindow::readData1);\r
+ connect(serialport1, &QSerialPort::bytesWritten, this, &MainWindow::handleBytesWritten1);\r
+ this->cmd_index_1 = 0;\r
+// this->uart_send_data1(ATCMD_GET_MAC);\r
+ // serialport1->close();\r
+ // disconnect(serialport1, &QSerialPort::readyRead, this, &MainWindow::readData1);\r
+\r
+ } else {\r
+ QMessageBox::critical(this, tr("Error"), serialport1->errorString());\r
\r
- QString baud_rate = ui->cbox_uart_baud_select->currentText();\r
- QString com_name = ui->cbox_uart_com_select_1->currentText();\r
+ ui_display1(tr("Open error\r\n"),false);\r
+ return;\r
+ }\r
+ }\r
\r
- QString avalible_mac = settings::getInstance().getAvalibleMac();\r
- int ret =0;\r
- ui->ledit_spp_addr_1->setText(avalible_mac);\r
-// ret = settings::getInstance().set_mac_used(avalible_mac,"",true);\r
+ // 开始工作\r
+ working_state_1 = true;\r
+ write_fail_count1= 0;\r
+ write_success_count1 =0;\r
+ ui->label_result_fail1->setText(QString::fromLocal8Bit("失败%1").arg(write_fail_count1));\r
+ ui->label_result_success1->setText(QString::fromLocal8Bit("成功%1").arg(write_success_count1));\r
+ ui->pbtn_spp_reconnect_1->setText(QString::fromLocal8Bit("停止写地址"));\r
+ ui->label_runtime_status1->setText(QString::fromLocal8Bit("等待手表开机"));\r
\r
-// qDebug()<< "set mac "<< avalible_mac<<" used , ret "<< ret;\r
+// QString avalible_mac = settings::getInstance().getAvalibleMac();\r
+// ui->ledit_spp_addr_1->setText(avalible_mac);\r
+// int ret =0;\r
+ // ret = settings::getInstance().set_mac_used(avalible_mac,"",true);\r
\r
+ // qDebug()<< "set mac "<< avalible_mac<<" used , ret "<< ret;\r
\r
- qDebug()<<settings::getInstance().getmacStatusFull();\r
- ui->txtb_dispaly->clear();\r
\r
- serialport1->setPortName(com_name);\r
- serialport1->setBaudRate(baud_rate.toInt());\r
- serialport1->setDataBits(QSerialPort::DataBits::Data8);\r
- serialport1->setParity(QSerialPort::Parity::NoParity);\r
- serialport1->setStopBits(QSerialPort::StopBits::OneStop);\r
- serialport1->setFlowControl(QSerialPort::FlowControl::NoFlowControl);\r
- if (serialport1->isOpen())\r
- {\r
- this->cmd_index_1 = 0;\r
- this->uart_send_data1(ATCMD_GET_MAC);\r
+ qDebug()<<settings::getInstance().getmacStatusFull();\r
\r
-//\r
- }else{\r
- if (serialport1->open(QIODevice::ReadWrite)) {\r
-// serialport1->setEnabled(true);\r
-// serialport1->setLocalEchoEnabled(false);\r
\r
- connect(serialport1, &QSerialPort::readyRead, this, &MainWindow::readData1);\r
- connect(serialport1, &QSerialPort::bytesWritten, this, &MainWindow::handleBytesWritten1);\r
- this->cmd_index_1 = 0;\r
- this->uart_send_data1(ATCMD_GET_MAC);\r
-// serialport1->close();\r
-// disconnect(serialport1, &QSerialPort::readyRead, this, &MainWindow::readData1);\r
\r
- } else {\r
- QMessageBox::critical(this, tr("Error"), serialport1->errorString());\r
+ }else{\r
+ //停止工作\r
+ ui->pbtn_spp_reconnect_1->setText(QString::fromLocal8Bit("开始写地址"));\r
+ ui->label_runtime_status1->setText(QString::fromLocal8Bit("已停止写地址..."));\r
+ working_state_1 = false;\r
+ ui->txtb_dispaly->clear();\r
+ if(serialport1->isOpen())\r
+ serialport1->close();\r
+ disconnect(serialport1, &QSerialPort::readyRead, this, &MainWindow::readData1);\r
+ disconnect(serialport1, &QSerialPort::bytesWritten, this, &MainWindow::handleBytesWritten1);\r
+\r
\r
- ui_display1(tr("Open error"),false);\r
- }\r
}\r
\r
+\r
// this->serialport1->setBaudRate()\r
// ui_display1("connect com1 ",false);\r
}\r
m_bytesToWrite1 -= bytes;\r
if (m_bytesToWrite1 == 0)\r
{\r
- uart_rx_buff_array1.clear();\r
uart_rx_flag1 = true;\r
+ uart_rx_buff_array1.clear();\r
}\r
}\r
void MainWindow::spp_connect_2()\r
void MainWindow::spp_connect_all()\r
{\r
uart_rx_Ignoring_display = true;\r
- dongle_is_connected = false;\r
- dongle_try_count = 0;\r
- spp_try_count = 0;\r
+// dongle_is_connected = false;\r
+// dongle_try_count = 0;\r
+// spp_try_count = 0;\r
// uapi_uart_callback_register(uart_callback);\r
// at_handler->at_send_cmd_board(DONGLE_MODE_ADDR,NULL);\r
ui_display1("spp connectting...",false);\r
// ui->pbtn_spp_connect->setEnabled(false);\r
}\r
\r
-void MainWindow::at_check_send_status(bool flag)\r
-{\r
- if(flag){\r
- ui_display1("at cmd send success.\r\n",false);\r
- }else{\r
- QMessageBox::warning(this, tr("AT"), tr("AT send fail!\r\n"), QMessageBox::Ok);\r
- ui_display1("at cmd send fail.\r\n",false);\r
- }\r
-}\r
+//void MainWindow::at_check_send_status(bool flag)\r
+//{\r
+// if(flag){\r
+// ui_display1("at cmd send success.\r\n",false);\r
+// }else{\r
+// QMessageBox::warning(this, tr("AT"), tr("AT send fail!\r\n"), QMessageBox::Ok);\r
+// ui_display1("at cmd send fail.\r\n",false);\r
+// }\r
+//}\r
\r
void MainWindow::ui_open_mac_config()\r
{\r
-#ifndef MAINWINDOW_H\r
+#ifndef MAINWINDOW_H\r
#define MAINWINDOW_H\r
\r
#include <Windows.h>\r
\r
private:\r
Ui::MainWindow *ui;\r
-\r
+ bool LOG_DIRECT_OUT=false;\r
+ bool LOG_DIRECT_IN=true;\r
/* ------------------------uart------------------------------- */\r
Result_Thread *result_thread1;\r
- Result_Thread *result_thread2;\r
- Result_Thread *result_thread3;\r
- Result_Thread *result_thread4;\r
\r
- QSerialPort *serialport1;\r
- QSerialPort *serialport2;\r
- QSerialPort *serialport3;\r
- QSerialPort *serialport4;\r
\r
+ /*----------写地址任务相关变量---------------*/\r
+ QSerialPort *serialport1;\r
//指令长度\r
qint64 m_bytesToWrite1=0;\r
//指令顺序, AT =0 , SET_MAC = 1 , GET_MAC = 2 , GET_CPUINFO = 3;\r
int cmd_index_1=0;\r
+ int write_success_count1=0;\r
+ int write_fail_count1=0;\r
\r
// 是否忽略uart数据,不回显\r
bool uart_rx_Ignoring_display {false};\r
// 是否有uart通路数据上报\r
bool uart_rx_flag1 {false};\r
QByteArray uart_rx_buff_array1;\r
- bool LOG_DIRECT_OUT=false;\r
- bool LOG_DIRECT_IN=true;\r
+ QTimer *spp_timer_handle1 {nullptr};\r
+ bool working_state_1=false; //true 说明写号执行过程中,false说明写号结束\r
+ bool waiting_cmd1 = false;//发现开机后,等待下达cmd指令\r
+ void ui_display1(QString str,bool inOrOut);\r
+ void ui_show_result(QString msg,bool success);\r
\r
+ /*----------写地址任务相关变量---end------------*/\r
\r
- bool dongle_is_connected {false};\r
- int dongle_connected_times {0};\r
+\r
+// bool dongle_is_connected {false};\r
+// int dongle_connected_times {0};\r
QStringList uart_get_enable_comm_or_port();\r
QString uart_get_comm_or_port(int nIndex, bool bValue);\r
- void uart_open(QString com,QString com_band);\r
- void uart_close();\r
+\r
/* ------------------------spp-------------------------------- */\r
- QTimer *spp_timer_handle1 {nullptr};\r
- QTimer *spp_connected_handle {nullptr};\r
- int dongle_try_count {0};\r
- int spp_try_count {0};\r
+\r
+// QTimer *spp_connected_handle {nullptr};\r
+// int dongle_try_count {0};\r
+// int spp_try_count {0};\r
+\r
+ void uart_send_data1(QString cmd);\r
+\r
+\r
+ QSerialPort *serialport2;\r
+ QSerialPort *serialport3;\r
+ QSerialPort *serialport4;\r
+ Result_Thread *result_thread2;\r
+ Result_Thread *result_thread3;\r
+ Result_Thread *result_thread4;\r
+\r
\r
/* -------------------------UI------------------------------- */\r
enum ui_page{\r
};\r
void ui_setting_save();\r
void ui_setting_read();\r
- void ui_display1(QString str,bool inOrOut);\r
+\r
+\r
void ui_display2(QString str,bool inOrOut);\r
void ui_display3(QString str,bool inOrOut);\r
void ui_display4(QString str,bool inOrOut);\r
- void at_check_send_status(bool flag);\r
-\r
+// void at_check_send_status(bool flag);\r
\r
- void uart_send_data1(QString cmd);\r
void uart_send_data2(QString cmd);\r
void uart_send_data3(QString cmd);\r
void uart_send_data4(QString cmd);\r
/* --------------------------UI------------------------------ */\r
void ui_save_windows();\r
/* -------------------------uart----------------------------- */\r
- void uart_process1();\r
- void uart_process2();\r
- void uart_process3();\r
- void uart_process4();\r
- void readData1();\r
- void readData2();\r
- void readData3();\r
- void readData4();\r
- void handleBytesWritten1(qint64 bytes);\r
- void uart_rx_dispaly1(int buf_len, u8Piont buf);\r
- void uart_rx_dispaly2(int buf_len, u8Piont buf);\r
- void uart_rx_dispaly3(int buf_len, u8Piont buf);\r
- void uart_rx_dispaly4(int buf_len, u8Piont buf);\r
+\r
+\r
+\r
void uart_com_select();\r
void uart_com_switch(QString com);\r
void uart_baud_switch(QString baud);\r
+\r
+ /* -------------------------cfg------------------------------- */\r
+ void ui_open_mac_config();\r
+\r
+ /* ------------------------------------------------------------- */\r
+ void openLogfolder();\r
/* -------------------------spp------------------------------- */\r
- void spp_connect_all();\r
+\r
+ /**********串口写地址任务相关 slot定义*******************************/\r
+ //读取串口返回数据\r
+ void readData1();\r
+ //解析返回指令\r
+ void uart_process1();\r
+ //执行连接com并开始等待设备开机,断开串口连接,并停止接收数据\r
void spp_connect_1();\r
+ //检测指令是否超时\r
+ void spp_timer_callback1();\r
+ //检测指令是否下达完成\r
+ void handleBytesWritten1(qint64 bytes);\r
+\r
+ /*****************************************/\r
+\r
+ void readData2();\r
+ void readData3();\r
+ void readData4();\r
+ void uart_process2();\r
+ void uart_process3();\r
+ void uart_process4();\r
void spp_connect_2();\r
void spp_connect_3();\r
void spp_connect_4();\r
- void spp_timer_callback1();\r
void spp_timer_callback2();\r
void spp_timer_callback3();\r
void spp_timer_callback4();\r
\r
+ void spp_connect_all();\r
void spp_connected_callback();\r
- /* -------------------------cfg------------------------------- */\r
- void ui_open_mac_config();\r
+ void uart_rx_dispaly1(int buf_len, u8Piont buf);\r
\r
- /* ------------------------------------------------------------- */\r
- void openLogfolder();\r
};\r
#endif // MAINWINDOW_H\r
<rect>\r
<x>0</x>\r
<y>0</y>\r
- <width>1354</width>\r
- <height>694</height>\r
+ <width>1398</width>\r
+ <height>758</height>\r
</rect>\r
</property>\r
<property name="font">\r
</font>\r
</property>\r
<property name="windowTitle">\r
- <string>BTMacWriteTool V1.0</string>\r
+ <string>BTMacWriteTool V1.1</string>\r
</property>\r
<property name="windowIcon">\r
<iconset>\r
<widget class="QWidget" name="verticalLayoutWidget_2">\r
<property name="geometry">\r
<rect>\r
- <x>1040</x>\r
- <y>10</y>\r
+ <x>1060</x>\r
+ <y>20</y>\r
<width>306</width>\r
- <height>621</height>\r
+ <height>701</height>\r
</rect>\r
</property>\r
<property name="font">\r
<widget class="QSplitter" name="splitter">\r
<property name="geometry">\r
<rect>\r
- <x>0</x>\r
- <y>10</y>\r
+ <x>10</x>\r
+ <y>20</y>\r
<width>1032</width>\r
- <height>621</height>\r
+ <height>701</height>\r
</rect>\r
</property>\r
<property name="font">\r
</property>\r
</widget>\r
</item>\r
+ <item>\r
+ <layout class="QHBoxLayout" name="horizontalLayout">\r
+ <item>\r
+ <widget class="QLabel" name="label_result_success1">\r
+ <property name="autoFillBackground">\r
+ <bool>false</bool>\r
+ </property>\r
+ <property name="styleSheet">\r
+ <string notr="true">color:rgb(0, 170, 0);\r
+font: 75 18pt "Agra";</string>\r
+ </property>\r
+ <property name="lineWidth">\r
+ <number>0</number>\r
+ </property>\r
+ <property name="text">\r
+ <string>成功0</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QLabel" name="label_result_fail1">\r
+ <property name="autoFillBackground">\r
+ <bool>false</bool>\r
+ </property>\r
+ <property name="styleSheet">\r
+ <string notr="true">color:rgb(170, 0, 0);\r
+font: 75 18pt "Agra";</string>\r
+ </property>\r
+ <property name="lineWidth">\r
+ <number>0</number>\r
+ </property>\r
+ <property name="text">\r
+ <string>失败0</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ <item>\r
+ <widget class="QLabel" name="label_runtime_status1">\r
+ <property name="text">\r
+ <string>已停止写地址...</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
</layout>\r
</widget>\r
<widget class="QWidget" name="verticalLayoutWidget_3">\r
</property>\r
</widget>\r
</item>\r
+ <item>\r
+ <layout class="QHBoxLayout" name="horizontalLayout_2">\r
+ <item>\r
+ <widget class="QLabel" name="label_result_success2">\r
+ <property name="autoFillBackground">\r
+ <bool>false</bool>\r
+ </property>\r
+ <property name="styleSheet">\r
+ <string notr="true">color:rgb(0, 170, 0);\r
+font: 75 18pt "Agra";</string>\r
+ </property>\r
+ <property name="lineWidth">\r
+ <number>0</number>\r
+ </property>\r
+ <property name="text">\r
+ <string>成功0</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QLabel" name="label_result_fail2">\r
+ <property name="autoFillBackground">\r
+ <bool>false</bool>\r
+ </property>\r
+ <property name="styleSheet">\r
+ <string notr="true">color:rgb(170, 0, 0);\r
+font: 75 18pt "Agra";</string>\r
+ </property>\r
+ <property name="lineWidth">\r
+ <number>0</number>\r
+ </property>\r
+ <property name="text">\r
+ <string>失败0</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ <item>\r
+ <widget class="QLabel" name="label_runtime_status2">\r
+ <property name="text">\r
+ <string>已停止写地址...</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
</layout>\r
</widget>\r
<widget class="QWidget" name="verticalLayoutWidget_4">\r
</property>\r
</widget>\r
</item>\r
+ <item>\r
+ <layout class="QHBoxLayout" name="horizontalLayout_3">\r
+ <item>\r
+ <widget class="QLabel" name="label_result_success3">\r
+ <property name="autoFillBackground">\r
+ <bool>false</bool>\r
+ </property>\r
+ <property name="styleSheet">\r
+ <string notr="true">color:rgb(0, 170, 0);\r
+font: 75 18pt "Agra";</string>\r
+ </property>\r
+ <property name="lineWidth">\r
+ <number>0</number>\r
+ </property>\r
+ <property name="text">\r
+ <string>成功0</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QLabel" name="label_result_fail3">\r
+ <property name="autoFillBackground">\r
+ <bool>false</bool>\r
+ </property>\r
+ <property name="styleSheet">\r
+ <string notr="true">color:rgb(170, 0, 0);\r
+font: 75 18pt "Agra";</string>\r
+ </property>\r
+ <property name="lineWidth">\r
+ <number>0</number>\r
+ </property>\r
+ <property name="text">\r
+ <string>失败0</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ <item>\r
+ <widget class="QLabel" name="label_runtime_status3">\r
+ <property name="text">\r
+ <string>已停止写地址...</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
</layout>\r
</widget>\r
<widget class="QWidget" name="verticalLayoutWidget_5">\r
</property>\r
</widget>\r
</item>\r
+ <item>\r
+ <layout class="QHBoxLayout" name="horizontalLayout_4">\r
+ <item>\r
+ <widget class="QLabel" name="label_result_success4">\r
+ <property name="autoFillBackground">\r
+ <bool>false</bool>\r
+ </property>\r
+ <property name="styleSheet">\r
+ <string notr="true">color:rgb(0, 170, 0);\r
+font: 75 18pt "Agra";</string>\r
+ </property>\r
+ <property name="lineWidth">\r
+ <number>0</number>\r
+ </property>\r
+ <property name="text">\r
+ <string>成功0</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ <item>\r
+ <widget class="QLabel" name="label_result_fail4">\r
+ <property name="autoFillBackground">\r
+ <bool>false</bool>\r
+ </property>\r
+ <property name="styleSheet">\r
+ <string notr="true">color:rgb(170, 0, 0);\r
+font: 75 18pt "Agra";</string>\r
+ </property>\r
+ <property name="lineWidth">\r
+ <number>0</number>\r
+ </property>\r
+ <property name="text">\r
+ <string>失败0</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
+ </layout>\r
+ </item>\r
+ <item>\r
+ <widget class="QLabel" name="label_runtime_status4">\r
+ <property name="text">\r
+ <string>已停止写地址...</string>\r
+ </property>\r
+ </widget>\r
+ </item>\r
</layout>\r
</widget>\r
</widget>\r
</customwidgets>\r
<resources/>\r
<connections>\r
- <connection>\r
- <sender>pbtn_spp_reconnect_1</sender>\r
- <signal>clicked()</signal>\r
- <receiver>MainWindow</receiver>\r
- <slot>spp_connect_1()</slot>\r
- <hints>\r
- <hint type="sourcelabel">\r
- <x>126</x>\r
- <y>126</y>\r
- </hint>\r
- <hint type="destinationlabel">\r
- <x>676</x>\r
- <y>346</y>\r
- </hint>\r
- </hints>\r
- </connection>\r
<connection>\r
<sender>pbtn_spp_reconnect_2</sender>\r
<signal>clicked()</signal>\r
</hint>\r
</hints>\r
</connection>\r
+ <connection>\r
+ <sender>pbtn_spp_reconnect_1</sender>\r
+ <signal>clicked()</signal>\r
+ <receiver>MainWindow</receiver>\r
+ <slot>spp_connect_1()</slot>\r
+ <hints>\r
+ <hint type="sourcelabel">\r
+ <x>126</x>\r
+ <y>126</y>\r
+ </hint>\r
+ <hint type="destinationlabel">\r
+ <x>676</x>\r
+ <y>346</y>\r
+ </hint>\r
+ </hints>\r
+ </connection>\r
</connections>\r
<slots>\r
<slot>ui_open_mac_config()</slot>\r
<slot>spp_timer_callback2()</slot>\r
<slot>spp_timer_callback3()</slot>\r
<slot>spp_timer_callback4()</slot>\r
- <slot>uart_rx_dispaly2(int,uint8_t*)</slot>\r
- <slot>uart_rx_dispaly3(int,uint8_t*)</slot>\r
- <slot>uart_rx_dispaly4(int,uint8_t*)</slot>\r
</slots>\r
</ui>\r
--- /dev/null
+[Uart_setting]\r
+uart_com=COM222\r
+uart_baud=11\r
-#include "settings.h"\r
+#include "settings.h"\r
#include <QSettings>\r
#include <QDebug>\r
settings* settings::instance = NULL;\r
qDebug()<<"数量过多";\r
ret = 1;\r
}\r
-\r
-\r
- qDebug()<<"格式正确? "<<mac_status_flag;\r
+ mac_start_fullstr=mac_pre_head_hexstr+mac_start_hexstr;\r
+ mac_end_fullstr=mac_pre_head_hexstr+mac_end_hexstr;\r
+ qDebug()<<QString::fromLocal8Bit("格式正确?")<<mac_status_flag << " ret " << ret;\r
return ret;\r
}\r
bool settings::getMacUsed(QString mac)\r
QString ret="";\r
if (mac_status_flag == false)\r
{\r
- ret.append("mac地址格式错误");\r
+ ret.append(QString::fromLocal8Bit("mac地址格式错误"));\r
}else\r
{\r
\r
ret.append(mac_start_fullstr);\r
- ret.append("直到");\r
+ ret.append(QString::fromLocal8Bit("直到"));\r
ret.append(mac_end_fullstr).append("\n");\r
- ret.append( "总共" );\r
- ret.append(QString().setNum(mac_count)).append("个地址");\r
+ ret.append( QString::fromLocal8Bit("总共") );\r
+ ret.append(QString().setNum(mac_count)).append(QString::fromLocal8Bit("个地址"));\r
\r
}\r
return ret;\r
{\r
int used_count = sqlitemanager->get_mac_used_count();\r
QString ret = getmacStatus();\r
- ret = ret.append("\n已用%1").arg(used_count);\r
- ret = ret.append("\n剩余%1").arg(mac_count-used_count);\r
+ ret = ret.append(QString::fromLocal8Bit("\n已用%1")).arg(used_count);\r
+ ret = ret.append(QString::fromLocal8Bit("\n剩余%1")).arg(mac_count-used_count);\r
return ret;\r
}\r
\r
QString mac_end_str = QString("%1").arg((mac_start+i), 6, 16, QLatin1Char( '0' )).toUpper();\r
mac_tmp.append(mac_end_str);\r
ret = sqlitemanager->insert_mac_addr(i,mac_tmp);\r
+// emit update_process(i/mac_count);\r
qDebug()<< "insert "<< i <<" "<< mac_tmp <<" ret " << ret;\r
}\r
return ret;\r
return 1;\r
}\r
\r
-settings::settings()\r
+settings::settings(QObject *parent): QObject(parent)\r
{\r
// QSettings *settings = new QSettings(setting_path, QSettings::IniFormat);\r
\r
//// settings->setValue("spp_addr", ui->ledit_spp_addr->text());\r
// settings->sync();\r
// settings->endGroup();\r
-//// // 写入第二组数据\r
-//// settings->beginGroup("Download_Setting");\r
-//// settings->setValue("download_board_path", ui->ledit_formboad_bordpath->text());\r
-//// settings->setValue("download_local_path", ui->ledit_frombord_savefilepath->text());\r
-//// settings->sync();\r
-//// settings->endGroup();\r
-\r
-//// settings->beginGroup("Upload_Setting");\r
-//// settings->setValue("upload_board_path", ui->ledit_toboard_boardpath->text());\r
-//// settings->setValue("upload_local_path", ui->ledit_toboard_filepath->text());\r
-//// settings->sync();\r
-//// settings->endGroup();\r
-\r
-//// settings->beginGroup("At_Setting");\r
-//// settings->setValue("at_mediamusicplay", ui->ledit_at_mediamusicplay->text());\r
-//// settings->setValue("at_mediaaudiorecord", ui->ledit_at_mediaaudiorecord->text());\r
-//// settings->setValue("at_fsrm", ui->ledit_at_fsrm->text());\r
-//// settings->setValue("at_delay_ms", ui->ledit_delay_ms->text());\r
-//// settings->setValue("at_spp_addr", ui->ledit_dongle_mac->text());\r
-//// settings->setValue("custom_module_id", ui->ledit_at_custom_moduleId->text());\r
-//// settings->setValue("custom_cmd_id", ui->ledit_at_custom_CmdId->text());\r
-//// settings->setValue("custom_payload", ui->ledit_at_custom_Payload->text());\r
-//// settings->sync();\r
-//// settings->endGroup();\r
\r
// delete settings;\r
// settings = nullptr;\r
-#ifndef SETTINGS_H\r
+#ifndef SETTINGS_H\r
#define SETTINGS_H\r
#include <QByteArray>\r
#include <QString>\r
#include <QDateTime>\r
+#include <QObject>\r
#include "sqldbmanager.h"\r
\r
/*\r
\r
*/\r
#define ATCMD_SET_MAC "AT^BTADDR=%1 6\r\n"\r
+/*gap_scan_mode_changed_callback mode: 4\r
+bluetooth_set_local_addr OK\r
+OK~\r
+*/\r
#define ATCMD_GET_CPUID "AT^GETIDS\r\n"\r
+/*\r
+» AT^GETIDS\r
+« APP|charger not plugged ,disable charge !\r
+[nandflash id:] c881\r
+[norflash id:] 1860c8\r
+[sdk id:]1.3.85\r
+[soc id:]\r
+0x0974 0x1744 0xEF04 0x2185\r
+0xBDD7 0xC80B 0x030A 0x7578\r
+0x8221 0x0001\r
+\r
+OK~\r
+*/\r
#define ATCMD_GET_MAC "AT^BTADDR?\r\n"\r
+/*\r
+» AT^BTADDR?\r
+« package_common_cmd_to_bt strCmd 36 5A 00 03 00 09 05 BA 62 inParam (null) para_len 0\r
+commandID = 0x5 payload_len=0\r
+bt_manager_at_process cmdId=0x5 atId=0x905\r
\r
+local_addr : 28*****010101\r
\r
+OK~\r
+*/\r
+#define BOOT_UP_MSG "yaffs filesystem init start"\r
+#define TIME_FOR_CMD "bt enable_bt_stack ret"\r
+#define ATCMD_ADD_VOTE "AT^PMADDVOTE\r\n"\r
+/*\r
+AT^PMADDVOTE\r
+MCU has got pm_id_debug vote\r
+MCU WAKEUP SUCCESS\r
+OK~\r
+*/\r
+#define ATCMD_REMOVE_VOTE "AT^PMRMVOTE\r\n"\r
+/*\r
+AT^PMADDVOTE\r
+MCU SLEEP SUCCESS\r
+OK~\r
+*/\r
#define MAC_LEN 12\r
-class settings\r
+class settings : public QObject\r
{\r
+// Q_OBJECT\r
+\r
public:\r
static settings& getInstance(); //获取settings的唯一对象\r
static void release();\r
\r
-\r
-\r
- settings();\r
+ settings(QObject *parent=nullptr);\r
int create_new_database();\r
void load_settings();\r
int mac_config(QString _mac_pre,QString _mac_count,QString _mac_start_hexstr);\r
QString getAvalibleMac();\r
QString getmacStatus();\r
QString getmacStatusFull();\r
+\r
+//Q_SIGNALS:\r
+// void update_process(int percent);\r
+\r
private:\r
int gen_new_mac();\r
QString setting_path="Setting.ini";\r