摘 要:針對電氣工程師需要查詢大量技術資料和公式以及測量電氣參數等問題,對電氣工程師PDA進行了研制,該PDA硬件采用ARM核微處理器、數據采集與處理電路和觸摸屏/LCD顯示電路。通過對現有嵌入式數據庫的分析和研究,采用了嵌入式數據庫SQLite,并移植到嵌入式微處理器S3C2440和Linux系統中。根據電氣工程師PDA的功能,設計了波形存儲表、電參數測量記錄表、電學公式表和電氣資料查詢表,重點對電氣工程師PDA數據表及其字段、電學技術資料查詢模塊數據庫表的建立和電氣資料查詢模塊中數據庫查詢程序設計進行了分析。通過在嵌入式微處理器上移植Linux操作系統和SQLite數據庫進行電氣工程師PDA的應用軟件設計,實現了在線計算、編輯和查詢電氣資料的功能,圓滿地完成了該PDA的設計要求。
關鍵詞:PDA;嵌入式系統;SQLite
中圖分類號:TP392文獻標識碼:A
[WT]文章編號:1672-1098(2011)02-0026-05
收稿日期:2011-03-25
基金項目: 安徽省高等學校自然科學基金資助項目(KJ2009A093)
作者簡介:李敬兆(1963-),男,安徽淮南人,教授,博士,研究方向為嵌入式系統。
WT3BZ]Application of Embedded SQLite Database in Electrical Engineers PDA
LI Jing-zhao, REN Ping
(School of Computer Science and Engineering, Anhui University of Science and Technology, Huainan Anhui 232001, China)
Abstract:The electrical engineer PDA was developed for solving electrical engineers need to look for a lot of technical information, edit formulas, measure electrical parameters, and so on. The PDA hardware is made up of ARM core microprocessor, data acquisition and processing circuit, and touch screen / LCD display circuit. The embedded database SQLiteis used and transplanted to the embedded microprocessor S3C2440 and Linux systems on the basis of the existing embedded databases are analyzed. Waveform storage table, electrical parameter measurement record table and electronic formulas table are designed based on the function of electrical engineers PDA. The PDA data sheet’s field, electrical technical data query module database table creation and database design of electrical data query module are mainly analyzed. Linux operating systems and SQLitedatabase are transplanted to the embedded microprocessor, electrical engineers PDA application software is designed, and online calculation, editing and querying electrical data, etc are realized. The design request of this PDA was successfully completed.
Key words:PDA; embedded systems; SQLite
嵌入式系統已經成為IT產業一個新的經濟增長點,PDA(Personal Digital Assistant)作為嵌入式系統的高端產品也得到了迅速發展。尤其是隨著基于ARM核微處理器和源碼開放的Linux 操作系統的逐步流行,PDA的功能不斷得到完善和豐富,應用也越來越廣泛。然而目前通用型的PDA較多,而專業型PDA則較少。為此,作者對電氣工程技術人員應用的專業PDA進行了研究,其集萬用表、示波器、常用電學公式計算、電氣技術參數資料手冊查詢等功能于一體,可將電氣技術人員從多儀器攜帶、大量的資料查詢、繁瑣的公式計算中解放出來,大大提高了電氣技術人員的工作效率。由于該PDA具有大量的資料和數據,因此在研制過程中基于ARM-Linux平臺,移植了嵌入式數據庫SQLite進行應用程序設計,本文主要對嵌入式數據庫在電氣工程師PDA中的移植與應用進行分析。
1 PDA的結構與功能
電氣工程師PDA的電信號測量通過底層數據采集模塊獲得,系統控制信號由觸摸屏觸發,用戶通過觸摸屏進行操作。該PDA的系統結構如圖1所示。
圖1 PDA的系統結構
電氣工程師PDA的主要功能如下:
1) 萬用表。可測量常用電信號和參數,如電阻、電容、電感、電壓、電流、頻率等,還可在線進行交流電壓和電流的瞬時值、功率因數、視在功率、有功功率、無功功率等電參數的綜合測量;
2) 示波器。以波形和數字顯示被測電信號如電壓、電流、各種功率的波形;
3) 公式計算以及在線編輯。可以進行常用電學公式的計算,用戶可直接將測量值代入PDA上給出的公式進行計算并保存,同時還支持公式的在線編輯,從而使電氣工程師PDA更具通用性;
4) 電氣技術資料查詢。用戶可按標題或關鍵詞通過精確查詢或模糊查詢來查找所需的電氣專業技術資料;
5) 語音導航和GPRS通信等功能。該PDA具有語音導航使用操作功能,可使用GPRS來實現網絡通信,以便瀏覽、下載數據或上傳個人數據。
電氣工程師PDA的功能模塊設計如圖2所示。
圖2 系統功能模塊圖
2 嵌入式數據庫分析
與通用計算機系統相比,嵌入式系統特殊的開發環境決定了其對數據庫的需求有如下特點:
1) 嵌入式數據庫管理系統要占用非常小的內存空間,應盡量避免產生冗余數據;
2) 嵌入式數據庫應具備良好的實時性,以保證運行在嵌入式實時操作系統上,不會影響整個系統的實時性能;
3) 由于嵌入式系統會不可避免地與底層硬件打交道,要求嵌入式數據庫要有底層數據操作與控制能力。
常見的基于Linux平臺嵌入式數據庫主要有PostgreSQL,MySQL,mSQL,Berkeley DB,SQLite等[1]。
MySQL 在保持中等體積的情況下提供了較為適用的功能,已經成為中小規模數據庫應用的首選,但商業應用也要收費,而且對于嵌入式開發來說空間占用仍然太大;mSQL是一種簡化的SQL數據庫,短小精悍,開發方便,適用于嵌入式開發,但它只有30天的使用期限,并非完全的開源;PostgreSQL體積較大;Berkeley DB會加大開發成本。SQLite支持絕大多數標準的SQL92語句,采用單文件存放數據庫,速度快,存儲量大。在操作語句上類似關系型數據庫,使用非常方便。另外,SQLite的版權允許無任何應用限制,包括商業性的產品。在PHP5中已經集成了這個輕巧的嵌入式數據庫產品[2]。所以本文選用了SQLite進行電氣工程師PDA的數據庫系統系統開發。
3 SQLite的移植
SQLite嵌入式數據庫提供了以源碼發布的方式,根據不同的硬件平臺,對源碼進行交叉編譯即可實現移植,電氣工程師PDA選用SQLite,其編譯經過以下幾個步驟:
1) 下載SQLite源代碼包,建立目錄。將其解壓后將生成sqlite目錄,新建并轉到一個與sqlite目錄平行的同級目錄,以便將編譯結果單獨存放。輸入$tar-zxvf sqlite-325.tar.gz,將在同級目錄下生成sqlite-3250。將arm-linux-gcc的目錄加入到PATH環境變量中[3]。
5) 在PDA上運行SQLite。將SQLite交叉編譯出來的庫文件libsqlite.a添加到文件系統中的lib目錄下,修改權限:“$chmod+wx libsqlite.a”,這樣,就可以使用SQLite提供的庫函數進行進一步的應用程序開發了。
4 嵌入式數據庫設計
電氣工程師PDA中數據庫的設計包括數據庫中表的設計和數據表中字段的設計兩部分。
41 數據表的設計
根據對電氣工程師PDA的功能分析,系統主要分為示波器模塊、萬用表模塊、電學公式計算模塊和電氣技術資料查詢模塊四個模塊。示波器模塊需要實現波形的存儲和調出顯示,在此模塊中需要建立數據表來保存波形及相關信息;萬用表模塊需要建立數據表來保存各種電測量值和測量信息以供保存和查詢。故電學公式計算模塊需要實現公式的編輯和保存,需要建立數據表來保存電學公式,該模塊還應有計算結果保存功能;電氣技術資料模塊的數據量大,主要為電氣技術人員常用的資料。
經過以上分析,系統數據庫可分為四個功能模塊,為每個模塊設計相應的數據表。
示波器模塊建立波形存儲表,字段包括測量時間、x軸單位刻度、y軸單位刻度和波形等;萬用表模塊建立電參數測量記錄表,字段包括測量時間、電物理量和測量值等;電學公式計算模塊建立電學公式表,字段包括計算物理量,電學公式,相關電物理量;另外,還要建立計算結果存儲表,可以對計算結果進行保存和查詢操作,字段包括計算時間,使用公式,計算結果。計算結果存儲表要與電學公式表進行關聯。電氣技術資料查詢模塊建立電氣資料表,字段包括資料類型、資料標題和資料內容等。
電氣工程師PDA數據庫eepda數據表的字段及功能如表1所示。
波形存儲表保存示波器模塊的波形測量時間、X軸刻度單位、Y軸刻度單位、波形
測量存儲表保存萬用表模塊的測量結果測量物理量、測量時間、測量值
電學公式表保存電學計算公式計算變量、公式
計算結果表保存電學公式計算結果計算時間、使用公式、計算結果
電氣資料表保存電氣資料供查詢資料類型、標題、內容
42 電氣技術資料數據表中字段的設計
在SQLite中,建立數據表時并不需要指定字段的數據類型,數據表中可以存儲所有的數據類型,包括數值型、字符型、長文本等,系統會根據用戶的輸入設置數據類型。在設計數據庫時就不需要考慮字段的數據類型,只需考慮合理設計數據庫表結構即可(見表2)。
字段名字段說明備注
資料類型分類型查看資料可以縮短查詢時間
資料標題每條資料的標題電學資料表鍵值
資料內容資料的具體內容用戶要查詢的內容
5 SQLite在資料查詢中的應用
電氣技術資料查詢模塊對數據庫的操作主要是資料的查詢和數據的導入。根據用戶選擇的資料類型和用戶輸入的關鍵字或標題,對電氣技術資料進行查詢,查詢可以使用精確查詢,也可以使用模糊查詢。
51 電氣技術資料查詢模塊數據庫表的建立
電氣技術資料查詢模塊涉及到數據庫部分,包括兩個方面的內容,一是要將數據寫入數據庫,提供給應用程序進行查詢;二是對這些數據的操作,讓處理后的數據能顯示在系統需要的地方,在本模塊中為多行編輯框,利用SQLite提供的API函數可以方便地進行數據處理[4]。
首先建立數據庫,在shell終端下鍵入:“$sqlite3 eepda.db”, 完成數據庫建立,接著就可在數據庫中建立電氣技術資料數據庫表。輸入“create table elecinfo(title, type, info)”,就建立了一個名為elecinfo的數據表,里面有title、type、info三個字段。
在系統運行之前,需要將常用電氣資料導入數據表,包括用戶進行查詢時選擇的資料類型、資料標題,系統根據用戶的選項查詢數據庫,并將查詢結果顯示在LCD上。
“sqlite3 eepda.db 'insert into eledcinfo values”這個語句就可實現把一條記錄插入到elecinfo表中,其它記錄也可以用相同方法導入(見圖3)。
圖3 電學資料數據存儲過程
在電氣工程師PDA中對數據的操作主要通過SQLite中提供的各種庫函數來實現,包括sqlite3-open, sqlite3-exec, sqlite3-snprintf、sqlite3-close等。其中需要說明的是語句sqlite3-snprintf(sizeof(zSq12), zSq12,\"insert into elecinfo values (' %q', ' %q', ' %q') \",在應用程序中對漢字的處理過程中顯示為亂碼,經調試發現,將漢字轉換為GB2312格式就可正確顯示,所以在插入數據的SQL語句中應該用‘%q’進行格式轉換[5]。
系統主窗口加載時,需要在主窗口過程函數的MSG-CREATE消息代碼中添加數據初始化代碼,如應用sqlite3-open(eepda.db,&db)函數打開數據庫等。
52 電氣技術資料查詢模塊中數據庫查詢設計
在進行電氣技術資料查詢時,首先從組合框中選擇資料類型,然后選擇資料標題,比如要查詢“模糊控制”分類下的標題為“模糊化”的資料內容,用戶要從“資料分類”組合框中選擇類型“模糊控制”,在資料標題組合框中選擇標題“模糊化”,單擊“查詢”按鈕就可以進行查詢了,查詢結果顯示在多行編輯器中,當文本較長時,用戶可以利用滾動條來閱讀資料(見圖4)。
圖4 數據庫處理過程
電氣技術資料查詢對話框加載時,在對話框窗口過程函數的MSG-INITDIALOG即對話框初始化事件中調用sqlite相關的API函數對電氣技術資料查詢模塊中的數據庫表進行初始化,并將數據庫中的所有的電氣資料類型從數據庫中檢索出來,檢索的條件由SQL語句決定:
select distinct type from elecinfo
這個SQL語句從電氣資料表elecinfo中查詢所有的資料分類,distinct參數用于返回唯一不同的值,以保證查詢結果中的資料沒有重復。
如果數據庫查詢成功,則將查詢出來的所有電氣資料分類填充到組合框控件IDC-TYPE中,通過SendDlgItemMessage函數向窗口中的該列表框控件發送一個CB-INSERTSTRING消息,該消息用來向列表框中插入新條目。
最后,釋放SQLite的查詢結果,并向控件IDC-TYPE發送消息CB-SETCURSEL,讓組合框的當前選項為查詢到的第一條數據[6],組合框數據填充設計如圖5所示。
圖5 組合框數據填充過程
資料標題組合框的填充過程與資料分類組合框一樣。當用戶選擇一個資料分類后,觸發資料標題組合框的nc=CBN-SELCHANGED事件,執行select語句查詢出該分類下所有資料標題,顯示在資料標題組合框中,供用戶選擇。用戶選擇標題后,單擊查詢按鈕,觸發查詢按鈕的單擊事件,即BN-CLICKED,在MiniGUI程序代碼中添加查詢按鈕的單擊事件代碼,并加入select info from elecinfo查詢語句,如果找到匹配的記錄,則資料內容顯示在多行編輯框中,否則返回-1,最后系統調用SetWindowText函數來顯示查詢結果。
6 結束語
通過移植嵌入式Linux操作系統和嵌入式SQLite數據庫進行電氣工程師PDA的應用軟件設計,已在基于嵌入式微處理器S3C2440的開發平臺上調試通過,大大加快了程序開發進程和項目進度。
參考文獻:
[1] C M WU,C W SU.Design of a PDA-based Asthma Peak Flow Monitor System,13th International Conference on Biomedical Engineering[J].IFMBE Proceedings, 2009(23):501-504.
[2] ICK HOON JANG, CHONGg HEUN KIM, NAM CHUL KIM. Region Analysis of Business Card Images Acquired in PDA Using DCT and Information Pixel Density[J].Lecture Notes in Computer Science, Advanced Concepts for Intelligent Vision Systems,2005 (37):243-251.
[3] ACK GANSSLE.The Art of Programming Embedded Systems [M]. Beijing: Posts & Telecom Press,2009:122-136.
[4] 李敬兆,郝偉,鄭禹. 嵌入式系統在新型礦用充電機中的應用[J].煤礦機電,2007(3): 46-49.
[5] ROGERSPRESSMAN.Software Engineering A Practitioner’s Approach(Six Edition)[M].北京:機械工業出版社,2007:55-58.
[6] 張斌,羅桂娥.MiniGUI連接SQLite數據庫的編程實現[J].微計算機信息,2008,24 (9):138-140.
(責任編輯:何學華,吳曉紅)