超级终端控制台命令行Serial串口调试工具-软件说明文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
超级终端控制台命令行Serial串口调试工具
软件文档
积分下载可免费提供技术支持,需要本程序源代码的可联系作者。
目录
1 设计目的 (2)
1.1 基本功能 (2)
1.2 开发环境 (2)
2 使用说明 (2)
2.1 页面介绍 (2)
2.2 调试窗口的使用 (3)
3 全局及运行流程 (3)
3.1 主函数流程 (3)
3.2 数据发送流程 (4)
3.3 数据接收流程 (4)
3.5 全局数据 (5)
3.5.1配置数据 (5)
4 各功能页面 (5)
4.1 串口参数配置页面ParamDialog (5)
4.1.1界面设计 (5)
4.1.2类设计 (6)
4.1.3保存配置文件 (7)
4.1.4加载配置 (7)
4.1.5显示端口信息 (7)
4.1.6指定名称处理 (7)
4.1.7指定波特率的处理 (7)
4.1.8填充候选参数 (8)
4.1.9显示UI页面 (8)
4.1.10获取页面的最新配置数据 (8)
4.1.11确认保存 (8)
4.2 主窗口页面MainWindow (8)
4.2.1界面设计 (8)
4.2.2类设计 (9)
4.2.3关闭窗口 (11)
4.2.4关闭串口 (11)
4.2.5连接串口 (11)
4.2.6写串口 (11)
4.2.7读串口 (11)
4.2.8处理出错信息 (11)
4.2.9快捷发送页面 (12)
4.2.10加载用户喜好配置 (12)
4.2.11保存用户喜好 (12)
4.3 控制台控件Console (12)
4.3.1控件设计 (12)
4.3.2类设计 (12)
4.3.3设置控制台的编辑状态 (13)
4.3.4自定义粘贴行为 (13)
4.3.5将数据显示到控制台 (13)
4.3.6按键响应处理 (14)
4.3.7鼠标点击响应处理 (14)
4.3.8查找关键字 (14)
4.4 选项配置页面ConfigDialog (14)
4.4.1界面设计 (14)
4.4.2类设计 (14)
4.4.3加载配置 (15)
4.4.4保存配置文件 (15)
4.1.5显示UI页面 (15)
4.1.6获取页面的最新配置数据 (16)
4.1.7加载默认配置按钮执行 (16)
4.1.8确认保存 (16)
1 设计目的
1.1 基本功能
仿照Windows XP以前系统带的串口超级终端的功能,通过实际使用经验,自行编写超级终端程序。
可完成人机交互,配置信息保存,底部自带编辑窗口,可复制文件等功能,非常方便在需要用Console完成交互的情况下使用。
其中串口名称、波特率可支持自定义,方便跨平台使用。
MARK32000-
1.2 开发环境
采用Windows 系统下的Qt 5.10.1版本,串口库有使用Qt自带的串口类。
2 使用说明
2.1 页面介绍
运行程序后,会进入参数配置页面。
选择好需要的串口号,波特率后,点击确定并保存。
参数配置页面如下:
加载默认值,可以用在参数设置乱了的情况下恢复。
确定并保存可保存配置信息到文件,下次打自动显示。
2.2 调试窗口的使用
为方便编码即调试,设计中使用了调试窗口,方便控制台打印信息。
开启调试窗口的方法是:在项目代码目录的.pro项目文件中添加一行:CONFIG += console#显示控制台提示窗口,以方便调试MARK-28121
3 全局及运行流程
3.1 主函数流程
3.2 数据发送流程
当控制台
Console 获得按键输入后,会发送信号到主窗口,由主窗口的槽函数,完成数据的的发送。
数据发送流程如下。
3.3 数据接收流程
当串口获得数据后,将触发主窗口中的槽函数,调用Console 中的函数,将数据显示出来。
数据接收流程如下。
3.5 全局数据
3.5.1配置数据
功能: 配置数据
说明: 端口配置数据,可保持到配置文件中
typedef struct {
QString name;//串口端口名称
qint32 baudRate;//串口波特率
QSerialPort::DataBits dataBits;//数据位数//实际使用的类型,和string开头的对应,可方便使用
QSerialPort::Parity parity;//校验
QSerialPort::StopBits stopBits;//停止位
QSerialPort::FlowControl flowControl;//流量控制
QString stringDataBits;//增加同样的字符串格式配置,可方便编程及用户显示
QString stringParity;//字符串版本
QString stringStopBits;//停止位
QString stringFlowControl;//流控
int localEchoEnabled;//是否本地回显0-不回显
}ConfigData;
extern ConfigData setting;//声明extern以方便引用此头文件的地方,都可直接使用此全局变量
extern const ConfigData defaultSetting;//定义全局的默认配置数据
4 各功能页面
4.1 串口参数配置页面ParamDialog
4.1.1界面设计
界面设计如下:
4.1.2类设计
类的成员包括:
explicit ParamDialog(QWidget *parent = 0);
~ParamDialog();
void loadConfigData(ConfigData &configData);//加载配置
void setUIConfigData(const ConfigData &configData);//根据配置数据,重新显示页面
bool firstConfig = false;//是否已完成第一次配置,用于启动时判断用
槽函数包括:
private slots:
void showPortInfo(int idx);//显示端口的详细信息
void checkCustomBaudRatePolicy(int idx);//客户波特率自定义选项(Custom)的处理void on_btnCancel_clicked();//取消
void on_btnLoadDefaultConfig_clicked();//加载默认配置
void on_btnConfirmSave_clicked();//确定并保存
私有函数及成员:
private:
void fillUICandidate();//填充候选参数
bool checkCustomPortNamePolicy(int idx);//客户串口名自定义选项(Custom)的处理(放到showPortInfo()里面了)
void saveConfigFile(const ConfigData &configData);//保存配置文件
void updateSetting();//获取最新页面数据,并跟新全局setting配置
Ui::ParamDialog *ui;//
QIntValidator *m_intValidator = nullptr;//输入合法性判断
构造函数如下:
ParamDialog::ParamDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ParamDialog)
,m_intValidator(new QIntValidator(0, 4000000, this))//设定波特率的范围
{
ui->setupUi(this);
connect(ui->cbSerialPort, QOverload<int>::of(&QComboBox::currentIndexChanged),//连接重载为int的信号
this, &ParamDialog::showPortInfo);
connect(ui->cbBaudRate, QOverload<int>::of(&QComboBox::currentIndexChanged),//关联选择项改变时调用的槽
this, &ParamDialog::checkCustomBaudRatePolicy);
fillUICandidate();//填充待选参数
}
4.1.3保存配置文件
函数功能:保存配置到文件
输入输出:null
返回值:void
说明:槽函数
void ParamDialog::saveConfigFile(const ConfigData &configData)
4.1.4加载配置
函数功能:加载配置时调用
输入输出:ConfigData &configData
返回值:void
说明:加载.ini配置文件
void ParamDialog::loadConfigData(ConfigData &configData)
4.1.5显示端口信息
函数功能:显示端口信息
输入输出:int idx 索引项
返回值:void
说明:槽函数
void ParamDialog::showPortInfo(int idx)
4.1.6指定名称处理
函数功能:指定名称处理
输入输出:int idx 索引项
返回值:void
说明:客户自定义选项(Custom)的处理(放到showPortInfo()里面了)
bool ParamDialog::checkCustomPortNamePolicy(int idx)
4.1.7指定波特率的处理
函数功能:指定波特率的处理
输入输出:int idx 索引项
返回值:void
说明:槽函数
void ParamDialog::checkCustomBaudRatePolicy(int idx)
4.1.8填充候选参数
函数功能:填充候选参数
输入输出:
返回值:void
说明:槽函数
void ParamDialog::fillUICandidate()
4.1.9显示UI页面
函数功能:根据配置数据,显示UI页面
输入输出:const ConfigData &configData
返回值:void
说明:加载.ini配置文件
void ParamDialog::setUIConfigData(const ConfigData &configData) 4.1.10获取页面的最新配置数据
函数功能:获取页面的最新配置数据
输入输出:
返回值:void
说明:修改全局变量setting的值
void ParamDialog::updateSetting()
4.1.11确认保存
函数功能:确认保存按钮
输入输出:
返回值:void
说明:槽函数
void ParamDialog::on_btnConfirmSave_clicked()
4.2 主窗口页面MainWindow
4.2.1界面设计
界面设计如下:
4.2.2类设计
类的成员包括:
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
void setUIConfigData(const ConfigData &configData);//根据配置数据,重新显示页面,改变配置文件后需调用一次
void loadFavoriteSettings();//加载用户操作习惯(窗口大小)配置
protected:
void closeEvent(QCloseEvent *event) override;//重写关闭事件
槽函数:
private slots:
void writeData(const QByteArray &data);//写串口数据槽
void readData();//读串口数据槽
void handleError(QSerialPort::SerialPortError error);//处理串口错误槽
void on_actionConnect_triggered();//连接//菜单和工具栏项
void on_actionDisconnect_triggered();
void on_actionSettings_triggered();//串口参数设置
void on_actionOptions_triggered();
void on_actionClear_triggered();
void on_actionFind_triggered();
void on_actionAbout_triggered();
void on_actionQuick_triggered();//快捷发送
私有成员:
Ui::MainWindow *ui;
void showStatusMessage(const QString &message);//显示信息到状态栏
void closeSerialPort();//关闭串口
void saveFavoriteSettings();//保存用户操作习惯(窗口大小)到文件中
QLabel *m_status = nullptr;
Console *m_console = nullptr;
QPlainTextEdit* edit = nullptr;//底行编辑功能
QSerialPort *m_serial = nullptr;//串口对象指针
QLineEdit* keyword;//查找的关键字
公有成员:
ConfigDialog *configDialog = nullptr;//配置对话框
构造函数设计如下:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
,m_status(new QLabel)//状态栏控件
,m_serial(new QSerialPort(this))//串口对象
,configDialog(new ConfigDialog)//配置窗口不是主窗口的子窗口
{
ui->setupUi(this);
QVBoxLayout *verticalLayout;//设置垂直布局,用于对页面的中央主控件布局
verticalLayout = new QVBoxLayout(ui->centralWidget);
verticalLayout->setSpacing(0);//不留空白
verticalLayout->setContentsMargins(0, 0, 0, 0);//
m_console = new Console(ui->centralWidget);//控制台控件
verticalLayout->addWidget(m_console);//添加到主布局中
edit = new QPlainTextEdit(ui->centralWidget);//底部编辑栏控件
edit->setMaximumHeight(40);//设置最大高度
verticalLayout->addWidget(edit);//添加到主布局中
ui->statusBar->addWidget(m_status);//添加状态栏
keyword = new QLineEdit(this);//查找功能
ui->editToolBar->setMaximumWidth(180);//设置查找窗口大小
ui->editToolBar->insertWidget(ui->actionFind,keyword);//插入到工具栏中
setTabOrder(m_console,edit);//设定tab顺序
setTabOrder(edit,keyword);//
ui->actionConnect->setEnabled(true);//可用
ui->actionDisconnect->setEnabled(false);//开始时不可用状态
ui->actionSettings->setEnabled(true);//
ui->actionQuick->setEnabled(false);
//将控制台控件的用户编辑信号,关联到底部控件的槽
connect(m_console,&Console::userEdit,edit,&QPlainTextEdit::setPlainText);
connect(ui->actionExit, &QAction::triggered, this, &MainWindow::close);//关联退出
connect(m_serial, &QSerialPort::errorOccurred, this, &MainWindow::handleError);//关联串口错误信号槽
connect(m_serial, &QSerialPort::readyRead, this, &MainWindow::readData);//关联读取数据
connect(m_console, &Console::getData, this, &MainWindow::writeData);//关联用户输入数据的信号槽
4.2.3关闭窗口
函数功能:关闭窗口
输入输出:QCloseEvent *event
返回值:void
说明:保存用户喜好
void MainWindow::closeEvent(QCloseEvent *event)
4.2.4关闭串口
函数功能:关闭串口
输入输出:
返回值:void
说明:
void MainWindow::closeSerialPort()
4.2.5连接串口
函数功能:连接串口
输入输出:
返回值:
说明:
void MainWindow::on_actionConnect_triggered()
4.2.6写串口
函数功能:写串口
输入输出:const QByteArray &data
返回值:void
说明:
void MainWindow::writeData(const QByteArray &data)
4.2.7读串口
函数功能:读串口
输入输出:
返回值:void
说明:槽函数
void MainWindow::readData()
4.2.8处理出错信息
函数功能:处理出错信息
输入输出:QSerialPort::SerialPortError error
返回值:void
说明:槽函数
void MainWindow::handleError(QSerialPort::SerialPortError error)
4.2.9快捷发送页面
函数功能:快捷发送
输入输出:
返回值:void
说明:
void MainWindow::on_actionQuick_triggered()
4.2.10加载用户喜好配置
函数功能:加载用户喜好配置
输入输出:
返回值:void
说明:
void MainWindow::loadFavoriteSettings()
4.2.11保存用户喜好
void ParamDialog::on_btnConfirmSave_clicked()
函数功能:保存用户喜好配置
输入输出:
返回值:void
说明:
void MainWindow::saveFavoriteSettings()
4.3 控制台控件Console
4.3.1控件设计
控制台控件继承自QPlainTextEdit。
4.3.2类设计
类的成员包括:
信号signals:
void getData(const QByteArray &data);//当获取到用户键盘输入文本时,发送该信号以便写串口
void userEdit(const QString &text);//发送用户需要编辑的文本行,以便在底行编辑
槽函数public slots:
void setLocalEchoEnabled(int set);//设置是否本地自动回显
void setEditPos();//设置用户输入光标,以达到只有在当前行可编辑状态
公有成员public:
explicit Console(QWidget *parent = nullptr);
void putData(const QByteArray &data);//串口收到数据后,向控制台界面上显示数据void findWord(const QString &word);//查找字符串用
重写父类函数protected:
void keyPressEvent(QKeyEvent *e) override;//重写按键消息
void mousePressEvent(QMouseEvent *e) override;//重写鼠标按键消息
//void mouseDoubleClickEvent(QMouseEvent *e) override;//鼠标双击时的处理函数
//void contextMenuEvent(QContextMenuEvent *e) override;//弹出右键菜单用
//void focusInEvent(QFocusEvent *e);//当获得输入焦点时的处理函数
void insertFromMimeData(const QMimeData *source);//插入富文本时调用(粘贴或者拖拽到窗口时)
私有成员private:
bool m_localEchoEnabled = false;//是否打开本地回显功能
int editLine = 0;//当前编辑行(放到底部可编辑的)
构造函数设计如下:
document()->setMaximumBlockCount(200);//设置最大200行
QPalette p = palette();
p.setColor(QPalette::Base, Qt::black);//设置背景色为黑色
p.setColor(QPalette::Text, Qt::white);//字体为白色
setPalette(p);//设置调色板颜色
// QFont font = this->font();//设置字体大小参考
// font.setPointSize(10);
// this->setFont(font);
connect(this,&Console::cursorPositionChanged,this,&Console::setEditPos);//光标改变时调用
//connect(this,&Console::textChanged,this,&Console::setEditPos);//文本改变时调用
QScrollBar *bar = verticalScrollBar();//设置滚动条
bar->setValue(bar->maximum());//设为最大
4.3.3设置控制台的编辑状态
函数功能:设置控制台的编辑状态
输入输出:
返回值:void
说明:类似命令行控制台,当前行可编辑,其它行不可编辑
void Console::setEditPos()
4.3.4自定义粘贴行为
函数功能:自定义粘贴行为
输入输出:const QMimeData *source
返回值:void
说明:若发生粘贴或者拖拽时,调用处理
void Console::insertFromMimeData(const QMimeData *source)
4.3.5将数据显示到控制台
函数功能:将数据显示到控制台
输入输出:const QByteArray &data
返回值:void
说明:接收到数据或者快捷发送时会调用
void Console::putData(const QByteArray &data) 4.3.6按键响应处理
函数功能:按键响应处理
输入输出:QKeyEvent *e
返回值:void
说明:
void Console::keyPressEvent(QKeyEvent *e)
4.3.7鼠标点击响应处理
函数功能:鼠标点击响应处理
输入输出:QMouseEvent *e
返回值:void
说明:
void Console::mousePressEvent(QMouseEvent *e) 4.3.8查找关键字
函数功能:查找关键字
输入输出:QMouseEvent *e
返回值:void
说明:
void Console::findWord(const QString &word)
4.4 选项配置页面ConfigDialog
4.4.1界面设计
界面设计如下:
4.4.2类设计
类的成员包括:
public:
explicit ConfigDialog(QWidget *parent = 0);
~ConfigDialog();
void loadConfigData(ConfigData &configData);//从配置文件中加载配置
void setUIConfigData(const ConfigData &configData);//根据配置设置界面
私有槽函数private slots:
void on_btnLoadDefaultConfig_clicked();//加载默认配置
void on_btnConfirmSave_clicked();
void on_btnCancel_clicked();
私有成员private:
void saveConfigFile(const ConfigData& configData);//保存配置到配置文件
void updateConfigData(ConfigData &configData);//获取界面上用户输入的配置Ui::ConfigDialog *ui;
构造函数如下:
ConfigDialog::ConfigDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ConfigDialog)
{
ui->setupUi(this);
setUIConfigData(defaultSetting);//先用默认数据进行初始化
}
4.4.3加载配置
函数功能:加载配置文件
输入输出:
返回值:void
说明:加载.ini配置文件,可打开可运行目录下的XXX.ini文件以便加深理解void ConfigDialog::loadConfigData(ConfigData &configData)
4.4.4保存配置文件
函数功能:保存配置到文件
输入输出:null
返回值:void
说明:槽函数
void ConfigDialog::saveConfigFile(const ConfigData& configData)
4.4.5显示UI页面
函数功能:根据配置数据,显示UI页面
输入输出:const ConfigData &configData
返回值:void
说明:
void ConfigDialog::setUIConfigData(const ConfigData &configData)
4.4.6获取页面的最新配置数据
bool ParamDialog::checkCustomPortNamePolicy(int idx)
函数功能:获取页面的最新配置数据
输入输出:ConfigData &configData:输出
返回值:void
说明:
void ConfigDialog::updateConfigData(ConfigData &configData) 4.4.7加载默认配置按钮执行
函数功能:加载默认配置按钮执行
输入输出:ConfigData &configData:输出
返回值:void
说明:槽函数
void ConfigDialog::on_btnLoadDefaultConfig_clicked()
4.4.8确认保存
函数功能:确认保存
输入输出:ConfigData &configData:输出
返回值:void
说明:槽函数
void ConfigDialog::on_btnConfirmSave_clicked()。