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