标签:
在上篇日志Tera Term script for bootloader (uart)的基础上加个qt图形界面。
这样就不用手动改写配置文件了。
#include "mainwindow.h" #include "ui_mainwindow.h" #include <windows.h> #include <QProcess> #include <QDir> #include <Qfile> #include <QFileDialog> #include <QtCore/QTextStream> #include <QtCore/QFile> #include <QtCore/QIODevice> #include <QMessageBox> #include <QCoreApplication> #include <QDebug> #include <QtSerialPort/QSerialPort> #include <QtSerialPort/QSerialPortInfo> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); QDir *temp = new QDir; bool exist = temp->exists("C://config"); if(exist) { //QMessageBox::warning(this,tr("创建文件夹"),tr("文件夹已经存在!")); } else { bool ok = temp->mkdir("C://config"); if( ok ) { //QMessageBox::warning(this,tr("创建文件夹"),tr("文件夹创建成功!")); } } QProcess *cmd = new QProcess(); QString exe = QApplication::applicationDirPath().append("/copy.bat"); cmd->start(exe); foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { /* qDebug() << "Name : " << info.portName(); qDebug() << "Description : " << info.description(); qDebug() << "Manufacturer: " << info.manufacturer(); qDebug() << "Serial Number: " << info.serialNumber(); qDebug() << "System Location: " << info.systemLocation(); */ ui->textBrowser->append(info.portName()); ui->textBrowser->append(info.description()); ui->textBrowser->append(info.manufacturer()); ui->textBrowser->append(info.serialNumber()); ui->textBrowser->append(info.systemLocation()); if( ( info.manufacturer() == "Desay Weme" ) || ( info.description() == "FITBAND" ) || ( info.description() == "IWAN" ) || ( info.description() == "IWAN II" ) || ( info.description() == "USB 串行设备" ) || ( info.description() == "USB Serial Device" ) ) { com_info = info; com_num = com_info.portName().mid(3); break; } } my_serialport= new QSerialPort(); my_serialport->setPortName(com_info.portName()); my_serialport->open(QIODevice::ReadWrite); my_serialport->setBaudRate(QSerialPort::Baud115200,QSerialPort::AllDirections); my_serialport->setDataBits(QSerialPort::Data8); my_serialport->setParity(QSerialPort::NoParity); my_serialport->setStopBits(QSerialPort::OneStop); my_serialport->setFlowControl(QSerialPort::NoFlowControl); connect(my_serialport,SIGNAL(readyRead()),this,SLOT(my_readuart())); my_serialport->write("AT+VER\r\n"); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_commandLinkButton_clicked() { if(ver_num<48) { QMessageBox::warning(this,tr("warning"),tr("您的固件版本不适配,请先升级蓝牙固件!")); return; } if(ui->lineEdit_mcu->text()!= NULL) QProcess::startDetached(tr("teraterm\\ttpmacro.exe"),QStringList("C:\\config\\mcu.ttl")); } void MainWindow::on_commandLinkButton_ziku_clicked() { if(ui->lineEdit_ziku->text()!= NULL) QProcess::startDetached(tr("teraterm\\ttpmacro.exe"),QStringList("C:\\config\\ziku.ttl")); } void MainWindow::on_commandLinkButton_boot_clicked() { if(ui->lineEdit_boot->text()!= NULL) QProcess::startDetached(tr("teraterm\\ttpmacro.exe"),QStringList("C:\\config\\boot.ttl")); } void MainWindow::on_commandLinkButton_all_clicked() { if( (ui->lineEdit_mcu->text()== NULL) && (ui->lineEdit_ziku->text()== NULL) && (ui->lineEdit_boot->text()== NULL)) return; if(ver_num<48) { QMessageBox::warning(this,tr("warning"),tr("您的固件版本不适配,请先升级蓝牙固件!")); return; } QString sFilePath = "C:\\config\\config.txt"; QFile file(sFilePath); if (!file.open(QIODevice::WriteOnly|QIODevice::Text)) { QMessageBox::critical(NULL, "提示", "无法创建文件"); return; } QTextStream out(&file); out<<"com = ‘/c=28 /baud=115200‘"<<endl; if(ui->lineEdit_mcu->text()!= NULL) out<<"makepath path_mcu "<<"‘"<<file_path_mcu<<"‘"<<" "<<"‘"<<file_name_mcu<<"‘"<<endl; if(ui->lineEdit_ziku->text()!= NULL) out<<"makepath path_ziku "<<"‘"<<file_path_ziku<<"‘"<<" "<<"‘"<<file_name_ziku<<"‘"<<endl; if(ui->lineEdit_boot->text()!= NULL) out<<"makepath path_boot "<<"‘"<<file_path_boot<<"‘"<<" "<<"‘"<<file_name_boot<<"‘"<<endl; out.flush(); file.close(); QString sFilePath1 = "C:\\config\\all.ttl"; QFile file1(sFilePath1); if (!file1.open(QIODevice::WriteOnly|QIODevice::Text)) { QMessageBox::critical(NULL, "提示", "无法创建文件"); return; } QTextStream out1(&file1); out<<"com = ‘/c="<<com_num<<" /baud=115200‘"<<endl; if(ui->lineEdit_mcu->text()!= NULL) out1<<"include ‘mcu.ttl‘"<<endl<<"pause 5"<<endl; if(ui->lineEdit_ziku->text()!= NULL) out1<<"include ‘ziku.ttl‘"<<endl<<"pause 10"<<endl; if(ui->lineEdit_boot->text()!= NULL) out1<<"include ‘boot.ttl‘"<<endl; out1.flush(); file1.close(); QProcess::startDetached(tr("teraterm\\ttpmacro.exe"),QStringList("C:\\config\\all.ttl")); } void MainWindow::on_pushButton_clicked() { file_full_mcu = QFileDialog::getOpenFileName(this, tr("open file"), " ", tr("binfile(*.bin)"));//Allfile(*.*);; fi_mcu = QFileInfo(file_full_mcu); file_name_mcu = fi_mcu.fileName(); file_path_mcu = fi_mcu.absolutePath(); ui->lineEdit_mcu->setText(file_path_mcu+"\\"+file_name_mcu); QString sFilePath = "C:\\config\\config.txt"; QFile file(sFilePath); if (!file.open(QIODevice::WriteOnly|QIODevice::Text)) { QMessageBox::critical(NULL, "提示", "无法创建文件"); return; } QTextStream out(&file); out<<"com = ‘/c="<<com_num<<" /baud=115200‘"<<endl; out<<"makepath path_mcu "<<"‘"<<file_path_mcu<<"‘"<<" "<<"‘"<<file_name_mcu<<"‘"<<endl; out.flush(); file.close(); } void MainWindow::on_pushButton_2_clicked() { file_full_ziku = QFileDialog::getOpenFileName(this, tr("open file"), " ", tr("fontfile(*.xbf)"));//Allfile(*.*);; fi_ziku = QFileInfo(file_full_ziku); file_name_ziku = fi_ziku.fileName(); file_path_ziku = fi_ziku.absolutePath(); ui->lineEdit_ziku->setText(file_path_ziku+"\\"+file_name_ziku); QString sFilePath = "C:\\config\\config.txt"; QFile file(sFilePath); if (!file.open(QIODevice::WriteOnly|QIODevice::Text)) { QMessageBox::critical(NULL, "提示", "无法创建文件"); return; } QTextStream out(&file); out<<"com = ‘/c="<<com_num<<" /baud=115200‘"<<endl; out<<"makepath path_ziku "<<"‘"<<file_path_ziku<<"‘"<<" "<<"‘"<<file_name_ziku<<"‘"<<endl; out.flush(); file.close(); } void MainWindow::on_pushButton_3_clicked() { file_full_boot = QFileDialog::getOpenFileName(this, tr("open file"), " ", tr("bldfile(*.bld)"));//Allfile(*.*);; fi_boot = QFileInfo(file_full_boot); file_name_boot = fi_boot.fileName(); file_path_boot = fi_boot.absolutePath(); ui->lineEdit_boot->setText(file_path_boot+"\\"+file_name_boot); QString sFilePath = "C:\\config\\config.txt"; QFile file(sFilePath); if (!file.open(QIODevice::WriteOnly|QIODevice::Text)) { QMessageBox::critical(NULL, "提示", "无法创建文件"); return; } QTextStream out(&file); out<<"com = ‘/c="<<com_num<<" /baud=115200‘"<<endl; out<<"makepath path_boot "<<"‘"<<file_path_boot<<"‘"<<" "<<"‘"<<file_name_boot<<"‘"<<endl; out.flush(); file.close(); } void MainWindow::my_readuart() { QByteArray requestData; QByteArray ver; requestData = my_serialport->readAll(); ver=requestData.mid(15,3); ver_num= ver.toInt(); if(requestData!= NULL) { ui->textBrowser->append(tr(requestData)); qDebug() << ver_num; } requestData.clear(); my_serialport->close(); }
Tera Term script for bootloader (uart) add qt-gui
标签:
原文地址:http://www.cnblogs.com/dong1/p/5472370.html