#include "ui_mainwindow.h"\r
#include "dialogsettings.h"\r
#include <QDesktopServices>\r
+#include <qserialport.h>\r
// 初始化线程、状态寄存器、配置信息\r
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)\r
{\r
ui->setupUi(this);\r
- serialport1 = new QSerialPort();\r
- serialport2 = new QSerialPort();\r
- serialport3 = new QSerialPort();\r
- serialport4 = new QSerialPort();\r
+ serialport1 = new QSerialPort(this);\r
+ serialport2 = new QSerialPort(this);\r
+ serialport3 = new QSerialPort(this);\r
+ serialport4 = new QSerialPort(this);\r
+\r
+ spp_timer_handle1 = new QTimer(this);\r
+ connect(spp_timer_handle1, SIGNAL(timeout()), this, SLOT(spp_timer_callback1()));\r
+\r
result_thread1 = new Result_Thread(this,1);\r
result_thread2 = new Result_Thread(this,2);\r
result_thread3 = new Result_Thread(this,3);\r
result_thread4->start();\r
result_thread4->pause();\r
ui_setting_read();\r
- connect(serialport1, &QSerialPort::readyRead, this, &MainWindow::readData1);\r
+\r
}\r
void MainWindow::readData1()\r
{\r
const QByteArray data = serialport1->readAll();\r
+ qDebug()<<uart_rx_flag1;\r
qDebug()<<data;\r
+ if (uart_rx_flag1)\r
+ {//指令下达完毕,开始接收数据\r
+ uart_rx_buff_array1.append(data);\r
+ if (uart_rx_buff_array1.indexOf("OK")>0)\r
+ {\r
+ uart_rx_flag1 = false;\r
+ uart_process1();//开始处理当前指令结果\r
+ if (cmd_index_1 <0)\r
+ {\r
+ if (spp_timer_handle1->isActive())\r
+ spp_timer_handle1->stop();\r
+ return;\r
+ }\r
+ cmd_index_1 ++; //开始执行下一指令\r
+ switch(cmd_index_1){\r
+ case 0:\r
+ {\r
+\r
+ }\r
+ break;\r
+ case 1:\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
+ {\r
+ this->uart_send_data1(ATCMD_GET_MAC);\r
+ }\r
+ break;\r
+ case 3:\r
+ {\r
+ this->uart_send_data1(ATCMD_GET_CPUID);\r
+ }\r
+ break;\r
+ default:\r
+ {\r
+ cmd_index_1=-1;\r
+ if (spp_timer_handle1->isActive())\r
+ spp_timer_handle1->stop();\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ else{\r
+\r
+ }\r
+ }\r
+\r
+\r
+\r
+// m_timer->stop();\r
+\r
+\r
+\r
+// {\r
+// ui_display1(data,false);\r
+// }\r
// m_console->putData(data);\r
}\r
void MainWindow::readData2()\r
// 结束线程\r
MainWindow::~MainWindow()\r
{\r
- if (spp_timer_handle != NULL) {\r
- spp_timer_handle->stop();\r
- spp_timer_handle = NULL;\r
+ if (spp_timer_handle1 != nullptr) {\r
+ spp_timer_handle1->stop();\r
+ spp_timer_handle1 = nullptr;\r
}\r
- if (spp_connected_handle != NULL) {\r
+ if (spp_connected_handle != nullptr) {\r
spp_connected_handle->stop();\r
- spp_connected_handle = NULL;\r
+ spp_connected_handle = nullptr;\r
}\r
ui_setting_save();\r
result_thread1->stop();\r
\r
void MainWindow::ui_display1(QString str,bool inOrOut)\r
{\r
-// QTime Time= QTime::currentTime();//获取系统当前的时间\r
-// QString str_time = Time.toString("[hh:mm:ss ");//格式化时间\r
+\r
ui->txtb_dispaly->moveCursor(QTextCursor::End);\r
if(inOrOut){\r
ui->txtb_dispaly->setTextColor(QColor(127, 255, 0));\r
}else{\r
ui->txtb_dispaly->setTextColor(Qt::red);\r
- }\r
-// if(inOrOut){\r
-// str_time.append("IN] : ");\r
-// }else{\r
-// str_time.append("OUT] : ");\r
-// }\r
-// str.prepend(str_time);\r
-// str+="\r\n";\r
+ } \r
ui->txtb_dispaly->insertPlainText(str);\r
ui->txtb_dispaly->moveCursor(QTextCursor::End);\r
}\r
void MainWindow::ui_setting_read()\r
{\r
uart_com_select();\r
- QSettings *settings = new QSettings("Setting.ini", QSettings::IniFormat);\r
- ui->cbox_uart_com_select_1->ChangeItem(settings->value("Uart_setting/uart_com").toString());\r
- ui->cbox_uart_baud_select->setCurrentIndex(settings->value("Uart_setting/uart_baud").toInt());\r
+ QSettings *msettings = new QSettings("Setting.ini", QSettings::IniFormat);\r
+ ui->cbox_uart_com_select_1->ChangeItem(msettings->value("Uart_setting/uart_com").toString());\r
+ ui->cbox_uart_baud_select->setCurrentIndex(msettings->value("Uart_setting/uart_baud").toInt());\r
+\r
+ settings::getInstance().load_settings();\r
+ ui->textBrowser_result->setText(settings::getInstance().getmacStatusFull());\r
+\r
}\r
\r
\r
/* --------------------------------uart操作--------------------------- */\r
void MainWindow::uart_process1()\r
{\r
-// if (ui->pbtn_open_uart->isChecked()) {\r
- QString str_com = ui->cbox_uart_com_select_1->currentText();\r
- QString str_uart_baud = ui->cbox_uart_baud_select->currentText();\r
-// uart_open(str_com,str_uart_baud);\r
-// } else {\r
-// uart_close();\r
-// }\r
+ qDebug()<<"uart_process1 "<< cmd_index_1;\r
+ //处理指令结果\r
+ switch(cmd_index_1){\r
+ case 0:\r
+ {\r
+ //检查当前的号是否已经是写过的号,放置重复写号造成的浪费。\r
+ int ret = uart_rx_buff_array1.indexOf(tr("28*****"));\r
+ if (ret > 0)\r
+ {\r
+ QString unit="281106"+uart_rx_buff_array1.mid(ret+7,6);\r
+ bool mac_used=settings::getInstance().getMacUsed(unit.toUpper());\r
+ if (mac_used)\r
+ {\r
+ ui_display1("手表地址"+unit+"已占用\r\n",LOG_DIRECT_OUT);\r
+ cmd_index_1 = -1;\r
+ }else{\r
+ ui_display1("手表地址"+unit+" 可用!\r\n",LOG_DIRECT_IN);\r
+ }\r
+\r
+ }else{\r
+ ui_display1("get Mac failed !\r\n",LOG_DIRECT_OUT);\r
+ }\r
+\r
+ }\r
+ break;\r
+ case 1:\r
+ break;\r
+ case 2:\r
+ {\r
+// local_addr : 28*****010101\r
+ QString unit=ui->ledit_spp_addr_1->text();\r
+ int ret = uart_rx_buff_array1.indexOf(tr("28*****"));\r
+ if (ret > 0)\r
+ {\r
+ QString unit_watch="281106"+uart_rx_buff_array1.mid(ret+7,6);\r
+ qDebug()<<unit_watch;\r
+ qDebug()<<unit;\r
+ if(unit_watch.toUpper() == unit)\r
+ {\r
+ ui_display1("set Mac "+unit_watch+" success! \r\n",LOG_DIRECT_IN);\r
+ }else{\r
+ ui_display1("set Mac "+unit_watch+" failed! \r\n",LOG_DIRECT_OUT);\r
+ cmd_index_1 = -2;\r
+ }\r
+\r
+ }else{\r
+ ui_display1("set Mac "+unit+" failed !\r\n",LOG_DIRECT_OUT);\r
+ cmd_index_1 = -3;\r
+ }\r
+\r
+ }\r
+ break;\r
+ case 3:\r
+ {\r
+ int ret = uart_rx_buff_array1.indexOf("[soc id:]");\r
+ {\r
+ if (ret > 0 )\r
+ {\r
+ if (uart_rx_buff_array1.size()-ret >84){\r
+ QString cpu_id=uart_rx_buff_array1.mid(ret+9,84).replace("\r\n","").replace("0x","").replace(" ","");\r
+ ui_display1("cpuid: "+cpu_id+"\r\n",LOG_DIRECT_IN);\r
+ ret = settings::getInstance().set_mac_used(ui->ledit_spp_addr_1->text(),cpu_id,true);\r
+ qDebug()<<"set mac used "<<ui->ledit_spp_addr_1->text()<<" "<< cpu_id<<" ret "<<ret ;\r
+ if (ret == 1)\r
+ {\r
+ ui->textBrowser_result->setText(settings::getInstance().getmacStatusFull());\r
+ }\r
+ }\r
+ }else{\r
+ ui_display1("get cpu-info failed !\r\n",LOG_DIRECT_OUT);\r
+ cmd_index_1 = -4;\r
+ }\r
+ }\r
+ }\r
+ break;\r
+ default:\r
+ {\r
+ cmd_index_1=-1;\r
+ }\r
+ break;\r
+ }\r
}\r
void MainWindow::uart_process2()\r
{\r
}\r
void MainWindow::uart_open(QString com,QString com_baud)\r
{\r
- char buf[15] = {0};\r
- uint32_t band = com_baud.toUInt();\r
- com.replace("COM", "");\r
- int comNumber = com.toInt();\r
- if (comNumber < COM_NUMBER) {\r
- (void)sprintf_s(buf, "COM%d", comNumber);\r
- } else {\r
- (void)sprintf_s(buf, "\\\\.\\COM%d", comNumber);\r
- }\r
- #if 0\r
- if (uapi_uart_open(buf, band)) {\r
- uapi_uart_callback_register(uart_callback);\r
- result_thread->resume();\r
-\r
- if(ui->stkw_stage->currentIndex() == PAGE_COMPLETE){\r
- ui->tbw_stage_complete->setEnabled(true);\r
- ui->pbtn_spp_connect->setEnabled(true);\r
-// uapi_uart_set_currentMode(1);\r
- }else if(ui->stkw_stage->currentIndex() == PAGE_BOARD){\r
- ui->tbw_stage_board->setEnabled(true);\r
-// uapi_uart_set_currentMode(0);\r
- }\r
- ui->pbtn_open_uart->setText("关闭串口");\r
- ui_display("open uart success.\r\n",false);\r
- if(!ui->pbtn_open_uart->isChecked()){\r
- ui->pbtn_open_uart->setChecked(true);\r
- }\r
- } else {\r
- ui_display("open uart fail.\r\n",false);\r
- QMessageBox::warning(this, tr("SerialPort"), tr("Open SerialPort failed"), QMessageBox::Ok);\r
- ui->pbtn_open_uart->setChecked(false);\r
- }\r
- #endif\r
\r
}\r
void MainWindow::uart_close()\r
{\r
- #if 0\r
- if (uapi_uart_close() == TRUE) {\r
- result_thread->pause();\r
-// ui_display("close uart success.\r\n",false);\r
- ui->tbw_stage_complete->setEnabled(false);\r
- ui->tbw_stage_board->setEnabled(false);\r
- ui->pbtn_spp_connect->setEnabled(false);\r
- ui->pbtn_open_uart->setText("打开串口");\r
- if(ui->pbtn_open_uart->isChecked()){\r
- ui->pbtn_open_uart->setChecked(false);\r
- }\r
- if (spp_connected_handle != NULL) {\r
- spp_connected_handle->stop();\r
- spp_connected_handle = NULL;\r
- }\r
- if (spp_timer_handle != NULL) {\r
- spp_timer_handle->stop();\r
- spp_timer_handle = NULL;\r
- }\r
- } else {\r
-// ui_display("close uart fail.\r\n",false);\r
- }\r
- #endif\r
+\r
}\r
void MainWindow::uart_send_data1(QString cmd)\r
{\r
- QString str;\r
- int buf_len = 0;\r
- char* buf = nullptr;\r
-// if(ui->stkw_stage->currentIndex() == PAGE_COMPLETE){\r
-// str = ui->tedit_input_data->toPlainText();\r
-// }else{\r
-// str = ui->tedit_input_data_board->toPlainText();\r
-// }\r
-\r
- ui_display1(str,false);\r
+ qint64 ret =0;\r
+ ret=serialport1->write(cmd.toUtf8());\r
+ m_bytesToWrite1 = ret;\r
+ qDebug()<<cmd << " ret "<<m_bytesToWrite1;\r
+ if (spp_timer_handle1->isActive())\r
+ spp_timer_handle1->stop();\r
+ spp_timer_handle1->start(1500);\r
+// ui_display1(cmd,true);\r
+// 发送指令,在发送结束的handleBytesWritten1中,设置接收状态,\r
+// 接收函数 readData1 中确认指令是否执行完毕,然后执行下一个指令。\r
}\r
void MainWindow::uart_send_data2(QString cmd)\r
{\r
// uart收到的数据进行回显到显示栏\r
void MainWindow::uart_rx_dispaly1(int buf_len, u8Piont buf)\r
{\r
- uart_rx_flag = true;\r
+ uart_rx_flag1 = true;\r
if (uart_rx_Ignoring_display) {\r
QString str((char *)buf);\r
if(str.contains("ADDR")){\r
\r
void MainWindow::uart_rx_dispaly2(int buf_len, u8Piont buf)\r
{\r
- uart_rx_flag = true;\r
+ uart_rx_flag1 = true;\r
if (uart_rx_Ignoring_display) {\r
QString str((char *)buf);\r
if(str.contains("ADDR")){\r
}\r
void MainWindow::uart_rx_dispaly3(int buf_len, u8Piont buf)\r
{\r
- uart_rx_flag = true;\r
+ uart_rx_flag1 = true;\r
if (uart_rx_Ignoring_display) {\r
QString str((char *)buf);\r
if(str.contains("ADDR")){\r
}\r
void MainWindow::uart_rx_dispaly4(int buf_len, u8Piont buf)\r
{\r
- uart_rx_flag = true;\r
+ uart_rx_flag1 = true;\r
if (uart_rx_Ignoring_display) {\r
QString str((char *)buf);\r
if(str.contains("ADDR")){\r
void MainWindow::uart_com_switch(QString com)\r
{\r
QString str_uart_baud = ui->cbox_uart_baud_select->currentText();\r
-// if(ui->pbtn_open_uart->isChecked()){\r
-// uart_close();\r
-// uart_open(com,str_uart_baud);\r
-// }\r
+\r
}\r
void MainWindow::uart_baud_switch(QString baud)\r
{\r
QString str_com = ui->cbox_uart_com_select_1->currentText();\r
-// if(ui->pbtn_open_uart->isChecked()){\r
-// uart_close();\r
-// uart_open(str_com,baud);\r
-// }\r
+\r
}\r
// nIndex为索引号 bValue选择返回值为key还是value,默认为value\r
QString MainWindow::uart_get_comm_or_port(int nIndex, bool bValue)\r
/* ------------------------------------------------------------------- */\r
void MainWindow::spp_connected_callback()\r
{\r
-// at_handler->at_send_cmd_string(MODULE_MCU,MCU_CMD_CHECK_CONNECTED,NULL);\r
- dongle_connected_times++;\r
- if (dongle_connected_times > 5) {\r
- ui_display1("Dongle has been disconnected.\r\n",false);\r
- dongle_is_connected = false;\r
- }\r
- if (dongle_is_connected == true) {\r
-// ui->connected_flag->setStyleSheet("QPushButton{background-color: rgb(0, 255, 64);}");\r
-// uapi_uart_set_currentMode(1);//设置整机模式,通过蓝牙透传指令\r
- } else {\r
-// ui->connected_flag->setStyleSheet("QPushButton{background-color: rgb(255, 0, 0);}");\r
- }\r
+ ui_display1("com send cmd failed! ",false);\r
}\r
void MainWindow::spp_timer_callback2()\r
{\r
\r
void MainWindow::spp_timer_callback1()\r
{\r
- bool final_ret = false;\r
- if (dongle_try_count > 5) {\r
- ui_display1("\r\nNo device, check the dongle is connected.\r\n",false);\r
- final_ret = true;\r
- }\r
- if (uart_rx_flag == false) {\r
-// at_handler->at_send_cmd_string(MODULE_MCU,MCU_CMD_CHECK_CONNECTED,NULL);\r
- dongle_try_count++;\r
- } else if (spp_try_count % 3 == 0) { // 每3次重新发送一次连接AT命令\r
-// QString str = ui->ledit_spp_addr->text();\r
-// at_handler->at_send_cmd_board(DONGLE_MODE_SPPCONN,str);\r
- } else if (spp_try_count > 10) { // 循环10次还有数据上报则表示连接失败\r
- ui_display1("\r\nconnect fail.\r\n",false);\r
- final_ret = true;\r
- }\r
- if (dongle_is_connected == true) {\r
- final_ret = true;\r
- ui_display1("\r\nDongle has been connected.\r\n",false);\r
- if (spp_connected_handle == NULL) {\r
- spp_connected_handle = new QTimer(this);\r
- connect(spp_connected_handle, SIGNAL(timeout()), this, SLOT(spp_connected_callback()));\r
- spp_connected_handle->start(1500);\r
- }\r
- }\r
- if (final_ret == false) {\r
-// at_handler->at_send_cmd_board(DONGLE_MODE_AT,NULL);\r
- spp_try_count++;\r
- uart_rx_flag = false;\r
- ui_display1(".",false);\r
- } else {\r
- spp_timer_handle->stop();\r
- spp_timer_handle = NULL;\r
- uart_rx_Ignoring_display = false;\r
-// ui->pbtn_spp_connect->setEnabled(true);\r
- }\r
+ uart_rx_flag1 = false;\r
+ ui_display1(ui->cbox_uart_com_select_1->currentText()+tr(" send cmd fail!"),false);\r
+ if (spp_timer_handle1->isActive())\r
+ spp_timer_handle1->stop();\r
+\r
}\r
void MainWindow::spp_connect_1()\r
{\r
- qDebug()<<this->ui->cbox_uart_baud_select->currentText();\r
- qDebug()<<this->ui->cbox_uart_com_select_1->currentText();\r
+\r
+ QString baud_rate = ui->cbox_uart_baud_select->currentText();\r
+ QString com_name = ui->cbox_uart_com_select_1->currentText();\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
+// qDebug()<< "set mac "<< avalible_mac<<" used , ret "<< ret;\r
+\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
+\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
+ ui_display1(tr("Open error"),false);\r
+ }\r
+ }\r
\r
// this->serialport1->setBaudRate()\r
-ui_display1("connect com1 ",false);\r
+// ui_display1("connect com1 ",false);\r
+}\r
+\r
+\r
+void MainWindow::handleBytesWritten1(qint64 bytes)\r
+{\r
+ qDebug()<<" handleBytesWritten1 m_bytesToWrite1 "<<m_bytesToWrite1<<" written " <<bytes;\r
+ m_bytesToWrite1 -= bytes;\r
+ if (m_bytesToWrite1 == 0)\r
+ {\r
+ uart_rx_buff_array1.clear();\r
+ uart_rx_flag1 = true;\r
+ }\r
}\r
void MainWindow::spp_connect_2()\r
{\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
- spp_timer_handle = new QTimer(this);\r
- connect(spp_timer_handle, SIGNAL(timeout()), this, SLOT(spp_timer_callback()));\r
+\r
// spp查询定时器周期为1500ms\r
- spp_timer_handle->start(1500);\r
+ spp_timer_handle1->start(1500);\r
// ui->pbtn_spp_connect->setEnabled(false);\r
}\r
\r
int DbManager::create_db_tables()\r
{\r
\r
-// 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)";\r
- 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);";\r
+ 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);";\r
+ 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);";\r
QStringList tables = m_db.tables();\r
if (tables.length()==1 && tables.at(0) == "bt_addrs")\r
{\r
return 2;\r
}else{\r
QSqlQuery query ;//= m_db.exec(create_database_str);\r
- query.prepare(create_database_str);\r
+ query.prepare(create_table_bt_addr_str);\r
if ( query.exec())\r
{\r
- qDebug()<< create_database_str << " success";\r
+ qDebug()<< create_table_bt_addr_str << " success";\r
\r
}else{\r
qDebug()<<query.lastQuery() << " failed";\r
+ return 3;\r
+ }\r
+\r
+ query.prepare(create_table_cfg_str);\r
+ if ( query.exec())\r
+ {\r
+ qDebug()<< create_table_cfg_str << " success";\r
+\r
+ }else{\r
+ qDebug()<<query.lastQuery() << " failed";\r
+ return 4;\r
}\r
return 1;\r
}\r
}\r
+int DbManager::set_mac_cfg(QString mac_start,QString mac_end, int mac_count)\r
+{\r
+ QSqlQuery query;\r
+ query.prepare("SELECT count(*) as mac_count FROM bt_cfg ");\r
+ if (query.exec())\r
+ {\r
+ int count = 0;\r
+ if (query.next()){\r
+ count = query.value("mac_count").toInt();\r
+ }\r
+ query.clear();\r
+\r
+ if (count > 0)\r
+ {\r
+ //已经存在记录用update\r
+ 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);\r
+ query.prepare(update_cfg);\r
+ if (query.exec())\r
+ {\r
+ qDebug()<<query.value("mac_addr_start").toString();\r
+ qDebug()<<query.value("mac_addr_end").toString();\r
+ qDebug()<<query.value("mac_count").toInt();\r
+ qDebug()<<query.value("mac_used").toInt();\r
+ }else\r
+ {\r
+ qDebug()<< "update bt cfg failed!";\r
+ }\r
+\r
+\r
+ }else{\r
+ //无记录,用insert\r
+ QString insert_cfg = QString("INSERT INTO bt_cfg (mac_addr_start,mac_addr_end,mac_count,mac_used) VALUES (\"%1\",\"%2\",%3,0)").arg(mac_start).arg(mac_end).arg(mac_count);\r
+ query.prepare(insert_cfg);\r
+ if (query.exec())\r
+ {\r
+ qDebug()<<query.value("mac_addr_start").toString();\r
+ qDebug()<<query.value("mac_addr_end").toString();\r
+ qDebug()<<query.value("mac_count").toInt();\r
+ qDebug()<<query.value("mac_used").toInt();\r
+ }else\r
+ {\r
+ qDebug()<< "update bt cfg failed!";\r
+ }\r
+\r
+ }\r
+ }\r
+ return 0;\r
+}\r
\r
int DbManager::insert_mac_addr(int id,QString mac_addr)\r
{\r
bool success = false;\r
// you should check if args are ok first...\r
QSqlQuery query;\r
- query.prepare("INSERT INTO bt_addrs (id,mac_ddr,used_flag) VALUES (:id,:mac_ddr,0)");\r
- query.bindValue(":mac_ddr", mac_addr);\r
+ query.prepare("INSERT INTO bt_addrs (id,mac_addr,used_flag) VALUES (:id,:mac_addr,0)");\r
+ query.bindValue(":mac_addr", mac_addr);\r
query.bindValue(":id", id);\r
if(query.exec())\r
{\r
QString DbManager::get_avalible_mac()\r
{\r
QSqlQuery query;\r
- query.prepare("SELECT mac_ddr FROM bt_addrs WHERE used_flag = 0 ORDER BY id ASC");\r
+ query.prepare("SELECT mac_addr FROM bt_addrs WHERE used_flag = 0 ORDER BY id ASC");\r
QString mac_addr = QString("");\r
if (query.exec())\r
{\r
if (query.next()){\r
- mac_addr = query.value("mac_ddr").toString();\r
+ mac_addr = query.value("mac_addr").toString();\r
}\r
qDebug()<<"get avalible_mac "<<mac_addr;\r
\r
\r
\r
}\r
+QString DbManager::get_mac_start()\r
+{\r
+ QSqlQuery query;\r
+ query.prepare("SELECT mac_addr_start as mac_addr FROM bt_cfg");\r
+ QString mac_addr = QString("");\r
+ if (query.exec())\r
+ {\r
+ if (query.next()){\r
+ mac_addr = query.value("mac_addr").toString();\r
+ }\r
+ qDebug()<<"get mac_addr_start "<<mac_addr;\r
+\r
+ }\r
+ return mac_addr;\r
+\r
+\r
+}\r
+bool DbManager::is_mac_used(QString mac)\r
+{\r
+ QSqlQuery query;\r
+ QString sql_url="SELECT count(mac_addr) as mac_count FROM bt_addrs WHERE used_flag = 1 and mac_addr like \"281106" +mac.mid(6,11)+"\" ";\r
+ query.prepare(sql_url);\r
+ int mac_count=0;\r
+ if (query.exec())\r
+ {\r
+ if (query.next()){\r
+ mac_count = query.value("mac_count").toInt();\r
+ }\r
+\r
+ }\r
+ qDebug()<<sql_url << " used "<<mac_count;\r
+ if (mac_count)\r
+ return true;\r
+ else\r
+ return false;\r
+}\r
\r
+QString DbManager::get_mac_end()\r
+{\r
+ QSqlQuery query;\r
+ query.prepare("SELECT mac_addr_end as mac_addr FROM bt_cfg ");\r
+ QString mac_addr = QString("");\r
+ if (query.exec())\r
+ {\r
+ if (query.next()){\r
+ mac_addr = query.value("mac_addr").toString();\r
+ }\r
+ qDebug()<<"get mac_addr_end "<<mac_addr;\r
+\r
+ }\r
+ return mac_addr;\r
+\r
+\r
+}\r
/*\r
*更新某个mac地址为已使用状态\r
*/\r
qDebug() << QString("时间戳:%1").arg(dateTime) << sysTime.toString("yyyy-MM-dd-hh:mm:ss.zzz");\r
\r
\r
- QString update_sql = QString("UPDATE table_name bt_addrs SET used_flag=%1 ,update_time=%2 ,update_time_str=\"%3\" , cpuid = \"%4\" WHERE mac_addr = \"%5\"").arg(used).arg(dateTime).arg(sysTime.toString("yyyy-MM-dd-hh:mm:ss.zzz")).arg(cpuid).arg(mac_hexstr);\r
+ QString update_sql = QString("UPDATE bt_addrs SET used_flag=%1 ,update_time=%2 ,update_time_str=\"%3\" , cpuid = \"%4\" WHERE mac_addr = \"%5\"").arg(used).arg(dateTime).arg(sysTime.toString("yyyy-MM-dd-hh:mm:ss.zzz")).arg(cpuid).arg(mac_hexstr);\r
qDebug() << update_sql;\r
QSqlQuery query;\r
query.prepare(update_sql);\r
if (query.exec())\r
{\r
- int count = query.numRowsAffected();\r
+ count = query.numRowsAffected();\r
qDebug()<<"numRows updated "<< count;\r
\r
}\r