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

        ?

        一種基于ARM的電費(fèi)綜合自助系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

        2010-08-07 08:20:58楊曉東糜元根
        關(guān)鍵詞:光標(biāo)服務(wù)器端對(duì)話框

        楊曉東 糜元根

        南京工業(yè)大學(xué)信息科學(xué)與工程學(xué)院 江蘇 210009

        0 引言

        本系統(tǒng)在用戶操作過程中,把交互信息寫入本地?cái)?shù)據(jù)庫,并且同時(shí)更新遠(yuǎn)程數(shù)據(jù)庫。系統(tǒng)設(shè)計(jì)兩個(gè)數(shù)據(jù)庫的目的也是為了在網(wǎng)絡(luò)不順暢的時(shí)候,用戶也可以及時(shí)購電。管理員可以在遠(yuǎn)程數(shù)據(jù)庫上對(duì)用戶數(shù)據(jù)進(jìn)行統(tǒng)一管理。

        1 系統(tǒng)的實(shí)現(xiàn)原理

        1.1 MiniGUI圖形界面應(yīng)用程序開發(fā)技術(shù)

        為了與用戶有很好的交互性,需要設(shè)計(jì)圖形界面便于用戶操作。常見的圖形界面設(shè)計(jì)方法是QT和MiniGUI,綜合考慮了系統(tǒng)的硬件,本系統(tǒng)采用MiniGUI進(jìn)行圖形界面設(shè)計(jì)。MiniGUI是由北京飛漫軟件技術(shù)有限公司主持的自由軟件,遵循GPL條款發(fā)布。其目的是為實(shí)時(shí)嵌入式Linux系統(tǒng)建立一個(gè)快速、穩(wěn)定和輕量級(jí)的圖形用戶界面支持系統(tǒng)。本系統(tǒng)采用的MiniGUI 1.3.1版本,可以從http://www. minigui.com上下載。

        用于處理事件的窗口例程通常標(biāo)志了某一個(gè)“窗口類”,具有相同窗口例程的窗口實(shí)例被認(rèn)為是屬于同一窗口類。

        焦點(diǎn)和光標(biāo)的概念用于管理輸入設(shè)備和輸入事件的發(fā)送。鼠標(biāo)光標(biāo)是一個(gè)繪制在屏幕之上的小位圖,指示當(dāng)前的鼠標(biāo)位置。以某種非破壞性的方式繪制該位圖是窗口系統(tǒng)的責(zé)任,不過應(yīng)用程序可以控制繪制哪一個(gè)位圖以及是否顯示該光標(biāo)。應(yīng)用程序還可以捕捉鼠標(biāo)光標(biāo)并獲取光標(biāo)事件,即使該光標(biāo)已經(jīng)超出該應(yīng)用程序窗口的顯示范圍。鍵盤輸入有類似的輸入焦點(diǎn)和鍵盤輸入插入符的概念。只有具有輸入焦點(diǎn)的窗口才能獲取鍵盤事件。改變窗口的焦點(diǎn)通常由特殊的按鍵組合或者鼠標(biāo)光標(biāo)事件完成。具有輸入焦點(diǎn)的窗口通常繪制有一個(gè)鍵盤插入符。該插入符的存在、形式、位置,以及該插入符的控制完全是由窗口的事件處理例程完成的。

        應(yīng)用程序可通過調(diào)用一些系統(tǒng)函數(shù)來要求重繪窗口或窗口的某一部分,這些事件通常由窗口例程來處理。

        1.1.1 事件驅(qū)動(dòng)編程

        1.1.2 MiniGUI-Lite和MiniGUI-Threads

        MiniGUI是一個(gè)圖形用戶界面支持系統(tǒng),通常的GUI編程概念均適用于MiniGUI編程,如窗口和事件驅(qū)動(dòng)編程等。

        在傳統(tǒng)的GUI圖形系統(tǒng)模型中,鍵盤和鼠標(biāo)動(dòng)作產(chǎn)生由應(yīng)用程序不斷輪詢的事件。這些事件通常發(fā)送到具有焦點(diǎn)的窗口,而應(yīng)用程序把這些事件交由和該窗口相關(guān)聯(lián)的例程來處理。這些窗口例程通常是由應(yīng)用程序定義的,或者是某些標(biāo)準(zhǔn)例程中的一個(gè)。操作系統(tǒng)、其它窗口的事件處理例程和應(yīng)用程序代碼都可以產(chǎn)生事件。

        在編寫第一個(gè)MiniGUI程序之前,我們需要了解一個(gè)事實(shí):我們可將MiniGUI配置編譯成兩個(gè)架構(gòu)上截然不同的版本——MiniGUI-Lite版或MiniGUI-Threads版。

        MiniGUI的早期版本(即 MiniGUI-Threads)采用基于POSIX線程的消息傳遞和窗口管理機(jī)制,這種實(shí)現(xiàn)提供最大程度上的數(shù)據(jù)共享,但同時(shí)造成了MiniGUI體系結(jié)構(gòu)上的脆弱。

        如果某個(gè)線程因?yàn)榉欠ǖ臄?shù)據(jù)訪問而終止運(yùn)行,則整個(gè)系統(tǒng)將受到影響。為了解決這個(gè)問題,使MiniGUI更符合嵌入式系統(tǒng)的應(yīng)用需求,MiniGUI從0.98開始推出Lite版本。Lite版本的MiniGUI使用進(jìn)程機(jī)制,拋棄了pThread庫,從而使得MiniGUI更穩(wěn)定和更高效率。

        在 MiniGUI Lite版本中,我們可以同時(shí)運(yùn)行多個(gè)MiniGUI應(yīng)用程序。首先我們啟動(dòng)一個(gè)服務(wù)器程序mginit,然后我們可以啟動(dòng)其他作為客戶端運(yùn)行的 MiniGUI應(yīng)用程序。如果因?yàn)槟撤N原因客戶終止,服務(wù)器不受影響,可以繼續(xù)運(yùn)行。

        MiniGUI-Lite區(qū)別于MiniGUI-Threads的最大不同在于我們可以在MiniGUI-Lite程序中創(chuàng)建多個(gè)窗口,但不能啟動(dòng)新的線程建立窗口。除此之外,其他幾乎所有的 API都和MiniGUI原有版本是兼容的。

        MiniGUI-Threads適合于多窗口、實(shí)時(shí)性要求很高的系統(tǒng),比如工業(yè)控制系統(tǒng);而MiniGUI-Lite適合于功能豐富、結(jié)構(gòu)復(fù)雜系統(tǒng),比如PDA等信息產(chǎn)品。而且MiniGUI-Threads可以通過MiniGUI的消息函數(shù),可在不同的線程之間傳遞消息,相比較而言,本系統(tǒng)采用前者。

        1.1.3 窗口及窗口過程

        窗口是屏幕上的一個(gè)矩形區(qū)域。在傳統(tǒng)的窗口系統(tǒng)模型中,應(yīng)用程序的可視部分由一個(gè)或多個(gè)窗口構(gòu)成。每一個(gè)窗口代表屏幕上的一塊繪制區(qū)域,窗口系統(tǒng)控制該繪制區(qū)域到實(shí)際屏幕的映射,也就是控制窗口的位置、大小和可見區(qū)域。每個(gè)窗口被分配一個(gè)屏幕繪制區(qū)域來顯示本窗口的部分或全部,也許根本沒有分配到屏幕區(qū)域(該窗口完全被其它的重疊窗口所覆蓋和隱藏)。

        MiniGUI中有三種窗口類型:主窗口、對(duì)話框和控件窗口(子窗口)。每一個(gè)MiniGUI應(yīng)用程序一般都要?jiǎng)?chuàng)建一個(gè)主窗口,作為應(yīng)用程序的主界面或開始界面。主窗口通常包括一些子窗口,這些子窗口通常是控件窗口,也可以是自定義窗口類。應(yīng)用程序還會(huì)創(chuàng)建其它類型的窗口,例如對(duì)話框和消息框。對(duì)話框本質(zhì)上就是主窗口,應(yīng)用程序一般通過對(duì)話框提示用戶進(jìn)行輸入操作。消息框是用于給用戶一些提示或警告的主窗口,屬于內(nèi)建的對(duì)話框類型。

        一旦窗口建立之后,窗口就會(huì)從消息隊(duì)列當(dāng)中獲取屬于自己的消息,然后交由它的窗口過程進(jìn)行處理。窗口過程函數(shù)主要是對(duì)屬于該窗體的不同消息進(jìn)行相應(yīng)的處理。窗口過程函數(shù)通常使用switch語句來對(duì)各種消息(message)進(jìn)行處理。

        1.2 Socket網(wǎng)絡(luò)編程技術(shù)

        當(dāng)前,Socket接口是TCP/IP網(wǎng)絡(luò)最為通用的API,也是在Internet上進(jìn)行應(yīng)用開發(fā)最為通用的API。它是介于應(yīng)用層和傳輸層之間的編程接口,它提供了訪問下層通信協(xié)議的大量系統(tǒng)調(diào)用和相應(yīng)的數(shù)據(jù)結(jié)構(gòu)功能。在Linux系統(tǒng)中,Socket是應(yīng)用程序訪問下層網(wǎng)絡(luò)協(xié)議的惟一方法。具體地講,Socket在用戶級(jí)實(shí)現(xiàn)了兩個(gè)應(yīng)用程序之間的網(wǎng)絡(luò)連接和數(shù)據(jù)交換,所以Linux中的Socket意味著網(wǎng)絡(luò)上的通信。

        我們?cè)谧鼍W(wǎng)絡(luò)傳輸數(shù)據(jù)功能時(shí),采用了客戶端/服務(wù)器(C/S)網(wǎng)絡(luò)通信:服務(wù)器端守護(hù)進(jìn)程不斷的監(jiān)聽、等待連接;客戶端向遠(yuǎn)程服務(wù)器發(fā)送連接請(qǐng)求,服務(wù)器端收到請(qǐng)求后,按照一定的規(guī)則建立連接,連接完成后,兩個(gè)程序之間就建立了一個(gè)虛擬的數(shù)據(jù)通信鏈路。這些程序可以直接從自己打開的套接口讀入和寫出數(shù)據(jù),而不用關(guān)心實(shí)際的數(shù)據(jù)鏈路。具體實(shí)現(xiàn)過程見圖1。

        圖1 基于TCP協(xié)議的socket傳輸流程圖

        1.3 SQLite技術(shù)

        SQLite是2000年開發(fā)出來的一種小型嵌入式數(shù)據(jù)庫。它是一個(gè)小型的C語言鏈接庫,這個(gè)鏈接庫本身就完全包含數(shù)據(jù)庫引擎的功能,可以方便地運(yùn)用于嵌入式系統(tǒng)中。SQLite提供了對(duì)SQL92的大多數(shù)支持,支持多表、索引、事務(wù)、視圖和觸發(fā)等一系列用戶接口以及驅(qū)動(dòng)。簡(jiǎn)單易用,速度也相當(dāng)?shù)每?,同時(shí)提供了豐富的數(shù)據(jù)庫接口。這個(gè)庫具有很強(qiáng)的內(nèi)聚性,通過不到25000行的ANSIC代碼實(shí)現(xiàn),而且它的源代碼完全開放,可以自由地應(yīng)用于任何領(lǐng)域。

        在與MiniGUI的連接中,SQLite的API及其易于使用,完全可以對(duì)嵌入式數(shù)據(jù)庫進(jìn)行基本的操作,如建立表格、查詢、修改、插入、刪除、排序等,只需要三個(gè)用來執(zhí)行SQL和獲取數(shù)據(jù)的函數(shù)。此外它還是可以擴(kuò)展的,允許自定義函數(shù),然后以Callback(回調(diào)函數(shù))的形式傳遞進(jìn)去。

        2 系統(tǒng)的軟件設(shè)計(jì)

        本系統(tǒng)的軟件設(shè)計(jì)分為客戶端(終端)程序設(shè)計(jì)和服務(wù)器端程序設(shè)計(jì),主要是客戶端程序設(shè)計(jì),服務(wù)器端主要是一個(gè)接收數(shù)據(jù)并更新數(shù)據(jù)庫的守護(hù)進(jìn)程程序。

        2.1 客戶端程序流程

        在客戶端,登錄系統(tǒng)后進(jìn)入主界面,主界面包括6個(gè)功能界面選擇按鈕,具體系統(tǒng)流程如圖2所示。

        圖2 系統(tǒng)主流程圖

        2.2 服務(wù)器端流程設(shè)計(jì)

        數(shù)據(jù)庫服務(wù)器端采用 Fedora 7作為服務(wù)器操作系統(tǒng),sqlite3作為數(shù)據(jù)庫,系統(tǒng)啟動(dòng)后自動(dòng)運(yùn)行守護(hù)進(jìn)程,這包括:建立套接字、綁定地址、開始監(jiān)聽并等待客戶端的連接,收到數(shù)據(jù)后更新本地?cái)?shù)據(jù)庫,并將操作記錄寫入設(shè)定好的日志文件中,循環(huán)執(zhí)行以上過程。服務(wù)器端流程圖如圖3所示。

        圖3 服務(wù)器端流程圖

        3 結(jié)語

        經(jīng)測(cè)試,本系統(tǒng)完全符合人性化設(shè)計(jì),購電方便,操作系統(tǒng)界面友好,簡(jiǎn)單。每個(gè)用戶必須憑ID和密碼才能登錄,同時(shí)密碼忘記后可以通過短信貓將密碼發(fā)送到用戶賬號(hào)登記的手機(jī)中,從而大大的增強(qiáng)了系統(tǒng)的安全性。在有網(wǎng)絡(luò)的情況下,本地?cái)?shù)據(jù)庫能與遠(yuǎn)程數(shù)據(jù)庫及時(shí)更新,做到數(shù)據(jù)實(shí)時(shí)準(zhǔn)確無誤。稍微有點(diǎn)遺憾的是,由于本系統(tǒng)過于龐大未能全面展開。

        [1] 韓超.嵌入式GUI開發(fā)設(shè)計(jì)—基于MiniGUI[M].北京:電子工業(yè)出版社.2009.

        [2] 李亞鋒,歐文盛. ARM嵌入式Linux系統(tǒng)開發(fā)從入門到精通[M].北京:清華大學(xué)出版社.2007.

        猜你喜歡
        光標(biāo)服務(wù)器端對(duì)話框
        正?;謴?fù)虛擬機(jī)
        Bootlace Worms’Secret etc.
        淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
        成功(2018年10期)2018-03-26 02:56:14
        在Windows中安裝OpenVPN
        Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
        電腦迷(2015年4期)2015-05-30 10:48:04
        Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
        電腦迷(2015年8期)2015-05-30 08:36:03
        Mac OS X系統(tǒng)中Delete刪除鍵的5種用法
        電腦迷(2015年10期)2015-04-29 15:14:20
        網(wǎng)頁防篡改中分布式文件同步復(fù)制系統(tǒng)
        快速抓取對(duì)話框中的完整信息
        電腦迷(2012年22期)2012-04-29 20:30:54
        陳光標(biāo):巴菲特先生,我要裸捐!
        博客天下(2010年18期)2010-09-22 03:47:00
        国产精品久久久久影院嫩草| 性猛交╳xxx乱大交| 丁香美女社区| 亚洲 欧美 影音先锋| 国产一极毛片| 国产一区二区在线视频| 丁香五月缴情综合网| 久久久久欧洲AV成人无码国产| 最新亚洲人AV日韩一区二区| 丝袜美腿久久亚洲一区| 日韩av在线亚洲女同| 亚洲综合精品中文字幕| 亚洲av无码乱码国产精品| 精品无码一区二区三区亚洲桃色| 国产激情电影综合在线看| 亚洲日本国产乱码va在线观看| 精品日本免费观看一区二区三区| 中文字幕av熟女中文av| 中文字幕亚洲综合久久| 国产二级一片内射视频插放| 国产av日韩a∨亚洲av电影| 久久天天躁狠狠躁夜夜中文字幕| 人妻熟女中文字幕在线视频 | 精品国产av一区二区三区| 亚洲色偷偷色噜噜狠狠99| 国产一区二区三区4区| 一区二区三区在线视频爽| 日韩精品在线免费视频| 无遮挡呻吟娇喘视频免费播放| 色一情一乱一伦一区二区三欧美| 在线一区二区三区视频观看| 国产在线视频网友自拍| 中国杭州少妇xxxx做受| 蜜臀av性久久久久蜜臀aⅴ| 国产91色在线|亚洲| 亚洲综合小综合中文字幕| 亚洲精品在线国产精品| 国产福利酱国产一区二区| 亚洲精品美女久久久久久久| 日韩男女av中文字幕| 国产不卡精品一区二区三区|