码迷,mamicode.com
首页 > 其他好文 > 详细

Tera Term script for bootloader (uart) add qt-gui

时间:2016-05-09 01:40:08      阅读:889      评论:0      收藏:0      [点我收藏+]

标签:

在上篇日志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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!