久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11172|回復: 21
打印 上一主題 下一主題
收起左側

串口助手源碼,利用Qt制作的

  [復制鏈接]
跳轉到指定樓層
樓主
之前學了一下Qt,然后做了一個串口助手。功能測試穩定!初學者可以參考一下!
串口助手-精簡版-V3.14

作者:
    付強
    bearfq@126.com

時間:
    2018年1月19日 10:50:53

實現功能:
    1.串口收發
    2.保存數據到本地
    3.打開本地數據文件
    4.調整波特率等參數
   
測試實現:
    性能穩定


源程序如下:
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"


  3. MainWindow::MainWindow(QWidget *parent) :
  4.     QMainWindow(parent),
  5.     ui(new Ui::MainWindow)
  6. {
  7.     ui->setupUi(this);

  8.     /*設置窗口圖標*/
  9.     this->setWindowIcon(QIcon(":/logo256_256.ico"));

  10.     /*激活參數選擇框*/
  11.     activeComboBox(true);

  12.     /*顯示所有可用端口*/
  13.     showAllPort();

  14.     /*設置接收文本框的光標一直保持在中心*/
  15.     connect(ui->recvTextEdit, SIGNAL(textChanged()), ui->recvTextEdit, SLOT(centerCursor()));
  16. }

  17. MainWindow::~MainWindow()
  18. {
  19.     delete ui;
  20. }

  21. /*激活/失活參數選擇框*/
  22. void MainWindow::activeComboBox(bool status)
  23. {
  24.     ui->serialPortComboBox->setEnabled(status);//端口下選框
  25.     ui->BaudrateComboBox->setEnabled(status);//波特率下選框
  26.     ui->dataBitComboBox->setEnabled(status);//數據位數
  27.     ui->stopBitComboBox->setEnabled(status);//停止位
  28.     ui->parityComboBox->setEnabled(status);//奇偶校驗
  29.     ui->flushPortBtn->setEnabled(status);//刷新按鈕
  30. }

  31. //反轉runFlag標志,并返回標志狀態
  32. bool MainWindow::reverseRunFlag()
  33. {
  34.     if (myThread->runFlag)
  35.     {
  36.         myThread->runFlag = false;
  37.     }
  38.     else
  39.     {
  40.         myThread->runFlag = true;
  41.     }

  42.     return myThread->runFlag;
  43. }

  44. /*顯示所有可用端口*/
  45. void MainWindow::showAllPort()
  46. {
  47.     const auto infos = QSerialPortInfo::availablePorts();//返回可用的端口

  48.     for (const QSerialPortInfo &info : infos)//將所有可用端口加入到下拉框中
  49.     {
  50.         ui->serialPortComboBox->addItem(info.portName());
  51.     }
  52. }

  53. /*清除接收文本框中的信息*/
  54. void MainWindow::on_clearRecvBtn_clicked()
  55. {
  56.     ui->recvTextEdit->clear();
  57. }

  58. /*清除發送文本框中的信息*/
  59. void MainWindow::on_clearSendBtn_clicked()
  60. {
  61.     ui->sendTextEdit->clear();
  62. }

  63. /*點擊open按鈕*/
  64. void MainWindow::on_openBtn_clicked()
  65. {
  66.     DBUG_OUT;

  67.     if(!reverseRunFlag())//子線程在運行--->關閉子線程
  68.     {
  69.         /*參數設置combobox全部激活*/
  70.         activeComboBox(true);

  71.         /*修改子線程運行標志*/
  72.         myThread->runFlag = false;
  73.        // myThread->finished();
  74.     }
  75.     else//沒有運行子線程--->開啟子線程
  76.     {
  77.         /*參數設置combobox全部失活*/
  78.         activeComboBox(false);

  79.         /*創建線程*/
  80.         myThread = new MyThread;

  81.         /*傳遞參數給子線程*/
  82.         myThread->portNameStr = ui->serialPortComboBox->currentText();
  83.         myThread->baudRateStr = ui->BaudrateComboBox->currentText();
  84.         myThread->parityStr = ui->parityComboBox->currentText();
  85.         myThread->dataBitsStr = ui->dataBitComboBox->currentText();
  86.         myThread->stopBitsStr = ui->stopBitComboBox->currentText();

  87.         /*連接信號與槽(將接收的數據顯示在接收區中)*/
  88.         connect(myThread, SIGNAL(output(QString)), this, SLOT(showData(QString)));

  89.         //啟動線程--->執行線程的run函數
  90.         myThread->start();
  91.     }
  92. }

  93. /*顯示接收的數據*/
  94. void MainWindow::showData(QString data)
  95. {
  96.     DBUG_OUT;

  97.     ui->recvTextEdit->insertPlainText(data);
  98. }

  99. /*點擊發送按鈕,發送數據*/
  100. void MainWindow::on_sendBtn_clicked()
  101. {
  102.     DBUG_OUT;

  103.     //1.提取發送數據框文本
  104.     myThread->sendData = ui->sendTextEdit->toPlainText();

  105.     //2.發送標志置1
  106.     myThread->sendFlag = true;
  107. }

  108. /*保存接收的數據到文件*/
  109. void MainWindow::on_saveRecvBtn_clicked()
  110. {
  111.     DBUG_OUT;

  112.     //1.彈出保存文件的對話框
  113.     QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"./recvdata",tr("text (*.txt *.cpp *.h)"));

  114.     //2.創建新文件
  115.     QFile file(fileName);
  116.     file.open(QIODevice::ReadWrite | QIODevice::Truncate);

  117.     //3.寫入文本到文件中
  118.     //3.1獲取text中的文本
  119.     QString text = ui->recvTextEdit->toPlainText();//轉成純文本

  120.     //3.2將文本寫入文件中
  121.     file.write(text.toStdString().c_str());//轉為標準字符串并返回其首地址

  122.     //4.關閉文件
  123.     file.close();
  124. }

  125. /*打開數據文件*/
  126. void MainWindow::on_openDataBtn_clicked()
  127. {
  128.     DBUG_OUT;

  129.     //1.彈出對話框:選擇文件,獲取文件名
  130.     QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
  131.                                                       "./",
  132.                                                       tr("Text (*.txt *.cpp *.h)"));
  133.     //2.讀文件
  134.     //2.1打開文件
  135.     QFile file(fileName);
  136.     file.open(QIODevice::ReadOnly);

  137.     //2.2讀文件
  138.     char buf[1024] = {0};
  139.     file.read(buf, sizeof(buf));

  140.     //2.3關閉文件
  141.     file.close();

  142.     //3.在發送區中顯示文件信息
  143.     QString text(buf);
  144.     ui->sendTextEdit->insertPlainText(text);
  145. }

  146. /*刷新端口*/
  147. void MainWindow::on_flushPortBtn_clicked()
  148. {
  149.     ui->serialPortComboBox->clear();//清除原有端口號

  150.     showAllPort();//顯示現有端口號
  151. }


復制代碼

所有資料51hei提供下載:
串口助手精簡版.rar (43.19 KB, 下載次數: 283)





評分

參與人數 1黑幣 +7 收起 理由
xiou + 7 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:311481 發表于 2018-4-19 10:34 | 只看該作者
支持下,感謝分析
回復

使用道具 舉報

板凳
ID:311481 發表于 2018-4-19 10:38 | 只看該作者
支持下,感謝分析
回復

使用道具 舉報

地板
ID:323313 發表于 2018-6-12 22:28 | 只看該作者
學習QT容易嗎?也想學,還有,C語言能寫上位機嗎
回復

使用道具 舉報

5#
ID:251590 發表于 2018-11-2 16:49 | 只看該作者
謝樓主分享
回復

使用道具 舉報

6#
ID:251590 發表于 2018-11-2 16:51 | 只看該作者
支持樓主,感謝分享
回復

使用道具 舉報

7#
ID:420013 發表于 2018-11-3 09:45 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

8#
ID:421689 發表于 2018-11-6 14:04 | 只看該作者
感謝樓主分享!
回復

使用道具 舉報

9#
ID:455373 發表于 2018-12-26 13:50 | 只看該作者
不錯不錯
回復

使用道具 舉報

10#
ID:517138 發表于 2019-4-20 15:20 | 只看該作者
正好最近要做這個,感謝分享
回復

使用道具 舉報

11#
ID:334822 發表于 2019-6-26 16:58 | 只看該作者
學習一下
回復

使用道具 舉報

12#
ID:588657 發表于 2019-7-23 13:49 | 只看該作者
學習哈
回復

使用道具 舉報

13#
ID:494565 發表于 2019-8-11 20:50 | 只看該作者
學習下
回復

使用道具 舉報

14#
ID:602542 發表于 2019-8-22 00:21 | 只看該作者

支持下,感謝分析
回復

使用道具 舉報

15#
ID:415973 發表于 2019-9-6 17:42 | 只看該作者
謝謝樓主的分享
回復

使用道具 舉報

16#
ID:281879 發表于 2019-9-14 17:07 | 只看該作者
新手 來學習一下
回復

使用道具 舉報

17#
ID:465802 發表于 2019-11-4 15:29 | 只看該作者
我下載看了下,程序里面只能將串口緩沖區里面的數據直接顯示
回復

使用道具 舉報

18#
ID:465802 發表于 2019-11-4 15:30 | 只看該作者
程序里面只能直接顯示串口發送上來的數據,但是并不能實現16進制或者ASCII碼顯示切換。
回復

使用道具 舉報

19#
ID:637424 發表于 2019-11-7 14:20 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

20#
ID:383956 發表于 2019-12-10 18:47 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

21#
ID:127977 發表于 2019-12-21 20:54 | 只看該作者
這個很不錯啊
回復

使用道具 舉報

22#
ID:151626 發表于 2020-4-2 14:53 | 只看該作者
支持下,感謝分析
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: a毛片视频网站 | 能看的av | 国产成人精品免费视频大全最热 | 久久精品亚洲一区二区三区浴池 | 国产午夜精品理论片a大结局 | 成人av电影在线 | 成人在线免费电影 | 国产精品1区2区 | 欧美日韩久久 | 蜜桃视频在线观看免费视频网站www | 日韩精品久久久久 | 欧美亚洲激情 | 日本不卡一区二区三区在线观看 | 91在线看片 | 日韩h | 国内精品一区二区 | 狠狠爱免费视频 | 久久久久亚洲av毛片大全 | 国产一区二区三区四区 | 中文在线视频 | 欧美精品v国产精品v日韩精品 | 欧美成人第一页 | 国产一区二区三区四区区 | 久久网亚洲 | 国产精品黄视频 | 精品三级在线观看 | 日韩欧美三级电影 | 中文字幕在线视频精品 | 国产一区二区视频在线 | 欧美日本亚洲 | 日本三级在线视频 | 偷牌自拍| 国产高清在线观看 | 国产在线精品一区二区 | 精品视频在线播放 | 精品一区二区三区四区视频 | 精品二三区| 亚洲一区在线播放 | 免费观看的av毛片的网站 | 国产大片一区 | 国产成人福利视频在线观看 |