• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于ARM的電費綜合自助系統(tǒng)的設計與實現

      2010-08-07 08:20:58楊曉東糜元根
      網絡安全技術與應用 2010年7期
      關鍵詞:光標服務器端對話框

      楊曉東 糜元根

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

      0 引言

      本系統(tǒng)在用戶操作過程中,把交互信息寫入本地數據庫,并且同時更新遠程數據庫。系統(tǒng)設計兩個數據庫的目的也是為了在網絡不順暢的時候,用戶也可以及時購電。管理員可以在遠程數據庫上對用戶數據進行統(tǒng)一管理。

      1 系統(tǒng)的實現原理

      1.1 MiniGUI圖形界面應用程序開發(fā)技術

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

      用于處理事件的窗口例程通常標志了某一個“窗口類”,具有相同窗口例程的窗口實例被認為是屬于同一窗口類。

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

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

      1.1.1 事件驅動編程

      1.1.2 MiniGUI-Lite和MiniGUI-Threads

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

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

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

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

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

      在 MiniGUI Lite版本中,我們可以同時運行多個MiniGUI應用程序。首先我們啟動一個服務器程序mginit,然后我們可以啟動其他作為客戶端運行的 MiniGUI應用程序。如果因為某種原因客戶終止,服務器不受影響,可以繼續(xù)運行。

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

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

      1.1.3 窗口及窗口過程

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

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

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

      1.2 Socket網絡編程技術

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

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

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

      1.3 SQLite技術

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

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

      2 系統(tǒng)的軟件設計

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

      2.1 客戶端程序流程

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

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

      2.2 服務器端流程設計

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

      圖3 服務器端流程圖

      3 結語

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

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

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

      猜你喜歡
      光標服務器端對話框
      正常恢復虛擬機
      Bootlace Worms’Secret etc.
      中學科技(2018年12期)2018-12-19 11:22:28
      淺析異步通信層的架構在ASP.NET 程序中的應用
      成功(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
      網頁防篡改中分布式文件同步復制系統(tǒng)
      快速抓取對話框中的完整信息
      電腦迷(2012年22期)2012-04-29 20:30:54
      陳光標:巴菲特先生,我要裸捐!
      博客天下(2010年18期)2010-09-22 03:47:00
      千阳县| 南昌市| 湘潭县| 梨树县| 元江| 昌宁县| 定远县| 洱源县| 乌拉特中旗| 五家渠市| 双城市| 广元市| 金湖县| 石首市| 安乡县| 涟源市| 阳朔县| 莱芜市| 德化县| 波密县| 温泉县| 大厂| 黄大仙区| 蒙自县| 本溪| 古浪县| 云龙县| 吉林市| 敦化市| 厦门市| 建瓯市| 松阳县| 全南县| 荣成市| 新竹县| 临江市| 乐都县| 桃江县| 广汉市| 宜丰县| 平定县|