王明燈,蘇凱雄
摘? 要: 為了解決目前漁業供需信息實時性不高的難題,使供需信息能通過漁業信息服務平臺實現統一的信息收集、整合和發布,提出了一種基于北斗短報文的漁業交易信息服務應用的設計方案。該方案采用基于北斗的安卓船載終端,利用北斗一代的短報文技術實現實時供貨量信息的發送,經由北斗地面服務站和Internet將信息數據傳送到漁業交易信息服務中心的Web服務器。服務器通過對信息的處理和對用戶需求的響應,提升漁業市場的運作效率。
關鍵詞: 北斗短報文; 漁業交易; 信息服務; 安卓; Web
中圖分類號: TN927+.2?34??????????????????? 文獻標識碼: A??????????????????????? 文章編號: 1004?373X(2014)23?0017?04
Abstract: In order to solve the problems about low real?time efficiency of the supply and demand of fishery information interaction, the design project of the fishery information service platform based on Beidou short message is proposed to realize unified information collection, integration and release of the supply and demand information. The Android ship terminal based on Beidou is adopted in this scheme to deliver the real?time supply information by Beidou short message technology. The fisheries trading information is transmit to the Web server of the fisheries trading information service center through Beidou ground stations and the Internet. The server processes the information and responds the needs of users, so as to promote the operation efficiency of fishery market.
Keywords: Beidou short message; fishery trading; information service; Android; Web
0? 引? 言
隨著近幾年北斗產業的迅速崛起,基于北斗系統的行業應用層出不窮。北斗一代的雙向短報文通信技術作為北斗系統區別于國外其他導航系統的核心優勢,漸漸成為遠洋數據通信的首選通信方式[1]。
目前,我國的漁業市場信息化程度還有待提高,漁業市場信息服務時效性不強,先進的信息技術并未在漁業生產過程中得到充分應用[2]。為了解決目前漁業的供需信息實時性不高的難題,結合基于北斗、GPS的船載終端在漁船安全救助系統的應用趨勢,本文擬提出一種基于北斗短報文的漁業交易信息服務應用的設計方案。該方案采用基于安卓的北斗船載終端,利用北斗一代的短報文技術實現實時供貨量信息、需求信息、預定交易等信息的交互,經由北斗地面服務站和Internet將信息數據傳送到漁業交易信息服務中心的Web服務器,服務器實時地處理信息,響應用戶的需求,較大程度上促進了供需信息的交互,有效提升了漁業市場的運作效率。
1 總體框架
本方案采用了圖1所示的基于北斗短報文的漁業交易信息服務的總體框架。系統主要利用北斗一代短報文通信和多種網絡通信手段相結合,提供現代化漁業供需信息交互的增值信息服務:實現漁民用戶實時的供貨信息發布和采購用戶的需求信息發布,實現漁業交易信息服務中心對交易信息的收集、整合、更新、存儲、搜索和推薦。通過該系統,采購用戶可實時獲得漁業供貨及對應的價格信息,通過預定、在線支付或線下支付的方式完成,使交易市場能高效地運作。該系統由北斗衛星導航系統、搭載在漁船上的船載北斗通信終端、北斗地面運營中心、漁業交易信息服務中心、連通Internet的網絡設備以及各個對應的通信鏈路組成。
1.1? 船載北斗短報文通信簡述
北斗衛星導航系統是我國自主建設、獨立運行,并與世界其他衛星導航系統兼容共用的全球衛星導航系統。北斗短報文通信是指北斗終端和北斗衛星或北斗地面服務站之間能夠直接通過衛星信號進行雙向的信息傳遞。這意味著更為廣域的信息傳遞,比如海洋、沙漠、地震災區等普通移動通信信號不能覆蓋到,北斗終端就可以通過短報文進行緊急通信[3]。
<;E:\LIHUI\12月\12.4\現代電子技術201423\Image\04t1.tif>;
圖1 基于北斗短報文的漁業交易信息服務的總體框架
本方案采用基于安卓的船載北斗通信終端進行遠程信息交互。利用北斗的短報文通信功能,漁船用戶向漁業交易信息服務中心發送貨物的多個狀態信息,經由漁業交易信息服務中心接收來自采購方的交互信息,實現了實時的貨物信息提交、貨物預定功能和交易雙方的信息交互。
1.2? 漁業交易信息服務簡述
漁業交易信息服務中心配置于海洋漁業管理服務部門,負責所屬用戶的入網注冊、漁業交易信息服務、服務計費等,具備與北斗運營地面站、移動通信網絡、Internet網絡相連接的接口。該方案的用戶主要是漁業交易買方和賣方,買方用戶通過手機或PC端經由因特網、漁業交易信息中心獲取信息服務。漁業交易信息服務中心由Web服務器、移動客戶端服務器、關系型數據庫構成,負責交易信息的收集、整合、更新、存儲、搜索和推薦,通過互聯網或手機客戶端實現實時的漁業有關產品的電子交易。
通過針對性地考察和分析漁業交易市場及其業務邏輯,結合目前典型的電子商務交易平臺設計,本課題設計的系統功能要求如下:
(1) 完善的業務數據信息管理;
(2) Web端和移動手機客戶端擁有美觀友好的操作界面,能保證易用性;
(3) 數據庫安全,防止惡意SQL注入;
(4) 具備不同種類的模糊查詢,可按不同種類查看海鮮的供需信息;
(5) 海產品銷售排行和評價系統;
(6) 海產品物流跟蹤插件,如提供物流公司及訂單號;
(7) 系統的可擴展性、容錯性、穩定性。
2 關鍵軟件處理流程
本文著重討論漁業交易應用下的北斗短報文和信息服務管理的設計與實現。
2.1 船載終端上北斗短報文的設計與實現
2.1.1? 報文數據定義
北斗短報文遵循北斗用戶機用戶接口協議格式,指令以$開頭,以ASCII編碼。短報文的發送和接收在協議中指令頭被分別解析為TXSQ和TXXX,長度、用戶地址、信息內容及校驗和所占數據空間如表1所示。
通過北斗一代的短報文通信功能,船載終端可以實現如下功能:漁市行情、漁業交易信息,緊急報警,漁船分組管理,響應控制中心的控制指令,向監管中心發送位置信息報告,作業漁船對外的通信,為漁船提供天氣預報、潮汐情況、臺風警報等。
為了規范短報文信息參數的注入和提取,需定義短報文中變長數據段的參數格式。一條短報文的“電文內容”數據段需要的參數為條目ID、海鮮名稱、報價、時間戳、聯系方式、銷售狀態。條目ID指一條供貨/采購信息,使用ID方式確定其惟一性,通過該條目中時間戳和聯系方式的合并哈希碼算法來惟一確定該ID,有利于大數據條目搜索;海鮮名稱是填寫具體的貨物名稱;報價是漁船用戶對于具體貨物相應的報價,以元/斤作為統一單位;時間戳是指該條目的更新時間,可以從北斗的RMC衛星參數信息指令中獲取UTC參數段提取日期和時間,對該時間戳進行數據填充;聯系方式指漁船用戶或采購方用戶的手機號碼;銷售狀態通常有3種,分別是待售、已預定、已售出,用來實時更新服務器的數據庫,為雙方用戶提供實時的狀態信息。需求的電文內容數據段大體類似于供貨的內容,不再贅述。供需電文內容格式示例如表2,表3所示。
2.1.2? 短報文通信軟件處理流程
短報文的信息處理分為兩部分:發送和接收。在發送部分,通過NewMessageActivity活動定義新建信息界面,此時會彈出彈窗,要求填入海鮮名稱、報價、銷售狀態、指定服務中心地址等參數作為供貨電文內容字段。指定服務中心地址的填寫有兩種方式:一是指該漁船附近的指揮機地址,通過附近的北斗指揮機轉發短報文到服務中心;二是指服務中心接收機地址,直接與漁船終端進行通信。
電文內容較長時,采用半字節數據壓縮算法。該算法是在一種原半字節壓縮算法的基礎上改進的算法,壓縮比達50%,在一定程度上緩解了北斗地面運營服務站傳輸數據的壓力。此時各字段已經獲取到相應數據,通過Array數組將其組裝成符合協議的通信申請指令。一般來說,海鮮名稱繁多,若按逐條指令發送信息,不僅服務成本增加,而且不利于搜索管理。因此,通常采用一個條目ID下,實例化HashMap對象組裝多項海鮮名稱及其對應的報價,然后才是時間戳及后面的數據段,以此種方法封裝電文內容,并壓縮較長的電文內容,較好地解決了同一時間下分次發送信息的窘境。
接收部分通過判斷指令頭,進行循環冗余校驗,接收并解析通信信息指令。對電文內容字段進行半字節解壓縮算法處理,提取所需參數。這里采用MVC開發模式進行數據處理。開啟AsyncTask,判斷信息的時間戳間隔是否滿足更新條件,默認每1 min更新一次數據。在AsyncTask的doInBackground()方法下,獲取HashMap的數據對象,在onPostExecute()方法下加載數據到SimpleAdapter,與SQLite的數據做匹配。若條目是新的,則調用updateSQLite;若條目已存在,則舍棄該信息。在ReceiveBoxActivity中通過SimpleAdapter適配器加載數據,以ListView的形式顯示已接收到的條目信息。短報文軟件處理流程如圖2所示。
2.2 漁業交易信息服務的信息管理設計
本文設計的漁業交易信息服務平臺可通過電腦網頁或Android手機客戶端訪問,后面可根據實際需要推出iOS、WPhone的客戶端。Web瀏覽的網頁發布采用動態的HTML網頁方式,數據庫的數據采集主要通過調用北斗地面運營中心提供的數據接口,讀取來自漁船用戶的短報文并將報文信息轉換為特定的數據列表項存入數據庫。服務器后臺是基于PHP+APache+mysql的、采用B/S模式的Web應用系統。通常,C/S模式適合在局域網內用戶不多的情況下使用,而B/S模式適合輕客戶端設計,具有開發維護方便、管理成本低、跨平臺訪問等優勢,降低了服務器與訪問者之間的耦合,使訪問方式更為靈活。服務平臺總體框架如圖3所示。
<;E:\LIHUI\12月\12.4\現代電子技術201423\Image\04t2.tif>;
圖2 北斗短報文軟件處理流程
<;E:\LIHUI\12月\12.4\現代電子技術201423\Image\04t3.tif>;
圖3 漁業交易信息服務平臺的總體框架
該框架包括服務層、業務邏輯層和數據層三層結構。服務層由基于Server的動態HTML網頁實現,除了用戶注冊、服務計費功能,還負責為用戶提供漁業交易供需信息顯示、預訂和搜索,如海鮮名稱搜索,區域模式搜索等功能。業務邏輯層分為兩類,一是根據用戶申請,經Apache Server執行MySQL程序操作數據庫,返回所需數據;二是監聽來自北斗地面運營中心的數據,負責將獲得的供需信息數據進行收集、整合分類、更新、搜索。數據層負責信息數據的存儲,包括供貨數據庫、需求數據庫、歷史數據庫、注冊用戶管理。注冊用戶管理及供貨數據庫E?R圖結構如圖4所示。
服務層負責向用戶呈現實時的漁業供需信息,其開發方式與購物網站大同小異;業務邏輯層與數據層的交互是該平臺的設計核心;數據層采用比較成熟的MySQL數據庫,存儲了供需雙方的用戶信息表、漁業供需信息表,在PHP中使用MySQL提供的API對其進行操作。
<;E:\LIHUI\12月\12.4\現代電子技術201423\Image\04t4.tif>;
圖4 注冊用戶管理及供貨數據庫E?R圖結構
首先,使用mysql_connect 函數對數據庫進行連接,其函數原型為:resource mysql_connect ( [string server [, string username [, string password [,bool new_link [,int client_flags]]]]]),該函數參數Server指出MySQL服務器的地址,通常是本地服務器和遠程服務器,用字符串表示。其次,選擇數據庫表。本平臺包括4個數據庫:供貨數據庫、需求數據庫、歷史數據庫、注冊用戶管理。若買家用戶需要獲取當前的供貨數據,Server將根據請求,執行mysql_select_db()函數以激活供貨數據庫SupplyInfo.db,其函數原型為:bool mysql_select_db(string database_name [,resource link_identifier]),然后基于該數據庫進行后續的查詢操作,查詢函數的原型為:resource mysql_query(string query [,resource link_identifier])。當返回響應數據后,考慮數據庫的安全性,需要使用mysql_close函數關閉被打開的數據庫連接。因此,漁業供貨信息的收集就是通過對供貨數據庫中相應的數據表進行寫入操作。在寫入前通過區域分類算法(switch)將供貨信息按地理區域進行分類,分別寫入區域數據表,并通過字符串匹配算法按海鮮名稱進行分類,實現對信息的整合分類。同樣地,需求信息的收集也是數據表寫入的過程。漁業信息的查詢則是先根據用戶提交的請求,選擇相應的數據庫表進行遍歷查詢,將匹配的信息條目顯示出來。通過對數據表條目的修改和刪除,實現對供需信息的修改和刪除。由于該平臺涉及到大規模數據查詢,為了避免普通查找算法中二叉查找樹結構由于樹的深度過大而造成磁盤I/O讀寫過于頻繁,出于對系統性能的優化,采用多叉樹結構的多路查找樹算法。
為了滿足用戶對供需信息的實時性要求,數據庫的實時更新是很有必要的。平臺的服務器調用北斗地面運營中心提供的數據接口進行通信,為了提高數據庫的安全性,應該定期為數據庫進行維護與備份,保證穩定地提供實時的供需信息。系統數據庫的備份采用一周進行一次系統備份,3天進行一次直接備份。對這些信息的歷史記錄通常是在數據庫中設定默認時間周期,將72 h以上的歷史數據寫入History_SupplyInfo的數據表中,實現對信息的歷史存儲。
3 系統測試結果
為驗證本方案的可行性,可通過Android客戶端訪問漁業交易信息服務平臺,對實時的漁業供應信息進行查詢,并對心儀的商品下訂單。系統測試結果如圖5所示。圖5(a)是對加州鱸和黑魚進行魚價查詢,在Android客戶端中根據界面提示,依次點擊供應信息、魚價查詢,在搜索條件編輯框輸入“加州鱸 黑魚”,點擊搜索,將顯示各賣家提供的加州鱸、黑魚的產品信息列表,繼續點擊列表項即可查看其詳細信息。圖5(b)是用戶的訂單列表,繼續點擊列表項即可查看其詳細信息。
<;E:\LIHUI\12月\12.4\現代電子技術201423\Image\04t5.tif>;
圖5 Android客戶端訪問服務平臺的測試效果
為了測試本方案的實時性能,通過12臺北斗一體機定時提交既定信息來模擬船上用戶提交供貨信息,然后不斷刷新Android客戶端的最新供應信息界面。通過反復多次的實驗,在新信息發布之后,客戶端接收并顯示新信息的平均時延是6 s。造成時延的原因有多方面,一方面是北斗通信鏈路和移動互聯網通信鏈路本身通信時長限制,另一方面是客戶端使用MVC框架,刷新數據需要零點幾秒。不同于軍事、電力等對實時性的高精度要求,從漁業信息實時性的可容忍度來講,該平臺的信息更新時延是可以忽略的,因此可認為本方案能為用戶提供實時的漁業供需信息。
4 結? 語
本文結合漁業交易信息現代化的發展需求,提出了一種基于北斗短報文的漁業交易信息服務應用的設計方案。采用基于安卓的北斗船載終端,利用北斗一代的短報文、Web服務器、MySQL數據庫管理、Android應用軟件等技術,實現實時供貨量信息、需求信息、預定交易等信息的交互。測試表明,本設計方案具備可行性,能實現供需信息的收集、整合、分類、搜索查詢等功能,基本滿足雙方用戶的需求。相對于現階段漁業交易信息交互通常需要數小時的時差,本方案數秒的時延基本可以忽略,即平臺具有良好的實時性。因此,可基于本方案開發一套完善的現代化漁業交易信息服務平臺,能較大地促進漁業信息交互,有效提升漁業市場的運作效率,對漁業現代信息化的發展有重要意義。
參考文獻
[1] 趙學洋,李海紅.船用北斗/GPS雙星座導航體系構建的探討[J].航海技術,2013(2):39?41.
[2] 潘興蕾,于文明,呂俊霖.新型漁業信息服務模式的探索與構建[J].農業圖書情報學刊,2013(9):182?184.
[3] 應士君,王坤,劉衛,等.基于北斗二代系統的船載定位終端[J].上海海事大學學報,2012(3):1?4.
[4] 王同合,岳春生,門葆紅,等.一種嵌入式北斗導航終端定位數據快速存取方法[C]//第三屆中國衛星導航學術年會電子文集—S07北斗/GNSS用戶終端技術.廣州:第三屆中國衛星導航學術年會,2012:35?39.
[5] GEER D. Eclipse becomes the dominant Java IDE [J]. Compu?ter, 2005; 38: 16?18.
[6] ABLESON W F. COLLINS C, SEN R. Unlocking Android: a developer′s guide [M]. Greenwich:Manning Publications Co, 2010.
[7] 王石,楊英娜.精通PHP+MySQL應用開發[M].北京:人民郵電出版社,2006.
[8] PAUL H.精通HTML語義、標準和樣式[M].楊明軍,譯.北京:人民郵電出版社,2008.
[9] 王立華,孫璐,孫英澤,等.漁業科學數據共享平臺建設研究[J].中國海洋大學學報:自然科學版,2010(S1):201?206.
[10] MELONI J C. PHP, MySQL和Apache編程導學[M].王洪大,李軍,譯.北京:機械工業出版社,2008.
圖2 北斗短報文軟件處理流程
<;E:\LIHUI\12月\12.4\現代電子技術201423\Image\04t3.tif>;
圖3 漁業交易信息服務平臺的總體框架
該框架包括服務層、業務邏輯層和數據層三層結構。服務層由基于Server的動態HTML網頁實現,除了用戶注冊、服務計費功能,還負責為用戶提供漁業交易供需信息顯示、預訂和搜索,如海鮮名稱搜索,區域模式搜索等功能。業務邏輯層分為兩類,一是根據用戶申請,經Apache Server執行MySQL程序操作數據庫,返回所需數據;二是監聽來自北斗地面運營中心的數據,負責將獲得的供需信息數據進行收集、整合分類、更新、搜索。數據層負責信息數據的存儲,包括供貨數據庫、需求數據庫、歷史數據庫、注冊用戶管理。注冊用戶管理及供貨數據庫E?R圖結構如圖4所示。
服務層負責向用戶呈現實時的漁業供需信息,其開發方式與購物網站大同小異;業務邏輯層與數據層的交互是該平臺的設計核心;數據層采用比較成熟的MySQL數據庫,存儲了供需雙方的用戶信息表、漁業供需信息表,在PHP中使用MySQL提供的API對其進行操作。
<;E:\LIHUI\12月\12.4\現代電子技術201423\Image\04t4.tif>;
圖4 注冊用戶管理及供貨數據庫E?R圖結構
首先,使用mysql_connect 函數對數據庫進行連接,其函數原型為:resource mysql_connect ( [string server [, string username [, string password [,bool new_link [,int client_flags]]]]]),該函數參數Server指出MySQL服務器的地址,通常是本地服務器和遠程服務器,用字符串表示。其次,選擇數據庫表。本平臺包括4個數據庫:供貨數據庫、需求數據庫、歷史數據庫、注冊用戶管理。若買家用戶需要獲取當前的供貨數據,Server將根據請求,執行mysql_select_db()函數以激活供貨數據庫SupplyInfo.db,其函數原型為:bool mysql_select_db(string database_name [,resource link_identifier]),然后基于該數據庫進行后續的查詢操作,查詢函數的原型為:resource mysql_query(string query [,resource link_identifier])。當返回響應數據后,考慮數據庫的安全性,需要使用mysql_close函數關閉被打開的數據庫連接。因此,漁業供貨信息的收集就是通過對供貨數據庫中相應的數據表進行寫入操作。在寫入前通過區域分類算法(switch)將供貨信息按地理區域進行分類,分別寫入區域數據表,并通過字符串匹配算法按海鮮名稱進行分類,實現對信息的整合分類。同樣地,需求信息的收集也是數據表寫入的過程。漁業信息的查詢則是先根據用戶提交的請求,選擇相應的數據庫表進行遍歷查詢,將匹配的信息條目顯示出來。通過對數據表條目的修改和刪除,實現對供需信息的修改和刪除。由于該平臺涉及到大規模數據查詢,為了避免普通查找算法中二叉查找樹結構由于樹的深度過大而造成磁盤I/O讀寫過于頻繁,出于對系統性能的優化,采用多叉樹結構的多路查找樹算法。
為了滿足用戶對供需信息的實時性要求,數據庫的實時更新是很有必要的。平臺的服務器調用北斗地面運營中心提供的數據接口進行通信,為了提高數據庫的安全性,應該定期為數據庫進行維護與備份,保證穩定地提供實時的供需信息。系統數據庫的備份采用一周進行一次系統備份,3天進行一次直接備份。對這些信息的歷史記錄通常是在數據庫中設定默認時間周期,將72 h以上的歷史數據寫入History_SupplyInfo的數據表中,實現對信息的歷史存儲。
3 系統測試結果
為驗證本方案的可行性,可通過Android客戶端訪問漁業交易信息服務平臺,對實時的漁業供應信息進行查詢,并對心儀的商品下訂單。系統測試結果如圖5所示。圖5(a)是對加州鱸和黑魚進行魚價查詢,在Android客戶端中根據界面提示,依次點擊供應信息、魚價查詢,在搜索條件編輯框輸入“加州鱸 黑魚”,點擊搜索,將顯示各賣家提供的加州鱸、黑魚的產品信息列表,繼續點擊列表項即可查看其詳細信息。圖5(b)是用戶的訂單列表,繼續點擊列表項即可查看其詳細信息。
<;E:\LIHUI\12月\12.4\現代電子技術201423\Image\04t5.tif>;
圖5 Android客戶端訪問服務平臺的測試效果
為了測試本方案的實時性能,通過12臺北斗一體機定時提交既定信息來模擬船上用戶提交供貨信息,然后不斷刷新Android客戶端的最新供應信息界面。通過反復多次的實驗,在新信息發布之后,客戶端接收并顯示新信息的平均時延是6 s。造成時延的原因有多方面,一方面是北斗通信鏈路和移動互聯網通信鏈路本身通信時長限制,另一方面是客戶端使用MVC框架,刷新數據需要零點幾秒。不同于軍事、電力等對實時性的高精度要求,從漁業信息實時性的可容忍度來講,該平臺的信息更新時延是可以忽略的,因此可認為本方案能為用戶提供實時的漁業供需信息。
4 結? 語
本文結合漁業交易信息現代化的發展需求,提出了一種基于北斗短報文的漁業交易信息服務應用的設計方案。采用基于安卓的北斗船載終端,利用北斗一代的短報文、Web服務器、MySQL數據庫管理、Android應用軟件等技術,實現實時供貨量信息、需求信息、預定交易等信息的交互。測試表明,本設計方案具備可行性,能實現供需信息的收集、整合、分類、搜索查詢等功能,基本滿足雙方用戶的需求。相對于現階段漁業交易信息交互通常需要數小時的時差,本方案數秒的時延基本可以忽略,即平臺具有良好的實時性。因此,可基于本方案開發一套完善的現代化漁業交易信息服務平臺,能較大地促進漁業信息交互,有效提升漁業市場的運作效率,對漁業現代信息化的發展有重要意義。
參考文獻
[1] 趙學洋,李海紅.船用北斗/GPS雙星座導航體系構建的探討[J].航海技術,2013(2):39?41.
[2] 潘興蕾,于文明,呂俊霖.新型漁業信息服務模式的探索與構建[J].農業圖書情報學刊,2013(9):182?184.
[3] 應士君,王坤,劉衛,等.基于北斗二代系統的船載定位終端[J].上海海事大學學報,2012(3):1?4.
[4] 王同合,岳春生,門葆紅,等.一種嵌入式北斗導航終端定位數據快速存取方法[C]//第三屆中國衛星導航學術年會電子文集—S07北斗/GNSS用戶終端技術.廣州:第三屆中國衛星導航學術年會,2012:35?39.
[5] GEER D. Eclipse becomes the dominant Java IDE [J]. Compu?ter, 2005; 38: 16?18.
[6] ABLESON W F. COLLINS C, SEN R. Unlocking Android: a developer′s guide [M]. Greenwich:Manning Publications Co, 2010.
[7] 王石,楊英娜.精通PHP+MySQL應用開發[M].北京:人民郵電出版社,2006.
[8] PAUL H.精通HTML語義、標準和樣式[M].楊明軍,譯.北京:人民郵電出版社,2008.
[9] 王立華,孫璐,孫英澤,等.漁業科學數據共享平臺建設研究[J].中國海洋大學學報:自然科學版,2010(S1):201?206.
[10] MELONI J C. PHP, MySQL和Apache編程導學[M].王洪大,李軍,譯.北京:機械工業出版社,2008.
圖2 北斗短報文軟件處理流程
<;E:\LIHUI\12月\12.4\現代電子技術201423\Image\04t3.tif>;
圖3 漁業交易信息服務平臺的總體框架
該框架包括服務層、業務邏輯層和數據層三層結構。服務層由基于Server的動態HTML網頁實現,除了用戶注冊、服務計費功能,還負責為用戶提供漁業交易供需信息顯示、預訂和搜索,如海鮮名稱搜索,區域模式搜索等功能。業務邏輯層分為兩類,一是根據用戶申請,經Apache Server執行MySQL程序操作數據庫,返回所需數據;二是監聽來自北斗地面運營中心的數據,負責將獲得的供需信息數據進行收集、整合分類、更新、搜索。數據層負責信息數據的存儲,包括供貨數據庫、需求數據庫、歷史數據庫、注冊用戶管理。注冊用戶管理及供貨數據庫E?R圖結構如圖4所示。
服務層負責向用戶呈現實時的漁業供需信息,其開發方式與購物網站大同小異;業務邏輯層與數據層的交互是該平臺的設計核心;數據層采用比較成熟的MySQL數據庫,存儲了供需雙方的用戶信息表、漁業供需信息表,在PHP中使用MySQL提供的API對其進行操作。
<;E:\LIHUI\12月\12.4\現代電子技術201423\Image\04t4.tif>;
圖4 注冊用戶管理及供貨數據庫E?R圖結構
首先,使用mysql_connect 函數對數據庫進行連接,其函數原型為:resource mysql_connect ( [string server [, string username [, string password [,bool new_link [,int client_flags]]]]]),該函數參數Server指出MySQL服務器的地址,通常是本地服務器和遠程服務器,用字符串表示。其次,選擇數據庫表。本平臺包括4個數據庫:供貨數據庫、需求數據庫、歷史數據庫、注冊用戶管理。若買家用戶需要獲取當前的供貨數據,Server將根據請求,執行mysql_select_db()函數以激活供貨數據庫SupplyInfo.db,其函數原型為:bool mysql_select_db(string database_name [,resource link_identifier]),然后基于該數據庫進行后續的查詢操作,查詢函數的原型為:resource mysql_query(string query [,resource link_identifier])。當返回響應數據后,考慮數據庫的安全性,需要使用mysql_close函數關閉被打開的數據庫連接。因此,漁業供貨信息的收集就是通過對供貨數據庫中相應的數據表進行寫入操作。在寫入前通過區域分類算法(switch)將供貨信息按地理區域進行分類,分別寫入區域數據表,并通過字符串匹配算法按海鮮名稱進行分類,實現對信息的整合分類。同樣地,需求信息的收集也是數據表寫入的過程。漁業信息的查詢則是先根據用戶提交的請求,選擇相應的數據庫表進行遍歷查詢,將匹配的信息條目顯示出來。通過對數據表條目的修改和刪除,實現對供需信息的修改和刪除。由于該平臺涉及到大規模數據查詢,為了避免普通查找算法中二叉查找樹結構由于樹的深度過大而造成磁盤I/O讀寫過于頻繁,出于對系統性能的優化,采用多叉樹結構的多路查找樹算法。
為了滿足用戶對供需信息的實時性要求,數據庫的實時更新是很有必要的。平臺的服務器調用北斗地面運營中心提供的數據接口進行通信,為了提高數據庫的安全性,應該定期為數據庫進行維護與備份,保證穩定地提供實時的供需信息。系統數據庫的備份采用一周進行一次系統備份,3天進行一次直接備份。對這些信息的歷史記錄通常是在數據庫中設定默認時間周期,將72 h以上的歷史數據寫入History_SupplyInfo的數據表中,實現對信息的歷史存儲。
3 系統測試結果
為驗證本方案的可行性,可通過Android客戶端訪問漁業交易信息服務平臺,對實時的漁業供應信息進行查詢,并對心儀的商品下訂單。系統測試結果如圖5所示。圖5(a)是對加州鱸和黑魚進行魚價查詢,在Android客戶端中根據界面提示,依次點擊供應信息、魚價查詢,在搜索條件編輯框輸入“加州鱸 黑魚”,點擊搜索,將顯示各賣家提供的加州鱸、黑魚的產品信息列表,繼續點擊列表項即可查看其詳細信息。圖5(b)是用戶的訂單列表,繼續點擊列表項即可查看其詳細信息。
<;E:\LIHUI\12月\12.4\現代電子技術201423\Image\04t5.tif>;
圖5 Android客戶端訪問服務平臺的測試效果
為了測試本方案的實時性能,通過12臺北斗一體機定時提交既定信息來模擬船上用戶提交供貨信息,然后不斷刷新Android客戶端的最新供應信息界面。通過反復多次的實驗,在新信息發布之后,客戶端接收并顯示新信息的平均時延是6 s。造成時延的原因有多方面,一方面是北斗通信鏈路和移動互聯網通信鏈路本身通信時長限制,另一方面是客戶端使用MVC框架,刷新數據需要零點幾秒。不同于軍事、電力等對實時性的高精度要求,從漁業信息實時性的可容忍度來講,該平臺的信息更新時延是可以忽略的,因此可認為本方案能為用戶提供實時的漁業供需信息。
4 結? 語
本文結合漁業交易信息現代化的發展需求,提出了一種基于北斗短報文的漁業交易信息服務應用的設計方案。采用基于安卓的北斗船載終端,利用北斗一代的短報文、Web服務器、MySQL數據庫管理、Android應用軟件等技術,實現實時供貨量信息、需求信息、預定交易等信息的交互。測試表明,本設計方案具備可行性,能實現供需信息的收集、整合、分類、搜索查詢等功能,基本滿足雙方用戶的需求。相對于現階段漁業交易信息交互通常需要數小時的時差,本方案數秒的時延基本可以忽略,即平臺具有良好的實時性。因此,可基于本方案開發一套完善的現代化漁業交易信息服務平臺,能較大地促進漁業信息交互,有效提升漁業市場的運作效率,對漁業現代信息化的發展有重要意義。
參考文獻
[1] 趙學洋,李海紅.船用北斗/GPS雙星座導航體系構建的探討[J].航海技術,2013(2):39?41.
[2] 潘興蕾,于文明,呂俊霖.新型漁業信息服務模式的探索與構建[J].農業圖書情報學刊,2013(9):182?184.
[3] 應士君,王坤,劉衛,等.基于北斗二代系統的船載定位終端[J].上海海事大學學報,2012(3):1?4.
[4] 王同合,岳春生,門葆紅,等.一種嵌入式北斗導航終端定位數據快速存取方法[C]//第三屆中國衛星導航學術年會電子文集—S07北斗/GNSS用戶終端技術.廣州:第三屆中國衛星導航學術年會,2012:35?39.
[5] GEER D. Eclipse becomes the dominant Java IDE [J]. Compu?ter, 2005; 38: 16?18.
[6] ABLESON W F. COLLINS C, SEN R. Unlocking Android: a developer′s guide [M]. Greenwich:Manning Publications Co, 2010.
[7] 王石,楊英娜.精通PHP+MySQL應用開發[M].北京:人民郵電出版社,2006.
[8] PAUL H.精通HTML語義、標準和樣式[M].楊明軍,譯.北京:人民郵電出版社,2008.
[9] 王立華,孫璐,孫英澤,等.漁業科學數據共享平臺建設研究[J].中國海洋大學學報:自然科學版,2010(S1):201?206.
[10] MELONI J C. PHP, MySQL和Apache編程導學[M].王洪大,李軍,譯.北京:機械工業出版社,2008.