哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)嵌入式Linux主板Qt串口應(yīng)用程序簡介

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-01-17 09:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

串口和其他設(shè)備一樣,在Linux系統(tǒng)中都是以設(shè)備文件的形式存在的,在英創(chuàng)公司提供的Linux主板配套光盤中,已經(jīng)提供了基于C/C++ 的Linux標(biāo)準(zhǔn)串口操作例程,使用open函數(shù)來打開串口設(shè)備文件:'/dev/ttyS1',設(shè)置串口參數(shù),創(chuàng)建一個(gè)單獨(dú)的線程來對(duì)數(shù)據(jù)進(jìn)行收發(fā),使用read函數(shù)讀取數(shù)據(jù),write函數(shù)發(fā)送數(shù)據(jù)。并且英創(chuàng)公司將其封裝成一個(gè)serial類,可以使用serial類方便的操作英創(chuàng)工控主板的串口資源。

本文介紹如何在英創(chuàng)公司提供的Linux工控主板的串口例程Step2_serialtest的基礎(chǔ)上,加入了Qt顯示,實(shí)現(xiàn)在LCD顯示屏上控制串口通訊?;镜乃枷胧抢肣t的信號(hào)和插槽機(jī)制進(jìn)行對(duì)象間的通訊,當(dāng)串口接收的數(shù)據(jù)的時(shí)候,發(fā)出Signal,Qt 的顯示事件循環(huán)中接收到這個(gè)信號(hào),調(diào)用定義好的Slot顯示串口的數(shù)據(jù),如下圖:

串口和Qt顯示

先使用Qt Creator創(chuàng)建一個(gè)工程,加入英創(chuàng)公司提供的Linux工控主板串口例程中的serial.h和serial.cpp文件,因?yàn)橐赟tep2_serialtest例程的基礎(chǔ)上加入Qt顯示單元,所以我們需要讓英創(chuàng)公司封裝好的serial類繼承QObject類的屬性,使QObject成為serial類的基類,然后在serial類中加入一個(gè)signal,讓serial類和Qt顯示通過信號(hào)和插槽的機(jī)制連接。但是對(duì)于串口的操作部分并不用做修改。

QObject類是所有Qt對(duì)象的基類并且是Qt對(duì)象模型的中心。這個(gè)模型的中心特征就是一種用于無縫對(duì)象通訊的被叫做信號(hào)和槽的非常強(qiáng)大的機(jī)制。只有繼承了 QObject 類的類,才具有信號(hào)和槽的能力。所以,為了使用信號(hào)和槽,必須繼承 QObject。凡是 QObject 類(不管是直接子類還是間接子類),都應(yīng)該在第一行代碼寫上 Q_OBJECT。不管是不是使用信號(hào)和槽,都應(yīng)該添加這個(gè)宏。這個(gè)宏的展開將為我們的類提供信號(hào)和槽機(jī)制、國際化機(jī)制以及 Qt 提供的不基于 C++ RTTI 的反射能力。所以在serial.h中作如下修改:

class CSerial: public QObject //繼承QObject
{
Q_OBJECT
signals:
void readyRead(QString);
};

在serial.cpp中,串口數(shù)據(jù)接收線程檢測到有數(shù)據(jù)可讀時(shí),添加發(fā)送信號(hào)的語句,提示顯示對(duì)象有數(shù)據(jù)可以顯示,并把數(shù)據(jù)發(fā)送給顯示對(duì)象:

emit pSer->readyRead(pSer->DatBuf);

對(duì)串口程序的修改已經(jīng)完成,在工程中加入Qt設(shè)計(jì)師界面,根據(jù)需要設(shè)計(jì)顯示界面,本例程中的界面如下:

設(shè)計(jì)的界面

可以看到,在界面中添加了三個(gè)按鈕,分別為“打開串口”,“關(guān)閉串口”和“清除數(shù)據(jù)”,兩個(gè)組合框,用來選擇串口的端口號(hào)和比特率,一個(gè)文本瀏覽器用來顯示串口接收的數(shù)據(jù)。在工程中加入窗口顯示程序:widget.h和 widget.cpp,首先要對(duì)顯示界面進(jìn)行初始化,實(shí)現(xiàn)代碼如下:

Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this); //顯示界面的初始化
setActionsEnabled(true); //使能組件
setComboBoxEnabled(true);
}

定義接收串口發(fā)送信號(hào)的插槽,在窗口的文本瀏覽器中顯示串口接收的數(shù)據(jù):

void Widget::readMyCom(QString buf)
{
//將串口的數(shù)據(jù)顯示在窗口的文本瀏覽器中
ui->textBrowser->setText(ui->textBrowser->document()->toPlainText() + buf);
QTextCursor cursor = ui->textBrowser->textCursor();
cursor.movePosition(QTextCursor::End);
ui->textBrowser->setTextCursor(cursor);
}

將串口發(fā)送的Signal和顯示窗口類中Slot連接起來,以便響應(yīng):

QObject::connect(myCom,SIGNAL(readyRead(QString)),this,SLOT(readMyCom(QString)),Qt::QueuedConnection);

這里需要特別說明一點(diǎn),由于串口例程會(huì)打開一個(gè)線程對(duì)數(shù)據(jù)進(jìn)行處理,所以這里發(fā)送Signal的是串口處理數(shù)據(jù)的線程,而接收Signal是在顯示的線程中,所以他們的連接方式需要采用Qt::QueuedConnection,這樣使用跨線程的Signal和Slot連接,Signal發(fā)送以后,會(huì)等到控制權(quán)返回到接收者線程的事件循環(huán)后才調(diào)用槽,就是說槽在接收者的線程中被執(zhí)行,如果采用其他方式連接,顯示可能就會(huì)出現(xiàn)各種錯(cuò)誤。

如果在顯示界面中添加了一些其他功能組件,比如按鈕等,可以在這里編寫組件的事件響應(yīng)函數(shù),實(shí)現(xiàn)想要的功能,在本例程中,添加了一些組合框和按鈕,用來選擇串口的端口號(hào)和波特率,并且打開或者關(guān)閉串口,部分實(shí)現(xiàn)代碼如下:

void Widget::on_openpushButton_clicked() //打開按鈕
{
qint8 i;
portno=ui->portNamecomboBox->currentText(); //讀取端口號(hào)
ba = portno.toLatin1();
m_portno=ba.data(); //轉(zhuǎn)換為字符串
ba.clear();
baudRate=ui->baudRatecomboBox->currentText(); //讀取波特率
m_baudRate=baudRate.toInt(); //轉(zhuǎn)換為整形
myCom=new CSerial;
i=myCom ->OpenPort( m_portno, m_baudRate, '8', '1', 'N' ); //打開串口
if(i<0)
{
QMessageBox::information(this, tr('打開失敗'), tr('打開串口失敗') , QMessageBox::Ok); //打開失敗彈出提示框
delete myCom;
myCom = NULL;
return;
}

void Widget::on_closeopenpushButton_clicked() //關(guān)閉按鈕
{
myCom->ClosePort(); //關(guān)閉串口
delete myCom;
myCom = NULL;
setComboBoxEnabled(true);
ui->closeopenpushButton->setEnabled(false);
}

最后在工程中添加main.cpp,在main函數(shù)中,主要是對(duì)字體進(jìn)行設(shè)置,并且顯示我們設(shè)計(jì)的窗口:

int main( int argc,char* argv[] )
{
QApplication a(argc, argv);
QFont font('simsun',11,QFont::Bold); //設(shè)置字體
a.setFont(font);
QTextCodec::setCodecForTr(QTextCodec::codecForName('utf8'));
Widget w;
w.showFullScreen(); //顯示窗口
return a.exec();
}

運(yùn)行程序,例程的效果如下:

程序運(yùn)行效果

可以通過顯示界面選擇開啟哪一路串口,設(shè)置波特率,顯示接收到的數(shù)據(jù)。本例程只是簡單的把Step2_serialtest和Qt的顯示連接起來,將串口收到的數(shù)據(jù)顯示在Qt的界面中,并且進(jìn)行回發(fā),客戶的使用方法還是和以前的Step2_serialtest一樣只是增加了顯示界面。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11806

    瀏覽量

    219483
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6107

    瀏覽量

    37147
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    什么是嵌入式應(yīng)用開發(fā)?

    。 · ?醫(yī)療設(shè)備?:如心電圖儀、血壓計(jì)等。 開發(fā)工具和技術(shù) 嵌入式開發(fā)過程中常用的工具包括: · ?集成開發(fā)環(huán)境(IDE)?:用于編寫、編譯和調(diào)試代碼。 · ?編譯器?:將高級(jí)語言代碼轉(zhuǎn)換為機(jī)器語言
    發(fā)表于 01-12 16:13

    arm嵌入式主板優(yōu)缺點(diǎn)

    Windows CE、Linux等主流的嵌入式操作系統(tǒng)。   ARM的優(yōu)點(diǎn)   一、高可靠性、高穩(wěn)定性:在工業(yè)控制領(lǐng)域,性能穩(wěn)定可靠是自動(dòng)控制基本的要求,ARM嵌入式主板有著很特殊
    發(fā)表于 01-08 07:08

    從小白到大牛:Linux嵌入式系統(tǒng)開發(fā)的完整指南

    編寫簡單的 Shell 腳本(如自動(dòng)備份文件、批量編譯程序)鞏固技能。? 二、能力進(jìn)階:攻克核心技術(shù)模塊? 入門后需聚焦嵌入式 Linux 的核心
    發(fā)表于 12-16 10:42

    開源 | 60余套STM32單片機(jī)、嵌入式Linux、物聯(lián)網(wǎng)、人工智能項(xiàng)目(開發(fā)板+教程+源碼)

    嵌入式實(shí)戰(zhàn)項(xiàng)目推薦15個(gè)嵌入式Linux+Qt綜合應(yīng)用項(xiàng)目,涉及家居、醫(yī)療、農(nóng)業(yè)等多種應(yīng)用領(lǐng)域,案例中使用了嵌入式、物聯(lián)網(wǎng)、人工智能多技術(shù)
    的頭像 發(fā)表于 12-04 11:42 ?883次閱讀
    開源 | 60余套STM32單片機(jī)、<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>、物聯(lián)網(wǎng)、人工智能項(xiàng)目(開發(fā)板+教程+源碼)

    嵌入式主板的選型與應(yīng)用

    一、嵌入式主板核心元器件選型的關(guān)鍵考量在嵌入式主板設(shè)計(jì)中,核心元器件的選型直接決定產(chǎn)品性能與可靠性,需結(jié)合場景需求精準(zhǔn)匹配。以處理器為例,除算力與功耗外,還需關(guān)注工業(yè)級(jí)溫度范圍——如
    的頭像 發(fā)表于 11-03 17:20 ?851次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>的選型與應(yīng)用

    嵌入式從入門到進(jìn)階,怎么學(xué)?

    嵌入式從入門到進(jìn)階,怎么學(xué)? 嵌入式學(xué)習(xí)的核心是 “軟硬結(jié)合的技術(shù)壁壘”,科學(xué)分層才能高效突破。以下是從入門到高階的精簡路線,幫你避開彎路: 1、基礎(chǔ)奠基層:構(gòu)建技術(shù)底座 C 語言聚焦
    發(fā)表于 09-02 09:44

    嵌入式工程師為什么要學(xué)QT?

    Qt對(duì)嵌入式工程師來說,真的很重要嗎? Qt是一個(gè)跨平臺(tái)的C++應(yīng)用程序開發(fā)框架,非常適合嵌入式系統(tǒng)的開發(fā),
    發(fā)表于 08-14 15:15

    高效開發(fā) | 瑞迅基于瑞芯微系列主板QT移植部署(上)

    嵌入式開發(fā)的浪潮中,RK3568平臺(tái)以其強(qiáng)勁性能成為諸多領(lǐng)域的寵兒,而QT憑借出色的跨平臺(tái)特性和豐富功能,是界面開發(fā)的利器。將QT5移植到RK3568平臺(tái)的深度融合,是嵌入式硬件標(biāo)準(zhǔn)
    的頭像 發(fā)表于 07-11 15:39 ?1205次閱讀
    高效開發(fā) | 瑞迅基于瑞芯微系列<b class='flag-5'>主板</b><b class='flag-5'>QT</b>移植部署(上)

    嵌入式軟件開發(fā)常用的軟件有哪些?

    軟件功能。 2. Visual Studio 簡稱VS: 它是一個(gè)IDE,集成開發(fā)環(huán)境。驗(yàn)證C程序或是進(jìn)行c#程序開發(fā),可以用它。一些與嵌入式相關(guān)的模擬器也是基于VS的。幫助開發(fā)人員更穩(wěn)定,更有
    發(fā)表于 07-03 17:06

    一文帶你了解嵌入式主板

    嵌入式主板是專為嵌入式系統(tǒng)設(shè)計(jì)的計(jì)算機(jī)主板。它與我們常見的臺(tái)式機(jī)或筆記本電腦主板有著顯著的區(qū)別,核心在于它不是為了通用計(jì)算,而是為了執(zhí)行特定
    的頭像 發(fā)表于 06-30 16:12 ?867次閱讀
    一文帶你了解<b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>

    Linux嵌入式和單片機(jī)嵌入式的區(qū)別?

    :使用Linux操作系統(tǒng),可以運(yùn)行各種復(fù)雜的應(yīng)用程序和驅(qū)動(dòng)程序。 4. 資源需求 : 單片機(jī)嵌入式 :對(duì)硬件資源的需求較低,通常只需要一個(gè)單片機(jī)芯片,內(nèi)存和存儲(chǔ)空間較小。
    發(fā)表于 06-20 09:46

    嵌入式主板詳解與選購指南

    什么是嵌入式主板嵌入式主板是專為嵌入式系統(tǒng)設(shè)計(jì)的核心計(jì)算平臺(tái)。它與我們?nèi)粘J褂玫呐_(tái)式機(jī)或筆記本電腦主板
    的頭像 發(fā)表于 06-06 13:23 ?939次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>詳解與選購指南

    嵌入式主板特點(diǎn)與應(yīng)用場景解析

    嵌入式主板(EmbeddedMotherboard)是專為嵌入式系統(tǒng)設(shè)計(jì)的重要硬件平臺(tái),通常集成處理器、內(nèi)存、存儲(chǔ)、接口等關(guān)鍵組件,用于控制和管理特定設(shè)備或應(yīng)用。與通用計(jì)算機(jī)主板不同,
    的頭像 發(fā)表于 05-26 15:12 ?981次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>特點(diǎn)與應(yīng)用場景解析

    在金融發(fā)展領(lǐng)域,嵌入式主板有什么優(yōu)點(diǎn)?

    在金融發(fā)展領(lǐng)域,嵌入式主板能夠有力推動(dòng)金融行業(yè)的智能化與高效化進(jìn)程。主板的強(qiáng)大計(jì)算能力可以保障業(yè)務(wù)高效運(yùn)行。
    的頭像 發(fā)表于 05-19 09:22 ?790次閱讀

    創(chuàng)浪潮下,國產(chǎn)主板有什么新的發(fā)展機(jī)遇?

    信息技術(shù)應(yīng)用創(chuàng)新浪潮的推動(dòng)下,國產(chǎn)主板迎來了諸多新的發(fā)展機(jī)遇。信創(chuàng)產(chǎn)業(yè)旨在實(shí)現(xiàn)信息技術(shù)領(lǐng)域的自主可控,這一戰(zhàn)略目標(biāo)為國產(chǎn)主板的發(fā)展提供了廣
    的頭像 發(fā)表于 05-09 09:24 ?847次閱讀
    信<b class='flag-5'>創(chuàng)</b>浪潮下,國產(chǎn)<b class='flag-5'>主板</b>有什么新的發(fā)展機(jī)遇?
    积石山| 黄冈市| 唐河县| 大冶市| 长宁区| 临泽县| 青州市| 哈尔滨市| 河东区| 蓬溪县| 克山县| 普兰县| 高淳县| 昌都县| 乌拉特中旗| 九台市| 武定县| 故城县| 潜江市| 剑川县| 牙克石市| 山阳县| 黑山县| 增城市| 汽车| 林口县| 桃源县| 阜康市| 张北县| 友谊县| 牡丹江市| 潮安县| 绵竹市| 汉中市| 乌苏市| 隆尧县| 沈阳市| 东平县| 通城县| 潮州市| 茶陵县|