国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

QT Creator寫一個簡單的電壓電流顯示器

這篇具有很好參考價值的文章主要介紹了QT Creator寫一個簡單的電壓電流顯示器。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

本文主要涉及上位機對接收的串口數(shù)據(jù)處理,LCD Number控件的使用。之前的一篇寫一個簡單的LED控制主要是串口發(fā)出數(shù)據(jù),這里再看一下怎么接收數(shù)據(jù)處理數(shù)據(jù),這樣基本就對串口上位機有簡單的認識了。

LCD Number顯示時間

這一小節(jié)通過用一個LCD Number實時顯示時間的例程認識一下LCD Number控件。

新建一個widget示例工程,前面的文章都有相關內容,請移步查閱,這里不贅述。

雙擊widget.ui打開 Qt 設計器界面,拉一個LCD Number到合適位置
QT Creator寫一個簡單的電壓電流顯示器
拉大一點:
QT Creator寫一個簡單的電壓電流顯示器
這里說一下QT開發(fā)的大概模式,和C# 開發(fā)很像,這里是.ui文件是UI設計,同時相關源文件配合,如果UI設計不能直接設置的,就必須通過源碼實現(xiàn),當然UI設計器主要還是設置控件的位置大小顏色和一些基本參數(shù)之類的。ui文件是可有可無的,即使沒有ui文件,完全通過代碼添加控件,設定控件參數(shù)位置等也是完全可行的。

其余的就按下面的代碼改一下就行了。

整體源碼:
widget.cpp文件:

#include "widget.h"
#include "ui_widget.h"


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    /* 設置顯示的位數(shù) 8 位 */
    ui->lcdNumber->setDigitCount(8);
    /* 設置樣式 */
    ui->lcdNumber->setSegmentStyle(QLCDNumber::Flat);

    /* 設置 lcd 顯示為當前系統(tǒng)時間 */
    QTime time = QTime::currentTime();

    /* 設置顯示的樣式 */
    ui->lcdNumber->display(time.toString("hh:mm:ss"));

    timer = new QTimer(this);
    /* 設置定時器 1000 毫秒發(fā)送一個 timeout()信號 */
    timer->start(1000);

    /* 信號槽連接 */
    connect(timer, SIGNAL(timeout()), this, SLOT(timerTimeOut()));

}

Widget::~Widget()
{
    delete ui;
}

void Widget::timerTimeOut()
{
    /* 當定時器計時 1000 毫秒后,刷新 lcd 顯示當前系統(tǒng)時間 */
    QTime time = QTime::currentTime();
    /* 設置顯示的樣式 */
    ui->lcdNumber->display(time.toString("hh:mm:ss"));
}

widget.h文件:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLCDNumber>
#include <QTimer>
#include <QTime>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;

    /* 聲明 QTimer 對象 */
    QTimer *timer;

private slots:
   /* 槽函數(shù) */
   void timerTimeOut();
};
#endif // WIDGET_H

其余文件保持默認。

效果:
QT Creator寫一個簡單的電壓電流顯示器

串口數(shù)據(jù)處理,LCD Number顯示電壓電流

串口協(xié)議是JSON格式:類似{“Cur”:118,“Vol”:7587},電流單位mA,電壓單位mV

雙擊.ui文件打開UI設計器,通過拖動的方式添加控件,如下圖所示放置,紅色框是Label,藍色框是Combo Box,黃色框是兩個Push Button,棕色框是LCD Number,其中的文字都可在放置控件后雙擊改之:
QT Creator寫一個簡單的電壓電流顯示器

串口部分與這篇文章相似:QT C++入門學習(2) QT Creator寫一個簡單的上位機控制LED,可作參考

Label可以通過font屬性調整字體和大小:
QT Creator寫一個簡單的電壓電流顯示器
LCD Number可以通過digitCount屬性設定最大顯示位數(shù),這里保持默認5位即可:
QT Creator寫一個簡單的電壓電流顯示器

.pro文件中添加串口模塊:
QT Creator寫一個簡單的電壓電流顯示器
程序源碼:
widget.h文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLCDNumber>
#include <QSerialPort>
#include <QSerialPortInfo>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
    QSerialPort *serialPort;//定義串口指針

private slots:

    /*以下為widget.ui文件中點擊“轉到槽”自動生成的函數(shù)*/
    void on_openBt_clicked();

    void on_btnSerialCheck_clicked();

    void DateRead();

};
#endif // WIDGET_H

widget.cpp文件

#include "widget.h"
#include "ui_widget.h"
#include <QMessageBox>
#include <QDebug>
//解析json格式類
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonValue>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QStringList serialNamePort;

    serialPort = new QSerialPort(this);

    ui->serailCb->clear();
    //通過QSerialPortInfo查找可用串口
    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
    {
        ui->serailCb->addItem(info.portName());
    }
    connect(serialPort,SIGNAL(readyRead()),this,SLOT(DateRead()));/*手動連接槽函數(shù)*/

}

/*打開串口*/
void Widget::on_openBt_clicked()
{

    // 初始化串口屬性,設置 端口號、波特率、數(shù)據(jù)位、停止位、奇偶校驗位數(shù)
    serialPort->setPortName(ui->serailCb->currentText());
    serialPort->setBaudRate(ui->baundrateCb->currentText().toInt());
    serialPort->setDataBits(QSerialPort::Data8);
    serialPort->setStopBits(QSerialPort::OneStop);
    serialPort->setParity(QSerialPort::NoParity);

    // 根據(jù)初始化好的串口屬性,打開串口
    // 如果打開成功,反轉打開按鈕顯示和功能。打開失敗,無變化,并且彈出錯誤對話框。
    if(ui->openBt->text() == "打開串口"){
        if(serialPort->open(QIODevice::ReadWrite) == true){
            ui->openBt->setText("關閉串口");
            // 讓端口號下拉框不可選,避免誤操作(選擇功能不可用,控件背景為灰色)
            ui->serailCb->setEnabled(false);
        }else{
            QMessageBox::critical(this, "錯誤提示", "串口打開失?。。。r\n該串口可能被占用\r\n請選擇正確的串口");
        }
    }else{
        serialPort->close();
        ui->openBt->setText("打開串口");
        // 端口號下拉框恢復可選,避免誤操作
        ui->serailCb->setEnabled(true);
    }

}

//檢測通訊端口槽函數(shù)
void Widget::on_btnSerialCheck_clicked()
{
    ui->serailCb->clear();
    //通過QSerialPortInfo查找可用串口
    foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
    {
        ui->serailCb->addItem(info.portName());
    }
}

void Widget::DateRead()  //接收數(shù)據(jù)
{
    QByteArray recvData=serialPort->readAll();

    //解析 JSON格式
    QString receive =QString::fromLocal8Bit(recvData.constData());
    QJsonDocument doc=QJsonDocument::fromJson(receive.toUtf8());
    QJsonObject obj=doc.object();

    QJsonValue Current =obj.value("Cur");
    QJsonValue Voltage =obj.value("Vol");

    ui->current_Num->display(Current.toInt());
    ui->voltage_Num->display(Voltage.toInt());
}


Widget::~Widget()
{
    delete ui;
}

驗證:
(方法:通過兩個USB轉串口模塊TX和RX對接,其中一個端口通過串口助手發(fā)送JSON字符,注意波特率需相同)
QT Creator寫一個簡單的電壓電流顯示器

LCD Number還可以更改顏色樣式:
QT Creator寫一個簡單的電壓電流顯示器
通過styleSheet屬性即可更改:
color是字體顏色,background-color是背景色
QT Creator寫一個簡單的電壓電流顯示器文章來源地址http://www.zghlxwxcb.cn/news/detail-514880.html

到了這里,關于QT Creator寫一個簡單的電壓電流顯示器的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 黑蘋果簡單的手動開啟顯示器HiDPI教程

    黑蘋果簡單的手動開啟顯示器HiDPI教程

    原文來源于黑果魏叔官網(wǎng)。轉載請保留出處。 先說個大概邏輯,就是讓系統(tǒng)識別顯示器,不管是one-key-hidpi還是hacintools,目的都一樣,跟vendorID和productID有關系,我這個無非就是手動而已,可以理解成一鍵hidpi的手動基礎版。 1.打開finder,打開系統(tǒng)文件夾。 2.打開資源庫文件夾

    2024年02月12日
    瀏覽(19)
  • 兩臺主機共用一個戴爾顯示器之快速切換主機

    兩臺主機共用一個戴爾顯示器之快速切換主機

    直接安裝戴爾的顯示器管理軟件,下載安裝鏈接 設置完成之后就可以在同一個顯示器上快速切換輸入源

    2024年02月11日
    瀏覽(23)
  • AOC顯示器出問題了?別擔心,簡單重置一下就OK了

    AOC顯示器出問題了?別擔心,簡單重置一下就OK了

    你的AOC顯示器有問題嗎?它是被卡在特定的屏幕上還是根本不顯示任何圖像?如果你的顯示器出現(xiàn)任何問題,只需簡單重置即可解決問題。 重置AOC顯示器可以幫助解決一系列問題,例如顏色或顯示設置問題、輸入源檢測問題以及其他與軟件相關的問題。在本分步指南中,我們

    2024年02月05日
    瀏覽(17)
  • qt界面最大化-實現(xiàn)在軟件所在的顯示器最大化和還原窗口大小

    qt界面最大化-實現(xiàn)在軟件所在的顯示器最大化和還原窗口大小

    用qt開發(fā)一個圖片查看軟件,通過重寫qlabel實現(xiàn)自定義窗口title,這個title當電腦使用多個顯示器的時候,我想實現(xiàn): 當軟件界面的大部分在顯示器1的時候,點擊最大化或還原按鈕時軟件就在顯示器1最大化或還原,如下圖: ? 當軟件界面的大部分在顯示器2的時候,點擊最大

    2024年02月11日
    瀏覽(33)
  • 初學51單片機(STC89C52)一個倒計時顯示器和大家分享

    ? 想要實現(xiàn)倒計時顯示器,首先得確定從哪個時間開始倒計時,這就需要寫出一個計數(shù)的程序來,通過按鍵來控制需要的數(shù),從而開始倒計時。我的開發(fā)板上用的Key2,Key3,Key4,Key5這四個鍵,分別對應著加1,減1,乘2,開始計時四個功能。 ? 通過加一,減一,乘2三個操作,

    2024年02月10日
    瀏覽(26)
  • ManjaroLinux擴展顯示器,連接顯示器。

    ManjaroLinux擴展顯示器,連接顯示器。

    如何設置多顯示器的顯示 在這里可以使用xrandr來進行設置。 1.插入顯示器的接口 這時,我們把剛買的顯示器的接口接到顯示器上面,確保顯示器和筆記本直接的連接沒有問題。 2.查看顯示器是否連接成功 我們輸入命令 回車后可以看到如下擴展顯示器的設備接口名稱以及可顯

    2024年02月11日
    瀏覽(32)
  • 顯示器原理(1):CRT顯示器

    大家好,這個系列將會從歷史、參數(shù)角度來詳細講解顯示器及跟顯示器有關的技術。 首先,我們先列出一個目錄,方便大家理解顯示器的參數(shù)在哪里起效,這里列出的都是常見的,不常見的我們也會講,這里就不列出了 這張表格在后幾期會用到,我會詳細講解色域、刷新率

    2024年02月09日
    瀏覽(33)
  • 解決 Ubuntu 外接顯示器后,顯示器不亮

    解決 Ubuntu 外接顯示器后,顯示器不亮

    目錄 原因 解決辦法 step1: 修改軟件源 step2:查看可安裝的驅動版本 step3:安裝推薦版本的驅動(recommended) step4:查看是否安裝成功 step5:重啟電腦,發(fā)現(xiàn)外接顯示器已亮。 沒有裝顯卡驅動。 step1: 修改軟件源 打開 應用程序 —— 軟件和更新,在 Ubuntu 軟件 界面,點下載自的

    2024年02月09日
    瀏覽(103)
  • 2023年2K顯示器推薦 | 有什么好用的2K顯示器?

    2023年2K顯示器推薦 | 有什么好用的2K顯示器?

    開玩笑,如果是同價位來說,當然還是選Nano IPS了,畫質好延遲低,妥妥的電競顯示器首選。關鍵你還是主玩LOL平時看電影,對延遲的要求遠低于畫質吧,所以TN屏就不用考慮了。Nano IPS的色彩表現(xiàn)的確是IPS屏中的佼佼者,畢竟是色域都可以達到95%以上的DCI-P3,可以產(chǎn)生更加鮮

    2024年02月11日
    瀏覽(20)
  • ubuntu外接顯示器、不識別筆記本顯示器

    如題:ubuntu外接顯示器、不識別筆記本顯示器 雙屏幕,筆記本外接顯示器HDMI,然后安裝Nvidia顯卡驅動,之后重啟筆記本顯示器無法識別,只能使用外接顯示器了。 中文網(wǎng)站找遍了都沒有解決方案,然后用英文搜索,得到這篇文章解決了問題: Internal laptop screen not detected wh

    2024年02月05日
    瀏覽(100)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包