超级终端控制台命令行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-281213 全局及运行流程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 串口参数配置页面ParamDialog4.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 主窗口页面MainWindow4.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 控制台控件Console4.3.1控件设计控制台控件继承自QPlainTextEdit。