├── image.png ├── main.cpp ├── README.md ├── serialPort_xyz.pro ├── widget.h ├── walkroute.html ├── widget.cpp ├── widget.ui └── serialPort_xyz.pro.user /image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/markoxu/QT-Serialport-Debugging/HEAD/image.png -------------------------------------------------------------------------------- /main.cpp: -------------------------------------------------------------------------------- 1 | #include "widget.h" 2 | #include 3 | 4 | int main(int argc, char *argv[]) 5 | { 6 | QApplication a(argc, argv); 7 | Widget w; 8 | w.setFixedSize(914, 663); 9 | w.show(); 10 | 11 | return a.exec(); 12 | } 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # QT_Serialport_Debugging 2 | 基于QT5.5.0写的串口调试助手+百度地图
3 | 1. 串口助手
4 | 可以像串口助手一样使用,但是不能收发中文
5 | 可以收发字符串/十六进制数据
6 | 2. 百度地图
7 | 需要在walkroute.html中使用自己的百度地图api密钥
8 | 在widget.cpp将html改为绝对路径,否则可能无法正常显示百度地图
9 | 地图中的起点与终点可以拖拽,并会自动检索出合适的导航路径与路径关键点
10 | qq:704712641
11 | 3. 界面截图
12 | ![image](https://github.com/MarkoXyz/QT_Serialport_Debugging/blob/master/image.png) 13 | -------------------------------------------------------------------------------- /serialPort_xyz.pro: -------------------------------------------------------------------------------- 1 | #------------------------------------------------- 2 | # 3 | # Project created by QtCreator 2018-05-28T19:42:31 4 | # 5 | #------------------------------------------------- 6 | 7 | QT += core gui 8 | QT += serialport 9 | QT += network 10 | QT += webkitwidgets 11 | 12 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 13 | 14 | TARGET = serialPort_xyz 15 | TEMPLATE = app 16 | 17 | 18 | SOURCES += main.cpp\ 19 | widget.cpp 20 | 21 | HEADERS += widget.h 22 | 23 | FORMS += widget.ui 24 | 25 | CONFIG += C++11 26 | -------------------------------------------------------------------------------- /widget.h: -------------------------------------------------------------------------------- 1 | #ifndef WIDGET_H 2 | #define WIDGET_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | 13 | namespace Ui { 14 | class Widget; 15 | } 16 | 17 | class Widget : public QWidget 18 | { 19 | Q_OBJECT 20 | 21 | public: 22 | explicit Widget(QWidget *parent = 0); 23 | ~Widget(); 24 | 25 | private slots: 26 | void initButton(); 27 | void openButton(); 28 | void closeButton(); 29 | void portFind(); 30 | void read_data(); 31 | void mysleep(int); 32 | void carStop(); 33 | 34 | void on_open_port_clicked(); 35 | void on_close_port_clicked(); 36 | void on_send_button_clicked(); 37 | 38 | void on_clear_receive_button_clicked(); 39 | void on_clear_send_button_clicked(); 40 | 41 | void on_fore_button_clicked(); 42 | void on_back_button_clicked(); 43 | void on_left_button_clicked(); 44 | void on_right_button_clicked(); 45 | void on_stop_button_clicked(); 46 | 47 | void on_video_button_clicked(); 48 | void on_vup_button_clicked(); 49 | void on_vdown_button_clicked(); 50 | void on_vleft_button_clicked(); 51 | void on_vright_button_clicked(); 52 | 53 | 54 | private: 55 | Ui::Widget *ui; 56 | QSerialPort *serialport; 57 | QProcess *mPorcess; 58 | bool videoIsopen; 59 | int videoUpDown; 60 | int videoLeftRight; 61 | }; 62 | 63 | #endif // WIDGET_H 64 | -------------------------------------------------------------------------------- /walkroute.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Track 7 | 13 | 14 | 126 | 127 | 128 | 129 |
130 |
131 | 132 | 133 |
134 | 135 | 136 | -------------------------------------------------------------------------------- /widget.cpp: -------------------------------------------------------------------------------- 1 | #include "widget.h" 2 | #include "ui_widget.h" 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | 10 | /*********************************************************************************************/ 11 | /*初始化*/ 12 | Widget::Widget(QWidget *parent) : 13 | QWidget(parent), 14 | ui(new Ui::Widget) 15 | { 16 | ui->setupUi(this); 17 | //初始化标题 18 | setWindowTitle("串口调试助手"); 19 | //初始化地图 需要使用绝对路径 20 | ui->webView->load(QUrl("file:///D:/serialPort/walkroute.html")); 21 | //初始化端口 22 | serialport = new QSerialPort(this); 23 | portFind(); 24 | //初始化按键 25 | initButton(); 26 | //初始化视频 27 | videoIsopen = false; 28 | mPorcess = new QProcess(this); 29 | videoUpDown = 150; 30 | videoLeftRight = 150; 31 | } 32 | //析构函数 33 | Widget::~Widget() 34 | { 35 | serialport->clear(); 36 | serialport->close(); 37 | delete ui; 38 | } 39 | 40 | 41 | /*********************************************************************************************/ 42 | /*初始化按键*/ 43 | void Widget::initButton() 44 | { 45 | ui->send_button->setEnabled(false); 46 | ui->close_port->setEnabled(true); 47 | ui->clear_send_button->setEnabled(false); 48 | ui->clear_receive_button->setEnabled(false); 49 | ui->send_state->setEnabled(false); 50 | ui->receive_state->setEnabled(false); 51 | ui->fore_button->setEnabled(false); 52 | ui->back_button->setEnabled(false); 53 | ui->left_button->setEnabled(false); 54 | ui->right_button->setEnabled(false); 55 | ui->stop_button->setEnabled(false); 56 | ui->vup_button->setEnabled(false); 57 | ui->vdown_button->setEnabled(false); 58 | ui->vleft_button->setEnabled(false); 59 | ui->vright_button->setEnabled(false); 60 | ui->video_button->setEnabled(false); 61 | } 62 | /*开启按键*/ 63 | void Widget::openButton() 64 | { 65 | ui->send_button->setEnabled(true); 66 | ui->close_port->setEnabled(true); 67 | ui->open_port->setEnabled(false); 68 | ui->clear_send_button->setEnabled(true); 69 | ui->clear_receive_button->setEnabled(true); 70 | ui->send_state->setEnabled(true); 71 | ui->receive_state->setEnabled(true); 72 | ui->com->setEnabled(false); 73 | ui->baud->setEnabled(false); 74 | ui->databit->setEnabled(false); 75 | ui->checkbit->setEnabled(false); 76 | ui->stopbit->setEnabled(false); 77 | ui->fore_button->setEnabled(true); 78 | ui->back_button->setEnabled(true); 79 | ui->left_button->setEnabled(true); 80 | ui->right_button->setEnabled(true); 81 | ui->stop_button->setEnabled(true); 82 | ui->vup_button->setEnabled(true); 83 | ui->vdown_button->setEnabled(true); 84 | ui->vleft_button->setEnabled(true); 85 | ui->vright_button->setEnabled(true); 86 | ui->video_button->setEnabled(true); 87 | } 88 | /*关闭按键*/ 89 | void Widget::closeButton() 90 | { 91 | ui->send_button->setEnabled(false); 92 | ui->open_port->setEnabled(true); 93 | ui->close_port->setEnabled(true); 94 | ui->clear_send_button->setEnabled(false); 95 | ui->clear_receive_button->setEnabled(false); 96 | ui->send_state->setEnabled(false); 97 | ui->receive_state->setEnabled(false); 98 | ui->fore_button->setEnabled(false); 99 | ui->back_button->setEnabled(false); 100 | ui->left_button->setEnabled(false); 101 | ui->right_button->setEnabled(false); 102 | ui->com->setEnabled(true); 103 | ui->baud->setEnabled(true); 104 | ui->databit->setEnabled(true); 105 | ui->checkbit->setEnabled(true); 106 | ui->stopbit->setEnabled(true); 107 | ui->stop_button->setEnabled(false); 108 | ui->vup_button->setEnabled(false); 109 | ui->vdown_button->setEnabled(false); 110 | ui->vleft_button->setEnabled(false); 111 | ui->vright_button->setEnabled(false); 112 | ui->video_button->setEnabled(false); 113 | ui->com->clear(); 114 | } 115 | 116 | 117 | /*********************************************************************************************/ 118 | /*自动查询串口*/ 119 | void Widget::portFind() 120 | { 121 | //检查可用的端口,添加到下拉框以供选择 122 | foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) 123 | { 124 | QSerialPort serial_num; 125 | serial_num.setPort(info); 126 | if(serial_num.open(QIODevice::ReadWrite)) 127 | { 128 | ui->com->addItem(serial_num.portName()); 129 | serial_num.close(); 130 | } 131 | } 132 | } 133 | 134 | 135 | /*********************************************************************************************/ 136 | /*打开串口*/ 137 | void Widget::on_open_port_clicked() 138 | { 139 | 140 | //初始化界面并初始化端口 141 | update(); 142 | //初始化串口的各项参数 143 | serialport->setPortName(ui->com->currentText()); 144 | //如果成功打开串口则允许设置参数,否则报错提示 145 | if(serialport->open(QIODevice::ReadWrite)) 146 | { 147 | //设置波特率 148 | serialport->setBaudRate(ui->baud->currentText().toInt()); 149 | //设置数据位 150 | switch (ui->databit->currentIndex()) { 151 | case 5: 152 | serialport->setDataBits(QSerialPort::Data5); 153 | break; 154 | case 6: 155 | serialport->setDataBits(QSerialPort::Data6); 156 | break; 157 | case 7: 158 | serialport->setDataBits(QSerialPort::Data7); 159 | break; 160 | case 8: 161 | serialport->setDataBits(QSerialPort::Data8); 162 | break; 163 | default: 164 | break; 165 | } 166 | //设置奇偶校验位 167 | switch (ui->checkbit->currentIndex()) { 168 | case 0: 169 | serialport->setParity(QSerialPort::NoParity); 170 | break; 171 | default: 172 | break; 173 | } 174 | //设置停止位 175 | switch (ui->stopbit->currentIndex()) { 176 | case 1: 177 | serialport->setStopBits(QSerialPort::OneStop); 178 | break; 179 | case 2: 180 | serialport->setStopBits(QSerialPort::TwoStop); 181 | break; 182 | default: 183 | break; 184 | } 185 | //设置流控制 186 | serialport->setFlowControl(QSerialPort::NoFlowControl); 187 | //串口设置完成,监听数据 188 | connect(serialport, &QSerialPort::readyRead, this, &Widget::read_data); 189 | //重置按键状态 190 | openButton(); 191 | } 192 | else 193 | {QMessageBox::information(this, tr("Warning"), tr("Cannot open this serialport!"), QMessageBox::Ok);} 194 | } 195 | /*关闭串口*/ 196 | void Widget::on_close_port_clicked() 197 | { 198 | //关闭串口,重置按键,重查串口,清空文本框 199 | serialport->clear(); 200 | serialport->close(); 201 | closeButton(); 202 | portFind(); 203 | ui->Send_text_win->clear(); 204 | ui->Receive_text_win->clear(); 205 | } 206 | 207 | 208 | /*********************************************************************************************/ 209 | /*接收数据*/ 210 | void Widget::read_data() 211 | { 212 | //qDebug()<<"read"; 213 | //字符串或者十六进制接收 214 | QByteArray buffer; 215 | buffer = serialport->readAll(); 216 | if(!buffer.isEmpty()) 217 | { 218 | QString str = ui->Receive_text_win->toPlainText(); 219 | if(ui->receive_state->currentText() == "string") 220 | { 221 | str = tr(buffer); 222 | ui->Receive_text_win->append(str); 223 | } 224 | else 225 | { 226 | QByteArray temp = buffer.toHex().toUpper(); 227 | str = tr(temp); 228 | ui->Receive_text_win->append(str); 229 | } 230 | } 231 | buffer.clear(); 232 | } 233 | /*发送数据*/ 234 | void Widget::on_send_button_clicked() 235 | { 236 | //qDebug()<<"send"; 237 | //字符串或者十六进制发送 238 | QString str = ui->Send_text_win->toPlainText(); 239 | if(!str.isEmpty()) 240 | { 241 | if(ui->send_state->currentText() == "string") 242 | { 243 | serialport->write(str.toLatin1()); 244 | } 245 | else 246 | { 247 | int num = str.toInt(); 248 | str = str.setNum(num, 16); 249 | serialport->write(str.toLatin1()); 250 | } 251 | } 252 | } 253 | 254 | 255 | /*********************************************************************************************/ 256 | /*清空接收窗口*/ 257 | void Widget::on_clear_receive_button_clicked() 258 | { 259 | ui->Receive_text_win->clear(); 260 | } 261 | /*清空发送窗口*/ 262 | void Widget::on_clear_send_button_clicked() 263 | { 264 | ui->Send_text_win->clear(); 265 | } 266 | 267 | 268 | /*********************************************************************************************/ 269 | /*小车微调控制*/ 270 | //需要先打开串口才能使用 271 | //停止按钮 272 | void Widget::on_stop_button_clicked() 273 | { 274 | QString str = "k04"; 275 | serialport->write(str.toLatin1()); 276 | } 277 | //前进按钮 278 | void Widget::on_fore_button_clicked() 279 | { 280 | QString str = "k00"; 281 | serialport->write(str.toLatin1()); 282 | carStop(); 283 | } 284 | //后退按钮 285 | void Widget::on_back_button_clicked() 286 | { 287 | QString str = "k01"; 288 | serialport->write(str.toLatin1()); 289 | carStop(); 290 | } 291 | //右转按钮 292 | void Widget::on_right_button_clicked() 293 | { 294 | QString str = "k02"; 295 | serialport->write(str.toLatin1()); 296 | carStop(); 297 | } 298 | //左转按钮 299 | void Widget::on_left_button_clicked() 300 | { 301 | QString str = "k03"; 302 | serialport->write(str.toLatin1()); 303 | carStop(); 304 | } 305 | //定时停止 306 | void Widget::carStop() 307 | { 308 | mysleep(600); 309 | QString str = "k04"; 310 | serialport->write(str.toLatin1()); 311 | } 312 | 313 | 314 | /*********************************************************************************************/ 315 | /*云台微调控制*/ 316 | //需要先打开串口才能使用 317 | //上抬按钮 318 | void Widget::on_vup_button_clicked() 319 | { 320 | videoUpDown += 10; 321 | if(videoUpDown >= 60 && videoUpDown <= 240) 322 | { 323 | QString str = "u0" + QString("%1").arg(videoUpDown, 3, 10, QLatin1Char('0')); 324 | serialport->write(str.toLatin1()); 325 | } 326 | else 327 | { 328 | videoUpDown = 240; 329 | QMessageBox::information(this, tr("Warning"), tr("Out of video control range!"), QMessageBox::Ok); 330 | } 331 | } 332 | //下降按钮 333 | void Widget::on_vdown_button_clicked() 334 | { 335 | videoUpDown -= 10; 336 | if(videoUpDown >= 60 && videoUpDown <= 240) 337 | { 338 | QString str = "u0" + QString("%1").arg(videoUpDown, 3, 10, QLatin1Char('0')); 339 | serialport->write(str.toLatin1()); 340 | } 341 | else 342 | { 343 | videoUpDown = 60; 344 | QMessageBox::information(this, tr("Warning"), tr("Out of video control range!"), QMessageBox::Ok); 345 | } 346 | } 347 | //左偏按钮 348 | void Widget::on_vleft_button_clicked() 349 | { 350 | videoLeftRight += 10; 351 | if(videoLeftRight >= 60 && videoLeftRight <= 240) 352 | { 353 | QString str = "r0" + QString("%1").arg(videoLeftRight, 3, 10, QLatin1Char('0')); 354 | serialport->write(str.toLatin1()); 355 | } 356 | else 357 | { 358 | videoLeftRight = 240; 359 | QMessageBox::information(this, tr("Warning"), tr("Out of video control range!"), QMessageBox::Ok); 360 | } 361 | } 362 | //右偏按钮 363 | void Widget::on_vright_button_clicked() 364 | { 365 | videoLeftRight -= 10; 366 | if(videoLeftRight >= 60 && videoLeftRight <= 240) 367 | { 368 | QString str = "r0" + QString("%1").arg(videoLeftRight, 3, 10, QLatin1Char('0')); 369 | serialport->write(str.toLatin1()); 370 | } 371 | else 372 | { 373 | videoLeftRight = 60; 374 | QMessageBox::information(this, tr("Warning"), tr("Out of video control range!"), QMessageBox::Ok); 375 | } 376 | } 377 | 378 | 379 | /*********************************************************************************************/ 380 | /*视频画面开关控制*/ 381 | //需要先打开串口才能使用 382 | void Widget::on_video_button_clicked() 383 | { 384 | if(videoIsopen == false) 385 | { 386 | mPorcess->start("notepad"); 387 | ui->video_button->setText("关闭视频"); 388 | videoIsopen = true; 389 | } 390 | else 391 | { 392 | mPorcess->close(); 393 | ui->video_button->setText("打开视频"); 394 | videoIsopen = false; 395 | } 396 | } 397 | 398 | 399 | /*********************************************************************************************/ 400 | /*延时函数*/ 401 | void Widget::mysleep(int msec) 402 | { 403 | QTime dieTime = QTime::currentTime().addMSecs(msec); 404 | while( QTime::currentTime() < dieTime ) 405 | QCoreApplication::processEvents(QEventLoop::AllEvents, 100); 406 | } 407 | -------------------------------------------------------------------------------- /widget.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Widget 4 | 5 | 6 | true 7 | 8 | 9 | 10 | 0 11 | 0 12 | 914 13 | 663 14 | 15 | 16 | 17 | 18 | 0 19 | 0 20 | 21 | 22 | 23 | Widget 24 | 25 | 26 | 27 | 28 | 10 29 | 10 30 | 331 31 | 641 32 | 33 | 34 | 35 | 36 | 37 | 38 | 接收窗口 39 | 40 | 41 | 42 | 43 | 44 | 45 | true 46 | 47 | 48 | 49 | 50 | 51 | 52 | 清空数据 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | string 61 | 62 | 63 | 64 | 65 | hex 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 发送窗口 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 0 82 | 0 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 发送数据 91 | 92 | 93 | 94 | 95 | 96 | 97 | 清空数据 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | string 106 | 107 | 108 | 109 | 110 | hex 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 端口配置 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 端口号: 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 波特率: 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 9600 150 | 151 | 152 | 153 | 154 | 2400 155 | 156 | 157 | 158 | 159 | 4800 160 | 161 | 162 | 163 | 164 | 14400 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 数据位 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 8 185 | 186 | 187 | 188 | 189 | 5 190 | 191 | 192 | 193 | 194 | 6 195 | 196 | 197 | 198 | 199 | 7 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 校验位: 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | None 220 | 221 | 222 | 223 | 224 | Odd 225 | 226 | 227 | 228 | 229 | Even 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 停止位: 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 1 250 | 251 | 252 | 253 | 254 | 2 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 打开串口 265 | 266 | 267 | 268 | 269 | 270 | 271 | 关闭串口 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 340 281 | 20 282 | 20 283 | 641 284 | 285 | 286 | 287 | Qt::Vertical 288 | 289 | 290 | 291 | 292 | 293 | 360 294 | 10 295 | 541 296 | 431 297 | 298 | 299 | 300 | 301 | about:blank 302 | 303 | 304 | 305 | 306 | 307 | 308 | 370 309 | 440 310 | 531 311 | 21 312 | 313 | 314 | 315 | 316 | 0 317 | 0 318 | 319 | 320 | 321 | Qt::Horizontal 322 | 323 | 324 | 325 | 326 | 327 | 360 328 | 460 329 | 541 330 | 191 331 | 332 | 333 | 334 | 335 | 336 | 337 | Qt::Vertical 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 小车控制 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 0 357 | 0 358 | 359 | 360 | 361 | 后退 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 0 370 | 0 371 | 372 | 373 | 374 | 左转 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 0 383 | 0 384 | 385 | 386 | 387 | 右转 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 0 396 | 0 397 | 398 | 399 | 400 | 前进 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 0 409 | 0 410 | 411 | 412 | 413 | 停止 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 云台控制 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 0 437 | 0 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 0 450 | 0 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 0 463 | 0 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 0 476 | 0 477 | 478 | 479 | 480 | 打开视频 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 0 489 | 0 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | Qt::Vertical 505 | 506 | 507 | 508 | 509 | 510 | line_1 511 | layoutWidget 512 | webView 513 | layoutWidget 514 | line_2 515 | 516 | 517 | 518 | 519 | QWebView 520 | QWidget 521 |
QtWebKitWidgets/QWebView
522 |
523 |
524 | 525 | 526 |
527 | -------------------------------------------------------------------------------- /serialPort_xyz.pro.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | EnvironmentId 7 | {38be6a83-0a18-48a5-a0c7-93b9b52d3a54} 8 | 9 | 10 | ProjectExplorer.Project.ActiveTarget 11 | 0 12 | 13 | 14 | ProjectExplorer.Project.EditorSettings 15 | 16 | true 17 | false 18 | true 19 | 20 | Cpp 21 | 22 | CppGlobal 23 | 24 | 25 | 26 | QmlJS 27 | 28 | QmlJSGlobal 29 | 30 | 31 | 2 32 | UTF-8 33 | false 34 | 4 35 | false 36 | 80 37 | true 38 | true 39 | 1 40 | true 41 | false 42 | 0 43 | true 44 | 0 45 | 8 46 | true 47 | 1 48 | true 49 | true 50 | true 51 | false 52 | 53 | 54 | 55 | ProjectExplorer.Project.PluginSettings 56 | 57 | 58 | 59 | ProjectExplorer.Project.Target.0 60 | 61 | Desktop Qt 5.5.0 MinGW 32bit 62 | Desktop Qt 5.5.0 MinGW 32bit 63 | qt.55.win32_mingw492_kit 64 | 0 65 | 0 66 | 0 67 | 68 | D:/car_log/build-serialPort_xyz-Desktop_Qt_5_5_0_MinGW_32bit-Debug 69 | 70 | 71 | true 72 | qmake 73 | 74 | QtProjectManager.QMakeBuildStep 75 | false 76 | true 77 | 78 | false 79 | false 80 | false 81 | 82 | 83 | true 84 | Make 85 | 86 | Qt4ProjectManager.MakeStep 87 | 88 | false 89 | 90 | 91 | 92 | 2 93 | 构建 94 | 95 | ProjectExplorer.BuildSteps.Build 96 | 97 | 98 | 99 | true 100 | Make 101 | 102 | Qt4ProjectManager.MakeStep 103 | 104 | true 105 | clean 106 | 107 | 108 | 1 109 | 清理 110 | 111 | ProjectExplorer.BuildSteps.Clean 112 | 113 | 2 114 | false 115 | 116 | Debug 117 | 118 | Qt4ProjectManager.Qt4BuildConfiguration 119 | 2 120 | true 121 | 122 | 123 | D:/car_log/build-serialPort_xyz-Desktop_Qt_5_5_0_MinGW_32bit-Release 124 | 125 | 126 | true 127 | qmake 128 | 129 | QtProjectManager.QMakeBuildStep 130 | false 131 | true 132 | 133 | false 134 | false 135 | false 136 | 137 | 138 | true 139 | Make 140 | 141 | Qt4ProjectManager.MakeStep 142 | 143 | false 144 | 145 | 146 | 147 | 2 148 | 构建 149 | 150 | ProjectExplorer.BuildSteps.Build 151 | 152 | 153 | 154 | true 155 | Make 156 | 157 | Qt4ProjectManager.MakeStep 158 | 159 | true 160 | clean 161 | 162 | 163 | 1 164 | 清理 165 | 166 | ProjectExplorer.BuildSteps.Clean 167 | 168 | 2 169 | false 170 | 171 | Release 172 | 173 | Qt4ProjectManager.Qt4BuildConfiguration 174 | 0 175 | true 176 | 177 | 2 178 | 179 | 180 | 0 181 | 部署 182 | 183 | ProjectExplorer.BuildSteps.Deploy 184 | 185 | 1 186 | 在本地部署 187 | 188 | ProjectExplorer.DefaultDeployConfiguration 189 | 190 | 1 191 | 192 | 193 | 194 | false 195 | false 196 | false 197 | false 198 | true 199 | 0.01 200 | 10 201 | true 202 | 1 203 | 25 204 | 205 | 1 206 | true 207 | false 208 | true 209 | valgrind 210 | 211 | 0 212 | 1 213 | 2 214 | 3 215 | 4 216 | 5 217 | 6 218 | 7 219 | 8 220 | 9 221 | 10 222 | 11 223 | 12 224 | 13 225 | 14 226 | 227 | 2 228 | 229 | serialPort_xyz 230 | serialPort_xyz2 231 | Qt4ProjectManager.Qt4RunConfiguration:D:/car_log/serialPort_xyz0709/serialPort_xyz.pro 232 | 233 | serialPort_xyz.pro 234 | false 235 | false 236 | 237 | 3768 238 | false 239 | true 240 | false 241 | false 242 | true 243 | 244 | 1 245 | 246 | 247 | 248 | ProjectExplorer.Project.TargetCount 249 | 1 250 | 251 | 252 | ProjectExplorer.Project.Updater.FileVersion 253 | 18 254 | 255 | 256 | Version 257 | 18 258 | 259 | 260 | --------------------------------------------------------------------------------