From: SnickerSun Date: Mon, 11 Nov 2024 06:23:21 +0000 (+0800) Subject: release V1.0 可以单个串口写mac地址 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=e3df9746299adc42bc6366df160553c633f90c90;p=mirrors%2Ffactory_tool.git release V1.0 可以单个串口写mac地址 --- diff --git a/debug/at_data.obj b/debug/at_data.obj deleted file mode 100644 index 2b32fa7..0000000 Binary files a/debug/at_data.obj and /dev/null differ diff --git a/debug/custom.obj b/debug/custom.obj deleted file mode 100644 index 1df2882..0000000 Binary files a/debug/custom.obj and /dev/null differ diff --git a/debug/factory_tool.exe b/debug/factory_tool.exe deleted file mode 100644 index 9e8ace8..0000000 Binary files a/debug/factory_tool.exe and /dev/null differ diff --git a/debug/factory_tool.ilk b/debug/factory_tool.ilk deleted file mode 100644 index b647048..0000000 Binary files a/debug/factory_tool.ilk and /dev/null differ diff --git a/debug/factory_tool.pdb b/debug/factory_tool.pdb deleted file mode 100644 index c21528e..0000000 Binary files a/debug/factory_tool.pdb and /dev/null differ diff --git a/debug/factory_tool.vc.pdb b/debug/factory_tool.vc.pdb deleted file mode 100644 index 192ebff..0000000 Binary files a/debug/factory_tool.vc.pdb and /dev/null differ diff --git a/debug/main.obj b/debug/main.obj deleted file mode 100644 index c684f34..0000000 Binary files a/debug/main.obj and /dev/null differ diff --git a/debug/mainwindow.obj b/debug/mainwindow.obj deleted file mode 100644 index 3fe4735..0000000 Binary files a/debug/mainwindow.obj and /dev/null differ diff --git a/debug/moc_custom.obj b/debug/moc_custom.obj deleted file mode 100644 index 7bf1955..0000000 Binary files a/debug/moc_custom.obj and /dev/null differ diff --git a/debug/moc_mainwindow.obj b/debug/moc_mainwindow.obj deleted file mode 100644 index a37458f..0000000 Binary files a/debug/moc_mainwindow.obj and /dev/null differ diff --git a/debug/mythread.obj b/debug/mythread.obj deleted file mode 100644 index 74e3a86..0000000 Binary files a/debug/mythread.obj and /dev/null differ diff --git a/debug/result_thread.obj b/debug/result_thread.obj deleted file mode 100644 index 5cedc10..0000000 Binary files a/debug/result_thread.obj and /dev/null differ diff --git a/debug/wrtm_class.obj b/debug/wrtm_class.obj deleted file mode 100644 index dd9534d..0000000 Binary files a/debug/wrtm_class.obj and /dev/null differ diff --git a/mac_settings.ui b/mac_settings.ui index db2950e..a7d8abd 100644 --- a/mac_settings.ui +++ b/mac_settings.ui @@ -102,6 +102,9 @@ + + false + 30 @@ -136,7 +139,7 @@ - 1000 + 2000 diff --git a/mainwindow.cpp b/mainwindow.cpp index 0d0b57f..4075c0e 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -2,14 +2,19 @@ #include "ui_mainwindow.h" #include "dialogsettings.h" #include +#include // 初始化线程、状态寄存器、配置信息 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); - serialport1 = new QSerialPort(); - serialport2 = new QSerialPort(); - serialport3 = new QSerialPort(); - serialport4 = new QSerialPort(); + serialport1 = new QSerialPort(this); + serialport2 = new QSerialPort(this); + serialport3 = new QSerialPort(this); + serialport4 = new QSerialPort(this); + + spp_timer_handle1 = new QTimer(this); + connect(spp_timer_handle1, SIGNAL(timeout()), this, SLOT(spp_timer_callback1())); + result_thread1 = new Result_Thread(this,1); result_thread2 = new Result_Thread(this,2); result_thread3 = new Result_Thread(this,3); @@ -23,12 +28,72 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi result_thread4->start(); result_thread4->pause(); ui_setting_read(); - connect(serialport1, &QSerialPort::readyRead, this, &MainWindow::readData1); + } void MainWindow::readData1() { const QByteArray data = serialport1->readAll(); + qDebug()<0) + { + uart_rx_flag1 = false; + uart_process1();//开始处理当前指令结果 + if (cmd_index_1 <0) + { + if (spp_timer_handle1->isActive()) + spp_timer_handle1->stop(); + return; + } + cmd_index_1 ++; //开始执行下一指令 + switch(cmd_index_1){ + case 0: + { + + } + break; + case 1: + { + QString set_mac_cmd=QString(ATCMD_SET_MAC).arg(ui->ledit_spp_addr_1->text()); + this->uart_send_data1(set_mac_cmd); + } + break; + case 2: + { + this->uart_send_data1(ATCMD_GET_MAC); + } + break; + case 3: + { + this->uart_send_data1(ATCMD_GET_CPUID); + } + break; + default: + { + cmd_index_1=-1; + if (spp_timer_handle1->isActive()) + spp_timer_handle1->stop(); + } + break; + } + } + else{ + + } + } + + + +// m_timer->stop(); + + + +// { +// ui_display1(data,false); +// } // m_console->putData(data); } void MainWindow::readData2() @@ -52,13 +117,13 @@ void MainWindow::readData4() // 结束线程 MainWindow::~MainWindow() { - if (spp_timer_handle != NULL) { - spp_timer_handle->stop(); - spp_timer_handle = NULL; + if (spp_timer_handle1 != nullptr) { + spp_timer_handle1->stop(); + spp_timer_handle1 = nullptr; } - if (spp_connected_handle != NULL) { + if (spp_connected_handle != nullptr) { spp_connected_handle->stop(); - spp_connected_handle = NULL; + spp_connected_handle = nullptr; } ui_setting_save(); result_thread1->stop(); @@ -80,21 +145,13 @@ MainWindow::~MainWindow() void MainWindow::ui_display1(QString str,bool inOrOut) { -// QTime Time= QTime::currentTime();//获取系统当前的时间 -// QString str_time = Time.toString("[hh:mm:ss ");//格式化时间 + ui->txtb_dispaly->moveCursor(QTextCursor::End); if(inOrOut){ ui->txtb_dispaly->setTextColor(QColor(127, 255, 0)); }else{ ui->txtb_dispaly->setTextColor(Qt::red); - } -// if(inOrOut){ -// str_time.append("IN] : "); -// }else{ -// str_time.append("OUT] : "); -// } -// str.prepend(str_time); -// str+="\r\n"; + } ui->txtb_dispaly->insertPlainText(str); ui->txtb_dispaly->moveCursor(QTextCursor::End); } @@ -191,22 +248,100 @@ void MainWindow::ui_setting_save() void MainWindow::ui_setting_read() { uart_com_select(); - QSettings *settings = new QSettings("Setting.ini", QSettings::IniFormat); - ui->cbox_uart_com_select_1->ChangeItem(settings->value("Uart_setting/uart_com").toString()); - ui->cbox_uart_baud_select->setCurrentIndex(settings->value("Uart_setting/uart_baud").toInt()); + QSettings *msettings = new QSettings("Setting.ini", QSettings::IniFormat); + ui->cbox_uart_com_select_1->ChangeItem(msettings->value("Uart_setting/uart_com").toString()); + ui->cbox_uart_baud_select->setCurrentIndex(msettings->value("Uart_setting/uart_baud").toInt()); + + settings::getInstance().load_settings(); + ui->textBrowser_result->setText(settings::getInstance().getmacStatusFull()); + } /* --------------------------------uart操作--------------------------- */ void MainWindow::uart_process1() { -// if (ui->pbtn_open_uart->isChecked()) { - QString str_com = ui->cbox_uart_com_select_1->currentText(); - QString str_uart_baud = ui->cbox_uart_baud_select->currentText(); -// uart_open(str_com,str_uart_baud); -// } else { -// uart_close(); -// } + qDebug()<<"uart_process1 "<< cmd_index_1; + //处理指令结果 + switch(cmd_index_1){ + case 0: + { + //检查当前的号是否已经是写过的号,放置重复写号造成的浪费。 + int ret = uart_rx_buff_array1.indexOf(tr("28*****")); + if (ret > 0) + { + QString unit="281106"+uart_rx_buff_array1.mid(ret+7,6); + bool mac_used=settings::getInstance().getMacUsed(unit.toUpper()); + if (mac_used) + { + ui_display1("手表地址"+unit+"已占用\r\n",LOG_DIRECT_OUT); + cmd_index_1 = -1; + }else{ + ui_display1("手表地址"+unit+" 可用!\r\n",LOG_DIRECT_IN); + } + + }else{ + ui_display1("get Mac failed !\r\n",LOG_DIRECT_OUT); + } + + } + break; + case 1: + break; + case 2: + { +// local_addr : 28*****010101 + QString unit=ui->ledit_spp_addr_1->text(); + int ret = uart_rx_buff_array1.indexOf(tr("28*****")); + if (ret > 0) + { + QString unit_watch="281106"+uart_rx_buff_array1.mid(ret+7,6); + qDebug()< 0 ) + { + if (uart_rx_buff_array1.size()-ret >84){ + QString cpu_id=uart_rx_buff_array1.mid(ret+9,84).replace("\r\n","").replace("0x","").replace(" ",""); + ui_display1("cpuid: "+cpu_id+"\r\n",LOG_DIRECT_IN); + ret = settings::getInstance().set_mac_used(ui->ledit_spp_addr_1->text(),cpu_id,true); + qDebug()<<"set mac used "<ledit_spp_addr_1->text()<<" "<< cpu_id<<" ret "<textBrowser_result->setText(settings::getInstance().getmacStatusFull()); + } + } + }else{ + ui_display1("get cpu-info failed !\r\n",LOG_DIRECT_OUT); + cmd_index_1 = -4; + } + } + } + break; + default: + { + cmd_index_1=-1; + } + break; + } } void MainWindow::uart_process2() { @@ -240,79 +375,24 @@ void MainWindow::uart_process4() } void MainWindow::uart_open(QString com,QString com_baud) { - char buf[15] = {0}; - uint32_t band = com_baud.toUInt(); - com.replace("COM", ""); - int comNumber = com.toInt(); - if (comNumber < COM_NUMBER) { - (void)sprintf_s(buf, "COM%d", comNumber); - } else { - (void)sprintf_s(buf, "\\\\.\\COM%d", comNumber); - } - #if 0 - if (uapi_uart_open(buf, band)) { - uapi_uart_callback_register(uart_callback); - result_thread->resume(); - - if(ui->stkw_stage->currentIndex() == PAGE_COMPLETE){ - ui->tbw_stage_complete->setEnabled(true); - ui->pbtn_spp_connect->setEnabled(true); -// uapi_uart_set_currentMode(1); - }else if(ui->stkw_stage->currentIndex() == PAGE_BOARD){ - ui->tbw_stage_board->setEnabled(true); -// uapi_uart_set_currentMode(0); - } - ui->pbtn_open_uart->setText("关闭串口"); - ui_display("open uart success.\r\n",false); - if(!ui->pbtn_open_uart->isChecked()){ - ui->pbtn_open_uart->setChecked(true); - } - } else { - ui_display("open uart fail.\r\n",false); - QMessageBox::warning(this, tr("SerialPort"), tr("Open SerialPort failed"), QMessageBox::Ok); - ui->pbtn_open_uart->setChecked(false); - } - #endif } void MainWindow::uart_close() { - #if 0 - if (uapi_uart_close() == TRUE) { - result_thread->pause(); -// ui_display("close uart success.\r\n",false); - ui->tbw_stage_complete->setEnabled(false); - ui->tbw_stage_board->setEnabled(false); - ui->pbtn_spp_connect->setEnabled(false); - ui->pbtn_open_uart->setText("打开串口"); - if(ui->pbtn_open_uart->isChecked()){ - ui->pbtn_open_uart->setChecked(false); - } - if (spp_connected_handle != NULL) { - spp_connected_handle->stop(); - spp_connected_handle = NULL; - } - if (spp_timer_handle != NULL) { - spp_timer_handle->stop(); - spp_timer_handle = NULL; - } - } else { -// ui_display("close uart fail.\r\n",false); - } - #endif + } void MainWindow::uart_send_data1(QString cmd) { - QString str; - int buf_len = 0; - char* buf = nullptr; -// if(ui->stkw_stage->currentIndex() == PAGE_COMPLETE){ -// str = ui->tedit_input_data->toPlainText(); -// }else{ -// str = ui->tedit_input_data_board->toPlainText(); -// } - - ui_display1(str,false); + qint64 ret =0; + ret=serialport1->write(cmd.toUtf8()); + m_bytesToWrite1 = ret; + qDebug()<isActive()) + spp_timer_handle1->stop(); + spp_timer_handle1->start(1500); +// ui_display1(cmd,true); +// 发送指令,在发送结束的handleBytesWritten1中,设置接收状态, +// 接收函数 readData1 中确认指令是否执行完毕,然后执行下一个指令。 } void MainWindow::uart_send_data2(QString cmd) { @@ -329,7 +409,7 @@ void MainWindow::uart_send_data4(QString cmd) // uart收到的数据进行回显到显示栏 void MainWindow::uart_rx_dispaly1(int buf_len, u8Piont buf) { - uart_rx_flag = true; + uart_rx_flag1 = true; if (uart_rx_Ignoring_display) { QString str((char *)buf); if(str.contains("ADDR")){ @@ -355,7 +435,7 @@ void MainWindow::uart_rx_dispaly1(int buf_len, u8Piont buf) void MainWindow::uart_rx_dispaly2(int buf_len, u8Piont buf) { - uart_rx_flag = true; + uart_rx_flag1 = true; if (uart_rx_Ignoring_display) { QString str((char *)buf); if(str.contains("ADDR")){ @@ -380,7 +460,7 @@ void MainWindow::uart_rx_dispaly2(int buf_len, u8Piont buf) } void MainWindow::uart_rx_dispaly3(int buf_len, u8Piont buf) { - uart_rx_flag = true; + uart_rx_flag1 = true; if (uart_rx_Ignoring_display) { QString str((char *)buf); if(str.contains("ADDR")){ @@ -405,7 +485,7 @@ void MainWindow::uart_rx_dispaly3(int buf_len, u8Piont buf) } void MainWindow::uart_rx_dispaly4(int buf_len, u8Piont buf) { - uart_rx_flag = true; + uart_rx_flag1 = true; if (uart_rx_Ignoring_display) { QString str((char *)buf); if(str.contains("ADDR")){ @@ -441,18 +521,12 @@ void MainWindow::uart_com_select() void MainWindow::uart_com_switch(QString com) { QString str_uart_baud = ui->cbox_uart_baud_select->currentText(); -// if(ui->pbtn_open_uart->isChecked()){ -// uart_close(); -// uart_open(com,str_uart_baud); -// } + } void MainWindow::uart_baud_switch(QString baud) { QString str_com = ui->cbox_uart_com_select_1->currentText(); -// if(ui->pbtn_open_uart->isChecked()){ -// uart_close(); -// uart_open(str_com,baud); -// } + } // nIndex为索引号 bValue选择返回值为key还是value,默认为value QString MainWindow::uart_get_comm_or_port(int nIndex, bool bValue) @@ -515,18 +589,7 @@ QStringList MainWindow::uart_get_enable_comm_or_port() /* ------------------------------------------------------------------- */ void MainWindow::spp_connected_callback() { -// at_handler->at_send_cmd_string(MODULE_MCU,MCU_CMD_CHECK_CONNECTED,NULL); - dongle_connected_times++; - if (dongle_connected_times > 5) { - ui_display1("Dongle has been disconnected.\r\n",false); - dongle_is_connected = false; - } - if (dongle_is_connected == true) { -// ui->connected_flag->setStyleSheet("QPushButton{background-color: rgb(0, 255, 64);}"); -// uapi_uart_set_currentMode(1);//设置整机模式,通过蓝牙透传指令 - } else { -// ui->connected_flag->setStyleSheet("QPushButton{background-color: rgb(255, 0, 0);}"); - } + ui_display1("com send cmd failed! ",false); } void MainWindow::spp_timer_callback2() { @@ -543,49 +606,74 @@ void MainWindow::spp_timer_callback4() void MainWindow::spp_timer_callback1() { - bool final_ret = false; - if (dongle_try_count > 5) { - ui_display1("\r\nNo device, check the dongle is connected.\r\n",false); - final_ret = true; - } - if (uart_rx_flag == false) { -// at_handler->at_send_cmd_string(MODULE_MCU,MCU_CMD_CHECK_CONNECTED,NULL); - dongle_try_count++; - } else if (spp_try_count % 3 == 0) { // 每3次重新发送一次连接AT命令 -// QString str = ui->ledit_spp_addr->text(); -// at_handler->at_send_cmd_board(DONGLE_MODE_SPPCONN,str); - } else if (spp_try_count > 10) { // 循环10次还有数据上报则表示连接失败 - ui_display1("\r\nconnect fail.\r\n",false); - final_ret = true; - } - if (dongle_is_connected == true) { - final_ret = true; - ui_display1("\r\nDongle has been connected.\r\n",false); - if (spp_connected_handle == NULL) { - spp_connected_handle = new QTimer(this); - connect(spp_connected_handle, SIGNAL(timeout()), this, SLOT(spp_connected_callback())); - spp_connected_handle->start(1500); - } - } - if (final_ret == false) { -// at_handler->at_send_cmd_board(DONGLE_MODE_AT,NULL); - spp_try_count++; - uart_rx_flag = false; - ui_display1(".",false); - } else { - spp_timer_handle->stop(); - spp_timer_handle = NULL; - uart_rx_Ignoring_display = false; -// ui->pbtn_spp_connect->setEnabled(true); - } + uart_rx_flag1 = false; + ui_display1(ui->cbox_uart_com_select_1->currentText()+tr(" send cmd fail!"),false); + if (spp_timer_handle1->isActive()) + spp_timer_handle1->stop(); + } void MainWindow::spp_connect_1() { - qDebug()<ui->cbox_uart_baud_select->currentText(); - qDebug()<ui->cbox_uart_com_select_1->currentText(); + + QString baud_rate = ui->cbox_uart_baud_select->currentText(); + QString com_name = ui->cbox_uart_com_select_1->currentText(); + + QString avalible_mac = settings::getInstance().getAvalibleMac(); + int ret =0; + ui->ledit_spp_addr_1->setText(avalible_mac); +// ret = settings::getInstance().set_mac_used(avalible_mac,"",true); + +// qDebug()<< "set mac "<< avalible_mac<<" used , ret "<< ret; + + + qDebug()<txtb_dispaly->clear(); + + serialport1->setPortName(com_name); + serialport1->setBaudRate(baud_rate.toInt()); + serialport1->setDataBits(QSerialPort::DataBits::Data8); + serialport1->setParity(QSerialPort::Parity::NoParity); + serialport1->setStopBits(QSerialPort::StopBits::OneStop); + serialport1->setFlowControl(QSerialPort::FlowControl::NoFlowControl); + if (serialport1->isOpen()) + { + this->cmd_index_1 = 0; + this->uart_send_data1(ATCMD_GET_MAC); + +// + }else{ + if (serialport1->open(QIODevice::ReadWrite)) { +// serialport1->setEnabled(true); +// serialport1->setLocalEchoEnabled(false); + + connect(serialport1, &QSerialPort::readyRead, this, &MainWindow::readData1); + connect(serialport1, &QSerialPort::bytesWritten, this, &MainWindow::handleBytesWritten1); + this->cmd_index_1 = 0; + this->uart_send_data1(ATCMD_GET_MAC); +// serialport1->close(); +// disconnect(serialport1, &QSerialPort::readyRead, this, &MainWindow::readData1); + + } else { + QMessageBox::critical(this, tr("Error"), serialport1->errorString()); + + ui_display1(tr("Open error"),false); + } + } // this->serialport1->setBaudRate() -ui_display1("connect com1 ",false); +// ui_display1("connect com1 ",false); +} + + +void MainWindow::handleBytesWritten1(qint64 bytes) +{ + qDebug()<<" handleBytesWritten1 m_bytesToWrite1 "<at_send_cmd_board(DONGLE_MODE_ADDR,NULL); ui_display1("spp connectting...",false); - spp_timer_handle = new QTimer(this); - connect(spp_timer_handle, SIGNAL(timeout()), this, SLOT(spp_timer_callback())); + // spp查询定时器周期为1500ms - spp_timer_handle->start(1500); + spp_timer_handle1->start(1500); // ui->pbtn_spp_connect->setEnabled(false); } diff --git a/mainwindow.h b/mainwindow.h index 781207a..ff3ee9d 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -50,10 +50,20 @@ private: QSerialPort *serialport3; QSerialPort *serialport4; + //指令长度 + qint64 m_bytesToWrite1=0; + //指令顺序, AT =0 , SET_MAC = 1 , GET_MAC = 2 , GET_CPUINFO = 3; + int cmd_index_1=0; + // 是否忽略uart数据,不回显 bool uart_rx_Ignoring_display {false}; // 是否有uart通路数据上报 - bool uart_rx_flag {false}; + bool uart_rx_flag1 {false}; + QByteArray uart_rx_buff_array1; + bool LOG_DIRECT_OUT=false; + bool LOG_DIRECT_IN=true; + + bool dongle_is_connected {false}; int dongle_connected_times {0}; QStringList uart_get_enable_comm_or_port(); @@ -61,8 +71,8 @@ private: void uart_open(QString com,QString com_band); void uart_close(); /* ------------------------spp-------------------------------- */ - QTimer *spp_timer_handle {NULL}; - QTimer *spp_connected_handle {NULL}; + QTimer *spp_timer_handle1 {nullptr}; + QTimer *spp_connected_handle {nullptr}; int dongle_try_count {0}; int spp_try_count {0}; @@ -98,6 +108,7 @@ private slots: void readData2(); void readData3(); void readData4(); + void handleBytesWritten1(qint64 bytes); void uart_rx_dispaly1(int buf_len, u8Piont buf); void uart_rx_dispaly2(int buf_len, u8Piont buf); void uart_rx_dispaly3(int buf_len, u8Piont buf); diff --git a/mainwindow.ui b/mainwindow.ui index 17eba52..f45c754 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -178,7 +178,7 @@ - true + false @@ -452,7 +452,7 @@ p, li { white-space: pre-wrap; } - true + false @@ -559,7 +559,7 @@ p, li { white-space: pre-wrap; } - true + false @@ -666,7 +666,7 @@ p, li { white-space: pre-wrap; } - true + false diff --git a/release/at_data.obj b/release/at_data.obj deleted file mode 100644 index 1329fb2..0000000 Binary files a/release/at_data.obj and /dev/null differ diff --git a/release/custom.obj b/release/custom.obj deleted file mode 100644 index 64b0a6b..0000000 Binary files a/release/custom.obj and /dev/null differ diff --git a/release/factory_tool.exe b/release/factory_tool.exe deleted file mode 100644 index efac356..0000000 Binary files a/release/factory_tool.exe and /dev/null differ diff --git a/release/main.obj b/release/main.obj deleted file mode 100644 index 7961d78..0000000 Binary files a/release/main.obj and /dev/null differ diff --git a/release/mainwindow.obj b/release/mainwindow.obj deleted file mode 100644 index b0b1b11..0000000 Binary files a/release/mainwindow.obj and /dev/null differ diff --git a/release/moc_custom.obj b/release/moc_custom.obj deleted file mode 100644 index 39b4657..0000000 Binary files a/release/moc_custom.obj and /dev/null differ diff --git a/release/moc_mainwindow.obj b/release/moc_mainwindow.obj deleted file mode 100644 index 7e546a7..0000000 Binary files a/release/moc_mainwindow.obj and /dev/null differ diff --git a/release/mythread.obj b/release/mythread.obj deleted file mode 100644 index c14deb3..0000000 Binary files a/release/mythread.obj and /dev/null differ diff --git a/release/result_thread.obj b/release/result_thread.obj deleted file mode 100644 index 1c15396..0000000 Binary files a/release/result_thread.obj and /dev/null differ diff --git a/release/wrtm_class.obj b/release/wrtm_class.obj deleted file mode 100644 index c6011e2..0000000 Binary files a/release/wrtm_class.obj and /dev/null differ diff --git a/releasePackage/HiBTMacWriteToolV1.0.zip b/releasePackage/HiBTMacWriteToolV1.0.zip new file mode 100644 index 0000000..fe55362 Binary files /dev/null and b/releasePackage/HiBTMacWriteToolV1.0.zip differ diff --git a/releasePackage/HiBTMacWriteToolV1.0/HiBTMacWriteTool.exe b/releasePackage/HiBTMacWriteToolV1.0/HiBTMacWriteTool.exe new file mode 100644 index 0000000..2311b26 Binary files /dev/null and b/releasePackage/HiBTMacWriteToolV1.0/HiBTMacWriteTool.exe differ diff --git a/releasePackage/HiBTMacWriteToolV1.0/Setting.ini b/releasePackage/HiBTMacWriteToolV1.0/Setting.ini new file mode 100644 index 0000000..af6be01 --- /dev/null +++ b/releasePackage/HiBTMacWriteToolV1.0/Setting.ini @@ -0,0 +1,3 @@ +[Uart_setting] +uart_com=COM222 +uart_baud=11 diff --git a/releasePackage/HiBTMacWriteToolV1.0/mac_address.db b/releasePackage/HiBTMacWriteToolV1.0/mac_address.db new file mode 100644 index 0000000..097f53e Binary files /dev/null and b/releasePackage/HiBTMacWriteToolV1.0/mac_address.db differ diff --git a/settings.cpp b/settings.cpp index 36a779d..a919109 100644 --- a/settings.cpp +++ b/settings.cpp @@ -32,7 +32,11 @@ void settings::release() void settings::load_settings() { - + qDebug()<<"load_settings"; + this->mac_start_fullstr =sqlitemanager->get_mac_start(); + this->mac_end_fullstr =sqlitemanager->get_mac_end(); + this->mac_count = sqlitemanager->get_mac_count(); + qDebug()<getmacStatus(); } int settings::mac_config(QString _mac_pre,QString _mac_count,QString _mac_start_hexstr) @@ -84,6 +88,21 @@ int settings::mac_config(QString _mac_pre,QString _mac_count,QString _mac_start_ qDebug()<<"格式正确? "<is_mac_used(mac); +} + +QString settings::getAvalibleMac() +{ + return sqlitemanager->get_avalible_mac(); +} + +int settings::set_mac_used(QString mac,QString uid,bool used) +{ + return sqlitemanager->set_mac_used(mac,uid,used); +} + QString settings::getmacStatus() { QString ret=""; @@ -93,19 +112,22 @@ QString settings::getmacStatus() }else { - ret.append(mac_pre_head_hexstr).append(mac_start_hexstr); + ret.append(mac_start_fullstr); ret.append("直到"); - ret.append(mac_pre_head_hexstr).append(mac_end_hexstr).append("\n"); + ret.append(mac_end_fullstr).append("\n"); ret.append( "总共" ); ret.append(QString().setNum(mac_count)).append("个地址"); } return ret; } -int settings::save_to_database() +QString settings::getmacStatusFull() { - - return 0; + int used_count = sqlitemanager->get_mac_used_count(); + QString ret = getmacStatus(); + ret = ret.append("\n已用%1").arg(used_count); + ret = ret.append("\n剩余%1").arg(mac_count-used_count); + return ret; } int settings::gen_new_mac() @@ -136,14 +158,17 @@ int settings::create_new_database() if (ret == 1) { + mac_start_fullstr=mac_pre_head_hexstr+mac_start_hexstr; + mac_end_fullstr=mac_pre_head_hexstr+mac_end_hexstr; + sqlitemanager->set_mac_cfg(mac_start_fullstr,mac_end_fullstr,mac_count); gen_new_mac(); }else if (ret == 2) { int count = sqlitemanager->get_mac_count(); - qDebug()<<"mac count "< 0 ) { + qDebug()<<"mac count "< #include "sqldbmanager.h" +/* + * +» AT^BTADDR=281106010101 6 +« package_common_cmd_to_bt strCmd 36 5A 00 09 00 09 04 inParam 281106010101 6 para_len 15 +commandID = 0x4 payload_len=15 +bt_manager_at_process cmdId=0x4 atId=0x904 +gap_scan_mode_changed_callback mode: 0 +APP|[WEARABLE E/] sample_gap_scan_mode_changed_callback: sample_gap_scan_mode_changed_callback: Mobile Phone Device +gap_scan_mode_changed_callback mode: 4 +APP|[WEARABLE E/] sample_gap_scan_mode_changed_callback: sample_gap_scan_mode_changed_callback: Mobile Phone Device +bluetooth_set_local_addr OK + +OK~ + + +» AT^BTADDR? +« package_common_cmd_to_bt strCmd 36 5A 00 03 00 09 05 BA 62 inParam (null) para_len 0 +commandID = 0x5 payload_len=0 +bt_manager_at_process cmdId=0x5 atId=0x905 + +local_addr : 28*****010101 + +OK~ + + +» AT^GETIDS +« [nandflash id:] c881 +[norflash id:] 1860c8 +[sdk id:]1.3.83 +[soc id:] +0x0974 0x1744 0xEF04 0x2185 +0xBDD7 0xC80B 0x030A 0x7578 +0x8221 0x0001 + +OK~ + + +*/ +#define ATCMD_SET_MAC "AT^BTADDR=%1 6\r\n" +#define ATCMD_GET_CPUID "AT^GETIDS\r\n" +#define ATCMD_GET_MAC "AT^BTADDR?\r\n" + + #define MAC_LEN 12 class settings { @@ -12,12 +55,17 @@ public: static settings& getInstance(); //获取settings的唯一对象 static void release(); + + settings(); int create_new_database(); void load_settings(); int mac_config(QString _mac_pre,QString _mac_count,QString _mac_start_hexstr); - int save_to_database(); + int set_mac_used(QString mac,QString uid,bool used); + bool getMacUsed(QString mac); + QString getAvalibleMac(); QString getmacStatus(); + QString getmacStatusFull(); private: int gen_new_mac(); QString setting_path="Setting.ini"; @@ -26,6 +74,8 @@ private: uint mac_count; QString mac_start_hexstr; QString mac_end_hexstr; + QString mac_start_fullstr; + QString mac_end_fullstr; uint mac_start; int mac_used; QDateTime cfg_updateTime; diff --git a/sqldbmanager.cpp b/sqldbmanager.cpp index 6f78a77..917e3c1 100644 --- a/sqldbmanager.cpp +++ b/sqldbmanager.cpp @@ -31,8 +31,8 @@ DbManager::DbManager(const QString& path="mac_address.db") int DbManager::create_db_tables() { -// QString create_database_str = "create table bt_addrs (id int primary key, mac_ddr varchar(20), cpuid varchar(20), update_time int, used_flag int)"; - QString create_database_str = "CREATE TABLE [main].[bt_addrs]( [id] int PRIMARY KEY ASC NOT NULL UNIQUE, [mac_ddr] varchar(20) NOT NULL DEFAULT \"\", [cpuid] varchar(40) NOT NULL DEFAULT \"\",[update_time_str] varchar(20) NOT NULL DEFAULT \"\", [update_time] int NOT NULL DEFAULT 0, [used_flag] int NOT NULL DEFAULT 0);"; + QString create_table_bt_addr_str = "CREATE TABLE [main].[bt_addrs]( [id] int PRIMARY KEY ASC NOT NULL UNIQUE, [mac_addr] varchar(20) NOT NULL DEFAULT \"\", [cpuid] varchar(40) NOT NULL DEFAULT \"\",[update_time_str] varchar(20) NOT NULL DEFAULT \"\", [update_time] int NOT NULL DEFAULT 0, [used_flag] int NOT NULL DEFAULT 0);"; + QString create_table_cfg_str = "CREATE TABLE [main].[bt_cfg]( [mac_addr_start] varchar(20) NOT NULL DEFAULT \"\", [mac_addr_end] varchar(20) NOT NULL DEFAULT \"\", [mac_count] int NOT NULL DEFAULT 0, [mac_used] int NOT NULL DEFAULT 0);"; QStringList tables = m_db.tables(); if (tables.length()==1 && tables.at(0) == "bt_addrs") { @@ -40,17 +40,76 @@ int DbManager::create_db_tables() return 2; }else{ QSqlQuery query ;//= m_db.exec(create_database_str); - query.prepare(create_database_str); + query.prepare(create_table_bt_addr_str); if ( query.exec()) { - qDebug()<< create_database_str << " success"; + qDebug()<< create_table_bt_addr_str << " success"; }else{ qDebug()< 0) + { + //已经存在记录用update + QString update_cfg = QString("UPDATE bt_cfg SET mac_addr_start=\"%1\" , mac_addr_end=\"%2\" , mac_count = %3 , mac_used = 0 ").arg(mac_start).arg(mac_end).arg(mac_count); + query.prepare(update_cfg); + if (query.exec()) + { + qDebug()<