標(biāo)題:
串口助手源碼,利用Qt制作的
[打印本頁]
作者:
bearfq
時間:
2018-3-3 10:35
標(biāo)題:
串口助手源碼,利用Qt制作的
之前學(xué)了一下Qt,然后做了一個串口助手。功能測試穩(wěn)定!初學(xué)者可以參考一下!
串口助手-精簡版-V3.14
作者:
付強
bearfq@126.com
時間:
2018年1月19日 10:50:53
實現(xiàn)功能:
1.串口收發(fā)
2.保存數(shù)據(jù)到本地
3.打開本地數(shù)據(jù)文件
4.調(diào)整波特率等參數(shù)
測試實現(xiàn):
性能穩(wěn)定
0.png
(54.05 KB, 下載次數(shù): 127)
下載附件
2018-3-4 02:03 上傳
源程序如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
/*設(shè)置窗口圖標(biāo)*/
this->setWindowIcon(QIcon(":/logo256_256.ico"));
/*激活參數(shù)選擇框*/
activeComboBox(true);
/*顯示所有可用端口*/
showAllPort();
/*設(shè)置接收文本框的光標(biāo)一直保持在中心*/
connect(ui->recvTextEdit, SIGNAL(textChanged()), ui->recvTextEdit, SLOT(centerCursor()));
}
MainWindow::~MainWindow()
{
delete ui;
}
/*激活/失活參數(shù)選擇框*/
void MainWindow::activeComboBox(bool status)
{
ui->serialPortComboBox->setEnabled(status);//端口下選框
ui->BaudrateComboBox->setEnabled(status);//波特率下選框
ui->dataBitComboBox->setEnabled(status);//數(shù)據(jù)位數(shù)
ui->stopBitComboBox->setEnabled(status);//停止位
ui->parityComboBox->setEnabled(status);//奇偶校驗
ui->flushPortBtn->setEnabled(status);//刷新按鈕
}
//反轉(zhuǎn)runFlag標(biāo)志,并返回標(biāo)志狀態(tài)
bool MainWindow::reverseRunFlag()
{
if (myThread->runFlag)
{
myThread->runFlag = false;
}
else
{
myThread->runFlag = true;
}
return myThread->runFlag;
}
/*顯示所有可用端口*/
void MainWindow::showAllPort()
{
const auto infos = QSerialPortInfo::availablePorts();//返回可用的端口
for (const QSerialPortInfo &info : infos)//將所有可用端口加入到下拉框中
{
ui->serialPortComboBox->addItem(info.portName());
}
}
/*清除接收文本框中的信息*/
void MainWindow::on_clearRecvBtn_clicked()
{
ui->recvTextEdit->clear();
}
/*清除發(fā)送文本框中的信息*/
void MainWindow::on_clearSendBtn_clicked()
{
ui->sendTextEdit->clear();
}
/*點擊open按鈕*/
void MainWindow::on_openBtn_clicked()
{
DBUG_OUT;
if(!reverseRunFlag())//子線程在運行--->關(guān)閉子線程
{
/*參數(shù)設(shè)置combobox全部激活*/
activeComboBox(true);
/*修改子線程運行標(biāo)志*/
myThread->runFlag = false;
// myThread->finished();
}
else//沒有運行子線程--->開啟子線程
{
/*參數(shù)設(shè)置combobox全部失活*/
activeComboBox(false);
/*創(chuàng)建線程*/
myThread = new MyThread;
/*傳遞參數(shù)給子線程*/
myThread->portNameStr = ui->serialPortComboBox->currentText();
myThread->baudRateStr = ui->BaudrateComboBox->currentText();
myThread->parityStr = ui->parityComboBox->currentText();
myThread->dataBitsStr = ui->dataBitComboBox->currentText();
myThread->stopBitsStr = ui->stopBitComboBox->currentText();
/*連接信號與槽(將接收的數(shù)據(jù)顯示在接收區(qū)中)*/
connect(myThread, SIGNAL(output(QString)), this, SLOT(showData(QString)));
//啟動線程--->執(zhí)行線程的run函數(shù)
myThread->start();
}
}
/*顯示接收的數(shù)據(jù)*/
void MainWindow::showData(QString data)
{
DBUG_OUT;
ui->recvTextEdit->insertPlainText(data);
}
/*點擊發(fā)送按鈕,發(fā)送數(shù)據(jù)*/
void MainWindow::on_sendBtn_clicked()
{
DBUG_OUT;
//1.提取發(fā)送數(shù)據(jù)框文本
myThread->sendData = ui->sendTextEdit->toPlainText();
//2.發(fā)送標(biāo)志置1
myThread->sendFlag = true;
}
/*保存接收的數(shù)據(jù)到文件*/
void MainWindow::on_saveRecvBtn_clicked()
{
DBUG_OUT;
//1.彈出保存文件的對話框
QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"./recvdata",tr("text (*.txt *.cpp *.h)"));
//2.創(chuàng)建新文件
QFile file(fileName);
file.open(QIODevice::ReadWrite | QIODevice::Truncate);
//3.寫入文本到文件中
//3.1獲取text中的文本
QString text = ui->recvTextEdit->toPlainText();//轉(zhuǎn)成純文本
//3.2將文本寫入文件中
file.write(text.toStdString().c_str());//轉(zhuǎn)為標(biāo)準(zhǔn)字符串并返回其首地址
//4.關(guān)閉文件
file.close();
}
/*打開數(shù)據(jù)文件*/
void MainWindow::on_openDataBtn_clicked()
{
DBUG_OUT;
//1.彈出對話框:選擇文件,獲取文件名
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
"./",
tr("Text (*.txt *.cpp *.h)"));
//2.讀文件
//2.1打開文件
QFile file(fileName);
file.open(QIODevice::ReadOnly);
//2.2讀文件
char buf[1024] = {0};
file.read(buf, sizeof(buf));
//2.3關(guān)閉文件
file.close();
//3.在發(fā)送區(qū)中顯示文件信息
QString text(buf);
ui->sendTextEdit->insertPlainText(text);
}
/*刷新端口*/
void MainWindow::on_flushPortBtn_clicked()
{
ui->serialPortComboBox->clear();//清除原有端口號
showAllPort();//顯示現(xiàn)有端口號
}
復(fù)制代碼
所有資料51hei提供下載:
串口助手精簡版.rar
(43.19 KB, 下載次數(shù): 283)
2018-3-3 10:35 上傳
點擊文件名下載附件
源碼串口助手
下載積分: 黑幣 -5
作者:
1422113471
時間:
2018-4-19 10:34
支持下,感謝分析
作者:
1422113471
時間:
2018-4-19 10:38
支持下,感謝分析
作者:
斯可瑞木
時間:
2018-6-12 22:28
學(xué)習(xí)QT容易嗎?也想學(xué),還有,C語言能寫上位機嗎
作者:
Young__
時間:
2018-11-2 16:49
謝樓主分享
作者:
Young__
時間:
2018-11-2 16:51
支持樓主,感謝分享
作者:
羽毛的飛舞
時間:
2018-11-3 09:45
謝謝樓主分享
作者:
xinqing123
時間:
2018-11-6 14:04
感謝樓主分享!
作者:
仟佰度
時間:
2018-12-26 13:50
不錯不錯
作者:
neruoReuben
時間:
2019-4-20 15:20
正好最近要做這個,感謝分享
作者:
kissjing
時間:
2019-6-26 16:58
學(xué)習(xí)一下
作者:
grpmcu
時間:
2019-7-23 13:49
學(xué)習(xí)哈
作者:
aguxiaoming
時間:
2019-8-11 20:50
學(xué)習(xí)下
作者:
zlinhua
時間:
2019-8-22 00:21
支持下,感謝分析
作者:
727074972@qq.co
時間:
2019-9-6 17:42
謝謝樓主的分享
作者:
yuche2018
時間:
2019-9-14 17:07
新手 來學(xué)習(xí)一下
作者:
zyb329321151
時間:
2019-11-4 15:29
我下載看了下,程序里面只能將串口緩沖區(qū)里面的數(shù)據(jù)直接顯示
作者:
zyb329321151
時間:
2019-11-4 15:30
程序里面只能直接顯示串口發(fā)送上來的數(shù)據(jù),但是并不能實現(xiàn)16進制或者ASCII碼顯示切換。
作者:
dhy931023
時間:
2019-11-7 14:20
感謝樓主分享
作者:
xld_shenghuo
時間:
2019-12-10 18:47
感謝樓主分享
作者:
jiangyimfs
時間:
2019-12-21 20:54
這個很不錯啊
作者:
zgf123456
時間:
2020-4-2 14:53
支持下,感謝分析
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1