chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

串口和Qt顯示

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

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

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

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

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

對串口程序的修改已經完成,在工程中加入Qt設計師界面,根據需要設計顯示界面,本例程中的界面如下:

設計的界面

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

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

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

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

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

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

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

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

void Widget::on_openpushButton_clicked() //打開按鈕
{
qint8 i;
portno=ui->portNamecomboBox->currentText(); //讀取端口號
ba = portno.toLatin1();
m_portno=ba.data(); //轉換為字符串
ba.clear();
baudRate=ui->baudRatecomboBox->currentText(); //讀取波特率
m_baudRate=baudRate.toInt(); //轉換為整形
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() //關閉按鈕
{
myCom->ClosePort(); //關閉串口
delete myCom;
myCom = NULL;
setComboBoxEnabled(true);
ui->closeopenpushButton->setEnabled(false);
}

最后在工程中添加main.cpp,在main函數中,主要是對字體進行設置,并且顯示我們設計的窗口:

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

運行程序,例程的效果如下:

程序運行效果

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

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

    關注

    88

    文章

    11682

    瀏覽量

    218577
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6107

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

    嵌入式主板的選型與應用

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

    嵌入式工程師為什么要學QT?

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

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

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

    一文帶你了解嵌入式主板

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

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

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

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

    什么是嵌入式主板嵌入式主板是專為嵌入式系統(tǒng)設計的核心計算平臺。它與我們日常使用的臺式機或筆記本電腦主板
    的頭像 發(fā)表于 06-06 13:23 ?659次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>詳解與選購指南

    Linux的作用

    。 2、嵌入式系統(tǒng):Linux可以被嵌入到各種嵌入式設備中,如智能路由器、智能電視等。它提供了一個靈活的平臺,可以根據設備的需求進行定制和優(yōu)化。 3、個人電腦操作系統(tǒng):
    發(fā)表于 04-04 01:57

    嵌入式主板開發(fā)詳細指南

    嵌入式主板開發(fā)涉及硬件設計、軟件集成、系統(tǒng)優(yōu)化等多個環(huán)節(jié),需要結合具體應用場景進行深度定制。以下是嵌入式主板開發(fā)的詳細指南,涵蓋關鍵步驟、工具、挑戰(zhàn)及實際案例:一、開發(fā)流程與關鍵步驟1
    的頭像 發(fā)表于 04-02 11:35 ?1090次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>開發(fā)詳細指南

    高可靠性嵌入式主板設計

    設計直接影響整個系統(tǒng)的穩(wěn)定性和壽命。因此,設計高可靠性的嵌入式主板不僅是技術挑戰(zhàn),也是提高產品競爭力的關鍵因素。本文將深入探討高可靠性嵌入式主板
    的頭像 發(fā)表于 03-25 15:11 ?938次閱讀
    高可靠性<b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>設計

    嵌入式主板選型與應用指南

    嵌入式主板是專為嵌入式系統(tǒng)設計的核心硬件平臺,廣泛應用于工業(yè)控制、物聯(lián)網、醫(yī)療設備等領域。以下是關于嵌入式主板的詳細介紹:1.
    的頭像 發(fā)表于 02-27 14:53 ?1047次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>選型與應用指南

    ElfBoard技術貼|如何在ELF 1開發(fā)板上交叉移植Qt

    嵌入式系統(tǒng)開發(fā)領域,針對特定硬件平臺進行Qt框架的移植與適配是一項關鍵技術任務。作為業(yè)界主流的跨平臺應用開發(fā)框架,Qt憑借其完善的圖形界面支持能力,在
    的頭像 發(fā)表于 02-24 16:18 ?1185次閱讀
    ElfBoard<b class='flag-5'>技術</b>貼|如何在ELF 1開發(fā)板上交叉移植<b class='flag-5'>Qt</b>

    小身材大能量:解讀小尺寸嵌入式主板

    此前,已經帶大家認識了嵌入式主板的尺寸版型,相信大家對此已有了初步印象。在科技日新月異的當下,各類設備都朝著更小體積、更高性能的方向發(fā)展。小尺寸嵌入式主板正悄無聲息改變著我們的生活與商
    的頭像 發(fā)表于 02-17 18:02 ?1091次閱讀
    小身材大能量:解讀小尺寸<b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>

    盤點無風扇嵌入式主板應用優(yōu)勢

    在科技飛速發(fā)展的今天,嵌入式主板在各個領域發(fā)揮著重要作用。而無風扇嵌入式主板以獨特優(yōu)勢在工業(yè)自動化、醫(yī)療設備和智能交通等領域廣泛應用。今天,就讓我們一起深入了解無風扇
    的頭像 發(fā)表于 02-15 18:04 ?727次閱讀
    盤點無風扇<b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>應用優(yōu)勢