版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
10超級(jí)終端掌握臺(tái)命令行Serial串口調(diào)試工具軟件文檔積分下載可免費(fèi)供給技術(shù)支持,需要本程序源代碼的可聯(lián)系作者。名目\l“_TOC_250024“設(shè)計(jì)目的 2\l“_TOC_250023“根本功能 2\l“_TOC_250022“開發(fā)環(huán)境 2\l“_TOC_250021“使用說明 2\l“_TOC_250020“頁面介紹 2\l“_TOC_250019“調(diào)試窗口的使用 3\l“_TOC_250018“全局及運(yùn)行流程 3\l“_TOC_250017“主函數(shù)流程 3\l“_TOC_250016“數(shù)據(jù)發(fā)送流程 4\l“_TOC_250015“數(shù)據(jù)接收流程 4\l“_TOC_250014“全局?jǐn)?shù)據(jù) 5\l“_TOC_250013“配置數(shù)據(jù) 5\l“_TOC_250012“各功能頁面 5\l“_TOC_250011“串口參數(shù)配置頁面ParamDialog 5\l“_TOC_250010“界面設(shè)計(jì) 5\l“_TOC_250009“類設(shè)計(jì) 6\l“_TOC_250008“保存配置文件 7\l“_TOC_250007“加載配置 7顯示端口信息 7指定名稱處理 7指定波特率的處理 7填充候選參數(shù) 8\l“_TOC_250006“顯示UI頁面 8獵取頁面的最配置數(shù)據(jù) 8\l“_TOC_250005“確認(rèn)保存 8\l“_TOC_250004“主窗口頁面MainWindow 8\l“_TOC_250003“界面設(shè)計(jì) 8類設(shè)計(jì) 9\l“_TOC_250002“關(guān)閉窗口 11關(guān)閉串口 11連接串口 11\l“_TOC_250001“寫串口 11讀串口 11\l“_TOC_250000“處理出錯(cuò)信息 11快捷發(fā)送頁面 12加載用戶喜好配置 12保存用戶喜好 12掌握臺(tái)控件Console 12控件設(shè)計(jì) 12類設(shè)計(jì) 12設(shè)置掌握臺(tái)的編輯狀態(tài) 13自定義粘貼行為 13將數(shù)據(jù)顯示到掌握臺(tái) 13按鍵響應(yīng)處理 14鼠標(biāo)點(diǎn)擊響應(yīng)處理 14查找關(guān)鍵字 14選項(xiàng)配置頁面ConfigDialog 14界面設(shè)計(jì) 14類設(shè)計(jì) 14加載配置 15保存配置文件 15顯示UI頁面 15獵取頁面的最配置數(shù)據(jù) 16加載默認(rèn)配置按鈕執(zhí)行 16確認(rèn)保存 16設(shè)計(jì)目的根本功能WindowsXP以前系統(tǒng)帶的串口超級(jí)終端的功能,通過實(shí)際使用閱歷,自行編寫超級(jí)終端程序。可完成人機(jī)交互,配置信息保存,底部自帶編輯窗口,可復(fù)制文件等功能,格外Console完成交互的狀況下使用。其中串口名稱、波特率可支持自定義,便利跨平臺(tái)使用。MARK32023-開發(fā)環(huán)境WindowsQt5.10.1Qt自帶的串口類。使用說明頁面介紹參數(shù)配置頁面如下:加載默認(rèn)值,可以用在參數(shù)設(shè)置亂了的狀況下恢復(fù)。確定并保存可保存配置信息到文件,下次打自動(dòng)顯示。調(diào)試窗口的使用為便利編碼即調(diào)試,設(shè)計(jì)中使用了調(diào)試窗口,便利掌握臺(tái)打印信息。開啟調(diào)試窗口的方法是:在工程代碼名目的.pro工程文件中添加一行:CONFIG+=console#顯示掌握臺(tái)提示窗口,以便利調(diào)試MARK-28121全局及運(yùn)行流程主函數(shù)流程創(chuàng)立應(yīng)用程序創(chuàng)立應(yīng)用程序參數(shù)配置對(duì)話框創(chuàng)立主窗口加載配置文件否是否完成配置處理消息循環(huán)是顯示主窗口主程序消息循環(huán)數(shù)據(jù)發(fā)送流程發(fā)送流程Console按鈕大事處理keyPressEvent發(fā)送流程Console按鈕大事處理keyPressEvent窗口主窗口槽函數(shù)串口發(fā)送數(shù)據(jù)接收流程當(dāng)串口獲得數(shù)據(jù)后,將觸發(fā)主窗口中的槽函數(shù),調(diào)用Console中的函數(shù),將數(shù)據(jù)顯示出來。數(shù)據(jù)接收流程如下。接收流程接收流程串口發(fā)送信號(hào)調(diào)用主窗口的readData函數(shù)調(diào)用Consle的putData函數(shù)Console完成處理顯示全局?jǐn)?shù)據(jù)配置數(shù)據(jù)功能:配置數(shù)據(jù)說明:端口配置數(shù)據(jù),可保持到配置文件中typedefstruct{QStringname;//串口端口名稱qint32baudRate;//串口波特率QSerialPort::DataBitsdataBits;//數(shù)據(jù)位數(shù)//實(shí)際使用的類型,和string開頭的對(duì)應(yīng),可便利使用QSerialPort::Parityparity;//校驗(yàn)QSerialPort::StopBitsstopBits;//停頓位QSerialPort::FlowControlflowControl;//流量掌握QStringstringDataBits;//增加同樣的字符串格式配置,可便利編程及用戶顯示QStringstringParity;//字符串版本QStringstringStopBits;//停頓位QStringstringFlowControl;//流控intlocalEchoEnabled;//是否本地回顯0-不回顯}ConfigData;externConfigDatasetting;//extern以便利引用此頭文件的地方,都可直接使用此全局變量externconstConfigDatadefaultSetting;//定義全局的默認(rèn)配置數(shù)據(jù)各功能頁面ParamDialog界面設(shè)計(jì)界面設(shè)計(jì)如下:類設(shè)計(jì)類的成員包括:explicitParamDialog(QWidget*parent=0);~ParamDialog;voidloadConfigData(ConfigData&configData);//加載配置voidsetUIConfigData(constConfigData&configData);//依據(jù)配置數(shù)據(jù),重顯示頁面boolfirstConfig=false;//是否已完成第一次配置,用于啟動(dòng)時(shí)推斷用槽函數(shù)包括:privateslots:voidshowPortInfo(intidx);//顯示端口的具體信息voidcheckCustomBaudRatePolicy(intidx);//客戶波特率自定義選項(xiàng)〔Custom〕的處理voidon_btnCancel_clicked;//取消voidon_btnLoadDefaultConfig_clicked;//加載默認(rèn)配置voidon_btnConfirmSave_clicked;//確定并保存私有函數(shù)及成員:private:voidfillUICandidate;//填充候選參數(shù)boolcheckCustomPortNamePolicy(intidx);//〔Custom〕〔放showPortInfo里面了〕voidsaveConfigFile(constConfigData&configData);//保存配置文件voidupdateSetting;//setting配置Ui::ParamDialog*ui;//QIntValidator*m_intValidator=nullptr;//輸入合法性推斷構(gòu)造函數(shù)如下:ParamDialog::ParamDialog(QWidget*parent):QDialog(parent),ui(newUi::ParamDialog),m_intValidator(newQIntValidator(0,4000000,this))//設(shè)定波特率的范圍{ui->setupUi(this);connect(ui->cbSerialPort,QOverload<int>::of(&QComboBox::currentIndexChanged),//連接int的信號(hào)this,&ParamDialog::showPortInfo);connect(ui->cbBaudRate, QOverload<int>::of(&QComboBox::currentIndexChanged),//關(guān)聯(lián)選擇項(xiàng)轉(zhuǎn)變時(shí)調(diào)用的槽this,&ParamDialog::checkCustomBaudRatePolicy);fillUICandidate;//填充待選參數(shù)}保存配置文件函數(shù)功能:保存配置到文件輸入輸出:null返回值:void說明:槽函數(shù)voidParamDialog::saveConfigFile(constConfigData&configData)加載配置函數(shù)功能:加載配置時(shí)調(diào)用輸入輸出:ConfigData&configData返回值:void說明:加載.ini配置文件voidParamDialog::loadConfigData(ConfigData&configData)顯示端口信息函數(shù)功能:顯示端口信息輸入輸出:intidx索引項(xiàng)返回值:void說明:槽函數(shù)voidParamDialog::showPortInfo(intidx)指定名稱處理函數(shù)功能:指定名稱處理輸入輸出:intidx索引項(xiàng)返回值:void說明:客戶自定義選項(xiàng)〔Custom〕的處理〔放到showPortInfo里面了〕boolParamDialog::checkCustomPortNamePolicy(intidx)指定波特率的處理函數(shù)功能:指定波特率的處理輸入輸出:intidx索引項(xiàng)返回值:void說明:槽函數(shù)voidParamDialog::checkCustomBaudRatePolicy(intidx)填充候選參數(shù)函數(shù)功能:填充候選參數(shù)輸入輸出:返回值:void說明:槽函數(shù)voidParamDialog::fillUICandidateUI頁面UI頁面輸入輸出:constConfigData&configData返回值:void說明:加載.ini配置文件voidParamDialog::setUIConfigData(constConfigData&configData)獵取頁面的最配置數(shù)據(jù)函數(shù)功能:獵取頁面的最配置數(shù)據(jù)輸入輸出:返回值:voidsetting的值voidParamDialog::updateSetting確認(rèn)保存函數(shù)功能:確認(rèn)保存按鈕輸入輸出:返回值:void說明:槽函數(shù)voidParamDialog::on_btnConfirmSave_clickedMainWindow界面設(shè)計(jì)界面設(shè)計(jì)如下:類設(shè)計(jì)類的成員包括:public:explicitMainWindow(QWidget*parent=0);~MainWindow;voidsetUIConfigData(constConfigData&configData);//依據(jù)配置數(shù)據(jù),重顯示頁面,轉(zhuǎn)變配置文件后需調(diào)用一次voidloadFavoriteSettings;//加載用戶操作習(xí)慣〔窗口大小〕配置protected:voidcloseEvent(QCloseEvent*event)override;//重寫關(guān)閉大事槽函數(shù):privateslots:voidwriteData(constQByteArray&data);//寫串口數(shù)據(jù)槽voidreadData;//讀串口數(shù)據(jù)槽voidhandleError(QSerialPort::SerialPortErrorerror);//處理串口錯(cuò)誤槽voidon_actionConnect_triggered;//連接//菜單和工具欄項(xiàng)voidon_actionDisconnect_triggered;voidon_actionSettings_triggered;//串口參數(shù)設(shè)置voidon_actionOptions_triggered;voidon_actionClear_triggered;voidon_actionFind_triggered;voidon_actionAbout_triggered;voidon_actionQuick_triggered;//快捷發(fā)送私有成員:Ui::MainWindow*ui;voidshowStatusMessage(constQString&message);//顯示信息到狀態(tài)欄voidcloseSerialPort;//關(guān)閉串口voidsaveFavoriteSettings;//保存用戶操作習(xí)慣〔窗口大小〕到文件中QLabel*m_status=nullptr;Console*m_console=nullptr;QPlainTextEdit*edit=nullptr;//底行編輯功能QSerialPort*m_serial=nullptr;//串口對(duì)象指針QLineEdit*keyword;//查找的關(guān)鍵字公有成員:ConfigDialog*configDialog=nullptr;//配置對(duì)話框構(gòu)造函數(shù)設(shè)計(jì)如下:MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow),m_status(newQLabel)//狀態(tài)欄控件,m_serial(newQSerialPort(this))//串口對(duì)象,configDialog(newConfigDialog)//配置窗口不是主窗口的子窗口{ui->setupUi(this);QVBoxLayout*verticalLayout;//設(shè)置垂直布局,用于對(duì)頁面的中心主控件布局verticalLayout=newQVBoxLayout(ui->centralWidget);verticalLayout->setSpacing(0);//不留空白verticalLayout->setContentsMargins(0,0,0,0);//m_console=newConsole(ui->centralWidget);//掌握臺(tái)控件verticalLayout->addWidget(m_console);//添加到主布局中edit=newQPlainTextEdit(ui->centralWidget);//底部編輯欄控件edit->setMaximumHeight(40);//設(shè)置最大高度verticalLayout->addWidget(edit);//添加到主布局中ui->statusBar->addWidget(m_status);//添加狀態(tài)欄keyword=newQLineEdit(this);//查找功能ui->editToolBar->setMaximumWidth(180);//設(shè)置查找窗口大小ui->editToolBar->insertWidget(ui->actionFind,keyword);//插入到工具欄中setTabOrder(m_console,edit);//tab挨次setTabOrder(edit,keyword);//ui->actionConnect->setEnabled(true);//可用ui->actionDisconnect->setEnabled(false);//開頭時(shí)不行用狀態(tài)ui->actionSettings->setEnabled(true);//ui->actionQuick->setEnabled(false);//將掌握臺(tái)控件的用戶編輯信號(hào),關(guān)聯(lián)到底部控件的槽connect(m_console,&Console::userEdit,edit,&QPlainTextEdit::setPlainText);connect(ui->actionExit,&QAction::triggered,this,&MainWindow::close);//關(guān)聯(lián)退出connect(m_serial,&QSerialPort::errorOccurred,this,&MainWindow::handleError);//關(guān)聯(lián)串口錯(cuò)誤信號(hào)槽connect(m_serial,&QSerialPort::readyRead,this,&MainWindow::readData);//關(guān)聯(lián)讀取數(shù)據(jù)
connect(m_console,&Console::getData,this,&MainWindow::writeData);//關(guān)聯(lián)用戶輸入數(shù)據(jù)的信號(hào)槽關(guān)閉窗口函數(shù)功能:關(guān)閉窗口輸入輸出:QCloseEvent*event返回值:void說明:保存用戶喜好voidMainWindow::closeEvent(QCloseEvent*event)關(guān)閉串口函數(shù)功能:關(guān)閉串口輸入輸出:返回值:void說明:voidMainWindow::closeSerialPort連接串口函數(shù)功能:連接串口輸入輸出:返回值:說明:voidMainWindow::on_actionConnect_triggered寫串口函數(shù)功能:寫串口輸入輸出:constQByteArray&data返回值:void說明:voidMainWindow::writeData(constQByteArray&data)讀串口函數(shù)功能:讀串口輸入輸出:返回值:void說明:槽函數(shù)voidMainWindow::readData處理出錯(cuò)信息函數(shù)功能:處理出錯(cuò)信息輸入輸出:QSerialPort::SerialPortErrorerror返回值:void說明:槽函數(shù)voidMainWindow::handleError(QSerialPort::SerialPortErrorerror)函數(shù)功能:快捷發(fā)送輸入輸出:返回值:void說明:voidMainWindow::on_actionQuick_triggered加載用戶喜好配置函數(shù)功能:加載用戶喜好配置輸入輸出:返回值:void說明:voidMainWindow::loadFavoriteSettings保存用戶喜好voidParamDialog::on_btnConfirmSave_clicked函數(shù)功能:保存用戶喜好配置輸入輸出:返回值:void說明:voidMainWindow::saveFavoriteSettingsConsole控件設(shè)計(jì)QPlainTextEdit。類設(shè)計(jì)類的成員包括:signals:voidgetData(constQByteArray&data);//當(dāng)獵取到用戶鍵盤輸入文本時(shí),發(fā)送該信號(hào)以便寫串口voiduserEdit(constQString&text);//發(fā)送用戶需要編輯的文本行,以便在底行編輯publicslots:voidsetLocalEchoEnabled(intset);//設(shè)置是否本地自動(dòng)回顯voidsetEditPos;//設(shè)置用戶輸入光標(biāo),以到達(dá)只有在當(dāng)前行可編輯狀態(tài)public:explicitConsole(QWidget*parent=nullptr);voidputData(constQByteArray&data);//串口收到數(shù)據(jù)后,向掌握臺(tái)界面上顯示數(shù)據(jù)voidfindWord(constQString&word);//查找字符串用protected:voidkeyPressEvent(QKeyEvent*e)override;//重寫按鍵消息voidmousePressEvent(QMouseEvent*e)override;//重寫鼠標(biāo)按鍵消息//voidmouseDoubleClickEvent(QMouseEvent*e)override;//鼠標(biāo)雙擊時(shí)的處理函數(shù)//voidcontextMenuEvent(QContextMenuEvent*e)override;//彈出右鍵菜單用//voidfocusInEvent(QFocusEvent*e);//當(dāng)獲得輸入焦點(diǎn)時(shí)的處理函數(shù)voidinsertFromMimeData(constQMimeData*source);//插入富文本時(shí)調(diào)用〔粘貼或者拖拽到窗口時(shí)〕private:boolm_localEchoEnabled=false;//是否翻開本地回顯功能inteditLine=0;//當(dāng)前編輯行〔放到底部可編輯的〕構(gòu)造函數(shù)設(shè)計(jì)如下:document->setMaximumBlockCount(200);//200行QPalettep=palette;p.setColor(QPalette::Base,Qt::black);//設(shè)置背風(fēng)光為黑色p.setColor(QPalette::Text,Qt::white);//字體為白色setPalette(p);//設(shè)置調(diào)色板顏色// QFontfont=this->font;//設(shè)置字體大小參考// font.setPointSize(10);// this->setFont(font);connect(this,&Console::cursorPositionChanged,this,&Console::setEditPos);//光標(biāo)轉(zhuǎn)變時(shí)調(diào)用//connect(this,&Console::textChanged,this,&Console::setEditPos);//文本轉(zhuǎn)變時(shí)調(diào)用QScrollBar*bar=verticalScrollBar;//設(shè)置滾動(dòng)條bar->setValue(bar->maximum);//設(shè)為最大設(shè)置掌握臺(tái)的編輯狀態(tài)函數(shù)功能:設(shè)置掌握臺(tái)的編輯狀態(tài)輸入輸出:返回值:void說明:類似命令行掌握臺(tái),當(dāng)前行可編輯,其它行不行編輯voidConsole::setEditPos自定義粘貼行為函數(shù)功能:自定義粘貼行為輸入輸出:constQMimeData*source返回值:void說明:假設(shè)發(fā)生粘貼或者拖拽時(shí),調(diào)用處理voidConsole::insertFromMimeData(constQMimeData*source)將數(shù)據(jù)顯示到掌握臺(tái)函數(shù)功能:將數(shù)據(jù)顯示到掌握臺(tái)輸入輸出:constQByteArray&data返回值:void說明:接收到數(shù)據(jù)或者快捷發(fā)送時(shí)會(huì)調(diào)用voidConsole::putData(constQByteArray&data)按鍵響應(yīng)處理函數(shù)功能:按鍵響應(yīng)處理輸入輸出:QKeyEvent*e返回值:void說明:voidConsole::keyPressEvent(QKeyEvent*e)鼠標(biāo)點(diǎn)擊響應(yīng)處理函數(shù)功能:鼠標(biāo)點(diǎn)擊響應(yīng)處理輸入輸出:QMouseEvent*e返回值:void說明:voidConsole::mousePressEvent(QMouseEvent*e)查找關(guān)鍵字函數(shù)功能:查找關(guān)鍵字輸入輸出:QMouseEvent*e返回值:void說明:voidConsole::findWord(constQString&word)ConfigDialog界面設(shè)計(jì)界面設(shè)計(jì)如下:類設(shè)計(jì)類的成員包括:public:explicitConfigDialog(QWidget*parent=0);~ConfigDialog;voidloadConfigData(ConfigData&configData);//從配置文件中加載配置voidsetUIConfigData(constConfigData&configData);//依據(jù)配置設(shè)置界面privateslots:voidon_btnLoadDefaultConfig_clicked;//加載默認(rèn)配置voidon_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版裝配式廠房買賣合同范本3篇
- 二零二五年方木產(chǎn)業(yè)園區(qū)建設(shè)與購銷合作合同3篇
- 二零二五版快遞物流服務(wù)合同匯編3篇
- 二零二五年度空壓機(jī)設(shè)備零配件供應(yīng)與倉儲(chǔ)合同3篇
- 二零二五年文化活動(dòng)兼職主持人聘任合同范本2篇
- 2025版快遞驛站快遞服務(wù)場地租賃及配套設(shè)施合同模板2篇
- 二零二五年無線基站場地天面租賃及維護(hù)合同3篇
- 二零二五版能源企業(yè)安全生產(chǎn)責(zé)任合同3篇
- 二零二五版建筑工程混凝土材料綠色認(rèn)證合同文本2篇
- 二零二五年知識(shí)產(chǎn)權(quán)貸款抵押擔(dān)保合同標(biāo)準(zhǔn)版2篇
- 團(tuán)隊(duì)成員介紹
- 水泵行業(yè)銷售人員工作匯報(bào)
- 《流感科普宣教》課件
- 離職分析報(bào)告
- 春節(jié)家庭用電安全提示
- 醫(yī)療糾紛預(yù)防和處理?xiàng)l例通用課件
- 廚邦醬油推廣方案
- 乳腺癌診療指南(2024年版)
- 高三數(shù)學(xué)寒假作業(yè)1
- 保險(xiǎn)產(chǎn)品創(chuàng)新與市場定位培訓(xùn)課件
- (完整文本版)體檢報(bào)告單模版
評(píng)論
0/150
提交評(píng)論