亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于嵌入式Linux系統(tǒng)的油氣探測監(jiān)控軟件設(shè)計

        2022-08-05 04:52:28朱鵠駿
        關(guān)鍵詞:嵌入式數(shù)據(jù)庫系統(tǒng)

        蘇 芝, 朱鵠駿

        (上海船舶運輸科學(xué)研究所有限公司 艦船自動化系統(tǒng)事業(yè)部, 上海 200135)

        0 引 言

        船舶機艙是船舶的“心臟”,也是發(fā)生火災(zāi)的可能性較高的區(qū)域之一。機艙內(nèi)的很多設(shè)備在運行過程中都會產(chǎn)生油氣,當(dāng)油氣積累到一定程度之后,遇火源會爆燃,從而引發(fā)安全事故。同時,未經(jīng)處理的油氣混合物排放到空氣中會造成大氣污染。因此,需對船舶機艙內(nèi)的油氣濃度進行實時監(jiān)測控制。

        傳統(tǒng)的船舶機艙油氣探測監(jiān)控報警系統(tǒng)通常采用傳感器采集機艙內(nèi)的油氣濃度,通過微處理器編程實現(xiàn)對油氣濃度的實時顯示、報警和記錄等功能。這種系統(tǒng)使傳感器數(shù)據(jù)讀取與監(jiān)控報警處在同一層次,不符合系統(tǒng)高內(nèi)聚、低耦合的設(shè)計要求,且其是采用C語言開發(fā)的,存在功能固定、可移植性差、不能跨平臺、配置難度大和維護成本高等不足。因此,有必要對監(jiān)控報警系統(tǒng)軟件進行改進。

        面向?qū)ο蟮脑O(shè)計方式不僅能屏蔽底層硬件差異,給軟件應(yīng)用提供統(tǒng)一接口,使開發(fā)更工程化,而且能通過將面向?qū)ο蟮母呒壵Z言與數(shù)據(jù)庫配合使用,使應(yīng)用更靈活,功能更強大,配置管理更方便,且具有跨平臺、可移植和可擴展等優(yōu)勢。此外,將傳感器數(shù)據(jù)讀取與監(jiān)控報警等應(yīng)用分布于不同的應(yīng)用對象中,能降低系統(tǒng)的耦合度,提高系統(tǒng)的可維護性。本文介紹一種基于嵌入式操作系統(tǒng)(Embedded Operating System,EOS),采用面向?qū)ο蟮腝t/Embedded實現(xiàn)界面設(shè)計和開發(fā),利用SQLite數(shù)據(jù)庫進行數(shù)據(jù)配置和存儲的新型油氣探測監(jiān)控軟件。

        1 方案設(shè)計

        1.1 操作系統(tǒng)

        EOS具有操作方便、簡單、提供的圖形用戶接口友好和易學(xué)易用等特性,目前在嵌入式操作系統(tǒng)開發(fā)領(lǐng)域,有近50%的項目采用Linux系統(tǒng)作為EOS。與VxWorks和WinCE相比,Linux不僅具有內(nèi)核小、效率高和可擴性強等優(yōu)勢,而且是免費的,在價格上極具競爭力,最重要的是其源代碼開放,能避免黑箱技術(shù),這與信息產(chǎn)業(yè)安全可控的發(fā)展目標(biāo)是一致的。因此,本文所述操作系統(tǒng)采用成熟穩(wěn)定的嵌入式Linux系統(tǒng),版本為3.10.32。

        1.2 嵌入式圖形庫

        Qt/Embedded是一個專門為嵌入式系統(tǒng)設(shè)計圖形用戶界面的工具包,是挪威Trolltech公司的Qt的嵌入式版本,不僅具有開源代碼和詳盡的API(Application Programming Interface)文檔,以及模塊化設(shè)計可裁減(最小只有600 KB左右)、可移植性好、有自己的窗口系統(tǒng)、可直接對底層圖形驅(qū)動進行操作、支持多種硬件和軟件輸入及可連接數(shù)據(jù)庫等特點,而且基于X Windows(X11)的Qt程序,在經(jīng)過Qt/Embedded的庫和工具編譯之后,可直接移植到嵌入式平臺上運行,不需要修改代碼,能大大提高開發(fā)效率,降低開發(fā)和維護成本。Qt/Embedded和Qt/X11的體系結(jié)構(gòu)見圖1。

        圖1 Qt/Embedded和Qt/X11的體系結(jié)構(gòu)

        因此,采用在Qt/X11上開發(fā)應(yīng)用程序,調(diào)試完成并重新編譯之后將其移植到嵌入式平臺上運行的方法,使開發(fā)人員能在熟悉的開發(fā)平臺上進行軟件開發(fā),不需要重新學(xué)習(xí)和適應(yīng)新的平臺,大大節(jié)省開發(fā)時間,同時便于維護。

        1.3 數(shù)據(jù)庫

        SQLite是一款輕量級、跨平臺且向后兼容、文件格式穩(wěn)定、開源的關(guān)系型數(shù)據(jù)庫,占用的資源較少,處理速度較快,不需要運行獨立數(shù)據(jù)庫引擎,可同應(yīng)用一起編譯。此外,與My SQL、Oracle和Postgre SQL等其他主流數(shù)據(jù)庫不同,SQLite非常適合嵌入式系統(tǒng)使用。在開發(fā)嵌入式系統(tǒng)時,SQLite無論是在配置和事務(wù)功能方面,還是在內(nèi)存開銷和讀寫性能方面,都具有獨特的優(yōu)勢?;谏鲜鰞?yōu)點,采用數(shù)據(jù)庫SQLite Expert Professional 3.0實現(xiàn)對數(shù)據(jù)的配置和存儲,不僅內(nèi)存開銷小、讀寫速度快,而且操作簡單、方便。

        1.4 通信方式

        在船舶監(jiān)控系統(tǒng)中,CAN總線通信是一種比較常用的通信方式,不僅成本低,而且使用可靠。因此,本文采用Linux系統(tǒng)下的SocketCAN通信方式實現(xiàn)CAN總線數(shù)據(jù)通信。

        2 關(guān)鍵技術(shù)難點

        2.1 Linux系統(tǒng)中CAN的使用

        在Linux系統(tǒng)中,采用SocketCAN通信方式進行CAN總線數(shù)據(jù)通信,該方式與常用的Windows系統(tǒng)下的CAN總線通信略有不同,具體的操作和使用如下。

        1) 在開發(fā)之前將已生成的CAN驅(qū)動動態(tài)鏈接庫拷貝到Qt相應(yīng)的路徑下,執(zhí)行以下命令:

        cp mcuzone/libcan.so mcuzone/nfsroot/roots_bulid/qt486/lib。

        2) 在工程文件中添加所需庫。一般Qt工程文件是直接編譯生成的,不需要改動,且相比Windows系統(tǒng)引入外部動態(tài)庫,只需在所需的頭文件中引入即可,Linux系統(tǒng)還需在工程文件xx.pro中添加動態(tài)庫的路徑和名稱,具體為

        LIBS +=-L /tmp/-lcan

        (1)

        3) 在程序中應(yīng)用CAN驅(qū)動。引入CAN驅(qū)動之后,還需在程序中添加相應(yīng)的頭文件和外部CAN接口函數(shù)。此外,與Windows系統(tǒng)下的操作不同的還有,Linux系統(tǒng)中采用建立綁定套接字接口的方式進行CAN初始化,具體如下。

        (1) 引入和使用CAN接口函數(shù):

        (2) SocketCAN套接字接口程序:

        4) 接收和發(fā)送CAN數(shù)據(jù)。在Linux系統(tǒng)中,SocketCAN通信方式采用read()和write()函數(shù)接收和發(fā)送數(shù)據(jù),實現(xiàn)信息交換,具體如下。

        (1) SocketCAN接收數(shù)據(jù):

        (2) SocketCAN發(fā)送數(shù)據(jù):

        2.2 Linux系統(tǒng)中文亂碼問題的解決

        Linux系統(tǒng)與Windows系統(tǒng)在編碼上有顯著差別,Windows系統(tǒng)默認的是GBK(gb2312),而Linux系統(tǒng)默認的是UTF-8。同時,Linux系統(tǒng)中自帶的Qt字庫默認不支持中文顯示,因此要進行如下操作。

        1) 需將系統(tǒng)中的中文字庫復(fù)制到Qt字庫中,執(zhí)行命令:

        cp urs/share/fonts/truetype/wqy/wqy-miorohei.ttc

        mcuzone/nfsroot/roots_bulid/qt486/lib/fonts

        2) 在所建工程的main.cpp中引入支持的中文字庫,具體設(shè)置如下:

        3 軟件的設(shè)計與實現(xiàn)

        3.1 框架設(shè)計

        該軟件采用Qt/Embedded庫的3層結(jié)構(gòu),即Qt/Embedded(上層控件層)、Qt核心庫(上層圖形層)、圖形引擎和數(shù)據(jù)驅(qū)動層,具體結(jié)構(gòu)見圖2。

        圖2 Qt/Embedded結(jié)構(gòu)

        1) 在上層控件層,利用Qt Creator工具開發(fā)基于Dialog的GUI圖形界面應(yīng)用程序,接收輸入模塊采集并轉(zhuǎn)換的氣體變送器濃度數(shù)據(jù),實時監(jiān)控機艙內(nèi)的氣體變送器濃度數(shù)據(jù),當(dāng)濃度達到限值時進行聲光報警。同時,該層具有歷史數(shù)據(jù)查詢等功能。軟件框架設(shè)計見圖3。

        圖3 軟件框架設(shè)計

        2) 在上層圖形層獲得幀緩沖驅(qū)動體系所需的具體硬件信息,為下一層驅(qū)動提供支持,同時使底層Linux的幀緩沖驅(qū)動圖形操作抽象化(如畫刷、畫線等),供上一層控件使用。

        3) 在圖形引擎和數(shù)據(jù)驅(qū)動層,將下一層輸入設(shè)備的輸入信息抽象為具體的事件,并直接對底層的緩沖驅(qū)動進行訪問。

        3.2 人機界面設(shè)計

        該軟件的人機界面主要承擔(dān)系統(tǒng)圖、實時數(shù)據(jù)、網(wǎng)絡(luò)圖、歷史數(shù)據(jù)查詢與報警和設(shè)置等功能。人機界面設(shè)計主要分為標(biāo)題欄、菜單欄和界面顯示等3部分。

        1) 標(biāo)題欄主要顯示單位Logo、單位名稱、最新一條報警和報警數(shù)量,使用戶能很方便地查看當(dāng)前最新的報警信息,并了解當(dāng)前有多少報警信息需要處理。

        2) 菜單欄主要根據(jù)需求顯示系統(tǒng)圖、實時數(shù)據(jù)、網(wǎng)絡(luò)圖、歷史事件和設(shè)置。用戶可便捷地進行界面查看和切換操作。

        3) 在Qt Designer設(shè)計窗體界面,均采用自主設(shè)計開發(fā)控件的方式實現(xiàn)整體界面開發(fā),不僅復(fù)用性好,而且便于后續(xù)維護。

        系統(tǒng)圖以圖形的方式顯示參數(shù),包括氣體變送器濃度和風(fēng)機啟動信號;網(wǎng)絡(luò)圖以圖形的方式顯示系統(tǒng)網(wǎng)絡(luò)圖,包括系統(tǒng)連接和CAN網(wǎng)通斷;歷史事件以表格的方式顯示參數(shù),包括報警、消警、應(yīng)答、風(fēng)機啟動信號、風(fēng)機啟動信號恢復(fù)、變送器斷線、變送器斷線恢復(fù)、CAN網(wǎng)斷開和CAN網(wǎng)恢復(fù)等;設(shè)置顯示亮度調(diào)節(jié)(通過“+”和“-”按鈕進行亮度調(diào)節(jié))和軟件版本號等信息。

        3.3 重要功能設(shè)計

        3.3.1 實時數(shù)據(jù)處理

        該模塊的功能是對接收的氣體變送器濃度數(shù)據(jù)進行加工處理,并根據(jù)該數(shù)據(jù)是否達到報警限值進行相應(yīng)的報警處理和記錄,同時在相應(yīng)的監(jiān)控界面顯示,便于用戶實時查看和處理。根據(jù)接收的氣體變送器濃度判斷氣體變送器是否有斷線故障,若有,則設(shè)置氣體變送器為斷線狀態(tài),否則判斷氣體變送器濃度是否達到報警限值,若達到報警限值,則進行報警顯示,啟動抽風(fēng)機,發(fā)出報警信號,并進行相應(yīng)的報警記錄。具體的實時氣體變送器數(shù)據(jù)處理流程見圖4。

        圖4 實時氣體變送器數(shù)據(jù)處理流程

        3.3.2 SocketCAN模塊

        該模塊的功能是建立底層與上層軟件的數(shù)據(jù)通信,實現(xiàn)系統(tǒng)客戶端與數(shù)據(jù)采集和控制端的數(shù)據(jù)交換,便于對數(shù)據(jù)進行實時更新處理。首先,采用SocketCAN通信方式進行CAN總線數(shù)據(jù)通信,通過初始化,調(diào)用socket()函數(shù)建立一個套接字,選擇CAN接口;其次,調(diào)用bind()函數(shù),將該套接字與CAN套接字地址綁定;最后,通過read()函數(shù)和write()函數(shù)進行數(shù)據(jù)的實時接收和發(fā)送處理。具體的SocketCAN程序流程見圖5。

        圖5 SocketCAN程序流程

        3.4 界面顯示

        上述配置和開發(fā)工作完成之后,運行程序就可得到油氣探測監(jiān)控軟件,具體展示以系統(tǒng)圖為例,見圖6。

        圖6 系統(tǒng)圖界面

        4 結(jié) 語

        本文詳細介紹了基于嵌入式Linux系統(tǒng)開發(fā)的新型油氣探測監(jiān)控軟件。該軟件將通信、監(jiān)測報警和圖形顯示等功能分布到不同的對象模塊中,實現(xiàn)了油氣探測系統(tǒng)需要的信息集中采集、顯示、報警和記錄等功能。該軟件通過將面向?qū)ο蟮母呒夐_發(fā)語言(Qt/Embedded)與數(shù)據(jù)庫(SQLite)配合使用,降低了系統(tǒng)軟件的耦合度,提高了系統(tǒng)軟件的可維護性,達到了軟件跨平臺、可移植、可擴展的設(shè)計要求,具有界面美觀友好、操作簡單、功能豐富和管理方便等優(yōu)點。此外,通過開發(fā)該軟件,總結(jié)出了一種通用的控制模塊軟件開發(fā)方式,可在船舶監(jiān)控系統(tǒng)中推廣使用,進一步降低船舶監(jiān)控系統(tǒng)軟件開發(fā)的復(fù)雜度和維護成本,提高軟件開發(fā)的效率。

        猜你喜歡
        嵌入式數(shù)據(jù)庫系統(tǒng)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        搭建基于Qt的嵌入式開發(fā)平臺
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        久久er99热精品一区二区| av一区二区三区综合网站| 日本高清乱码中文字幕| 久久香蕉国产线看观看精品yw | 日本边添边摸边做边爱喷水 | 亚洲av男人电影天堂热app| 欧美日韩国产成人高清视频| 91久久精品无码人妻系列| 国产精品亚洲在钱视频| 亚洲av高清一区二区三| 精品无码日韩一区二区三区不卡| 欧美成人中文字幕| 日本伦理美乳中文字幕| 国产成人av一区二区三区不卡| 久久午夜夜伦鲁鲁片免费无码| 亚洲熟妇一区无码| 北岛玲亚洲一区二区三区| 99re6在线视频精品免费| 丰满少妇被猛烈进入| 99成人无码精品视频| 亚洲国产av一区二区不卡| 99久热在线精品视频观看| 人人妻人人添人人爽日韩欧美 | 在线观看av不卡 一区二区三区 | 亚洲日本一区二区一本一道| 国产美女在线精品亚洲二区| 区三区久久精品水蜜桃av| 国产麻花豆剧传媒精品mv在线 | 日子2020一区二区免费视频| 中文字幕 在线一区二区| 老鸭窝视频在线观看| 中文人妻av久久人妻18| 亚洲无线码一区在线观看| 国产精品国产三级国产剧情| 国产av一区二区三区传媒| 久久成人免费电影| 日本特殊按摩在线观看| 亚洲人精品午夜射精日韩| 麻豆国产人妻欲求不满| 中国少妇和黑人做爰视频| 老熟妇乱子伦牲交视频|