單維鋒,李 軍
(防災(zāi)科技學(xué)院,河北三河 065201)
地震前兆觀測設(shè)備模擬通信軟件關(guān)鍵技術(shù)研究*
單維鋒,李 軍
(防災(zāi)科技學(xué)院,河北三河 065201)
遵循“中國數(shù)字地震觀測網(wǎng)絡(luò)技術(shù)規(guī)程”相關(guān)標(biāo)準(zhǔn),設(shè)計(jì)了一套基于 Java語言的前兆觀測設(shè)備模擬通信軟件。介紹了通信指令原語、數(shù)據(jù)包格式定義以及模擬通信軟件的總體設(shè)計(jì),詳述了模擬通信軟件中的幾個(gè)關(guān)鍵技術(shù),包括如何同時(shí)模擬多個(gè)前兆設(shè)備,應(yīng)用觀察者設(shè)計(jì)模式實(shí)時(shí)更新設(shè)備狀態(tài)信息,使用套接字技術(shù)和多線程技術(shù)啟動(dòng)或停止模擬設(shè)備,通過“心跳”線確認(rèn)遠(yuǎn)端 Socket是否關(guān)閉等。該軟件可以模擬大多數(shù) “十五”前兆觀測設(shè)備的通信原語,一方面為臺(tái)站技術(shù)人員以及地震專業(yè)學(xué)生了解前兆設(shè)備的功能、通信指令、以及數(shù)據(jù)包的數(shù)據(jù)格式提供了一個(gè)模擬環(huán)境,有效地提高了教學(xué)效果和培訓(xùn)質(zhì)量,另一方面也為開發(fā)前兆設(shè)備相關(guān)軟件提供了模擬支撐環(huán)境。
前兆觀測設(shè)備;模擬通信軟件;套接字;多線程;觀察者設(shè)計(jì)模式
地震前兆臺(tái)網(wǎng)的主要任務(wù)就是獲取重力、地磁、形變、地電、流體等地球物理和地球化學(xué)觀測數(shù)據(jù),為地震預(yù)報(bào)、科學(xué)研究和社會(huì)應(yīng)用提供基礎(chǔ)數(shù)據(jù)。在地震行業(yè)領(lǐng)域,地震前兆觀測是日常獲取地震觀測信息的重要手段之一。
地震前兆觀測設(shè)備的種類很多,如數(shù)字水位儀、氣象三要素觀測儀、地電儀和相對(duì)重力儀等。各種觀測設(shè)備的觀測物理量、采樣率、數(shù)據(jù)存儲(chǔ)等方面不盡相同(中國地震局,2005)。
隨著 “十五”國家建設(shè)項(xiàng)目的推進(jìn),網(wǎng)絡(luò)化前兆儀器安裝相繼完成,全國各省級(jí)地震局的臺(tái)網(wǎng)中心甚至臺(tái)站都已經(jīng)接入互聯(lián)網(wǎng)(何案華等,2008)。為了采集、傳輸、存儲(chǔ)和管理各種前兆觀測數(shù)據(jù),各省局臺(tái)網(wǎng)中心或臺(tái)站根據(jù)現(xiàn)有設(shè)備特點(diǎn)開發(fā)了多種計(jì)算機(jī)管理系統(tǒng),以提高工作效率(牛從達(dá)等,2005)。目前,前兆觀測設(shè)備的數(shù)據(jù)匯集工作由中國地震前兆臺(tái)網(wǎng)數(shù)據(jù)管理系統(tǒng)(以下簡稱管理系統(tǒng))完成,該系統(tǒng)還負(fù)責(zé)臺(tái)站、區(qū)域中心、國家中心和學(xué)科臺(tái)網(wǎng)中心之間的數(shù)據(jù)同步交換并對(duì)地震專業(yè)用戶提供數(shù)據(jù)服務(wù)。
由于管理系統(tǒng)的高度自動(dòng)化和智能化,不利于專業(yè)人員了解設(shè)備的內(nèi)部工作原理、數(shù)據(jù)格式和通信協(xié)議。操作人員嚴(yán)重依賴于管理系統(tǒng)獲取數(shù)據(jù)或監(jiān)控設(shè)備狀態(tài)。一旦管理系統(tǒng)出現(xiàn)問題,操作人員很難找到錯(cuò)誤、手動(dòng)獲取數(shù)據(jù)、查看設(shè)備狀態(tài)或直接控制設(shè)備。
此外,在對(duì)相關(guān)技術(shù)人員培訓(xùn)、教學(xué)以及設(shè)備通信軟件開發(fā)過程中,也需要了解設(shè)備的工作原理、數(shù)據(jù)格式和通信指令等內(nèi)容。由于涉及的設(shè)備種類非常多,搭建真實(shí)的實(shí)驗(yàn)環(huán)境不僅費(fèi)用昂貴,而且還需要合適的實(shí)驗(yàn)場地。
因此,研究和開發(fā)一套前兆觀測設(shè)備模擬通信軟件(以下簡稱模擬軟件)就非常必要。模擬軟件可以模擬大多數(shù) “十五”地震前兆觀測設(shè)備,遵從 “中國數(shù)字地震觀測網(wǎng)絡(luò)技術(shù)規(guī)程——地震前兆臺(tái)網(wǎng)專用設(shè)備網(wǎng)絡(luò)通信”標(biāo)準(zhǔn)(地殼運(yùn)動(dòng)監(jiān)測工程研究中心,2005)(以下簡稱通信規(guī)程),能夠根據(jù)客戶端發(fā)送的指令,模擬不同設(shè)備產(chǎn)生相應(yīng)格式的數(shù)據(jù)包并發(fā)送給客戶端。利用模擬軟件,可以模擬多種前兆設(shè)備的通信指令原語、返回相應(yīng)數(shù)據(jù)包,有利于教師、受訓(xùn)人員和學(xué)生了解設(shè)備的通信原理、通信指令以及數(shù)據(jù)格式等信息,通過模擬軟件有效地避免了對(duì)實(shí)際觀測設(shè)備的頻繁訪問,降低了對(duì)正常運(yùn)行設(shè)備的干擾。
模擬軟件主要實(shí)現(xiàn)客戶端與設(shè)備端通信指令原語的模擬??蛻舳讼蛟O(shè)備端發(fā)送通信指令和相關(guān)參數(shù),設(shè)備端收到指令原語后,進(jìn)行解釋并執(zhí)行相應(yīng)動(dòng)作、返回執(zhí)行結(jié)果。指令原語主要分為數(shù)據(jù)傳輸類、設(shè)備控制類和設(shè)備監(jiān)視類。數(shù)據(jù)傳輸類原語包括獲取整體測量數(shù)據(jù)、當(dāng)前測量數(shù)據(jù)和實(shí)時(shí)測量數(shù)據(jù)等原語。設(shè)備控制類原語包括設(shè)置工作參數(shù)、設(shè)備重新啟動(dòng)等。設(shè)備監(jiān)視類原語包括獲取設(shè)備狀態(tài)信息、運(yùn)行日志、工作參數(shù)等原語(地殼運(yùn)動(dòng)監(jiān)測工程研究中心,2005)。
例如,獲取當(dāng)前測量數(shù)據(jù)通信指令原語格式定義如下:
get /length+ ID+dat+5
指令原語含義:客戶端通過指令獲取設(shè)備端最近整 5分鐘采樣的樣本,如果沒有采樣樣本,取最近的 1個(gè)樣本。
其中,“get”為命令關(guān)鍵字;“ ID”為設(shè)備標(biāo)識(shí)符,即出廠時(shí)廠家給設(shè)備分配的唯一 ID號(hào),通信規(guī)程規(guī)定命令中的 ID號(hào)必須和設(shè)備本身的 ID號(hào)完全一致,才可以執(zhí)行該命令(王秀英等,2008)。
“l(fā)ength”為指令長度字,即除指令原語固有格式外指令的字節(jié)數(shù)總和;“dat”為數(shù)據(jù)傳輸命令字;“+”為分隔符。
指令必須通過 TCP/IP協(xié)議發(fā)送,因此在發(fā)送該指令前,必須通過 81端口建立到特定設(shè)備的Socket連接,然后再發(fā)送具體命令。
當(dāng)設(shè)備接收到上述命令后,會(huì)將最新整 5分鐘采樣的樣本或最近一個(gè)樣本按如下格式打包,并通過 TCP/IP協(xié)議發(fā)回給客戶端。
$數(shù)據(jù)包信息長度 數(shù)據(jù)包內(nèi)容 ack
其中,“$”為返回信息起始符;“數(shù)據(jù)包信息長度”是指數(shù)據(jù)包的具體內(nèi)容的字節(jié)總數(shù),不含“數(shù)據(jù)包信息長度”本身和以“ ”表示的分隔符;“數(shù)據(jù)包內(nèi)容”是設(shè)備端最新整 5分鐘采樣的樣本,如果沒有采樣樣本,取最近的 1個(gè)樣本;“ ”為換行符,用于分隔各個(gè)信息;若該儀器不支持該命令,返回“$err ”字符串。
通信規(guī)程僅僅規(guī)定了各種設(shè)備必須提供的命令以及命令格式,并沒有規(guī)定各具體設(shè)備內(nèi)部數(shù)據(jù)格式。設(shè)備采樣率和測項(xiàng)不同,不同設(shè)備同一命令返回的數(shù)據(jù)也不同,如水溫儀獲取當(dāng)前測量數(shù)據(jù)指令的返回?cái)?shù)據(jù)如下:
$79
79 105601 11006 431320060705 01 01 4313 15.9684 15.9684 15.9684 15.9684 15.9684
ack
其中,79表示數(shù)據(jù)的字節(jié)數(shù);105601表示起始時(shí)間為 10點(diǎn) 56分 01秒;11006是臺(tái)站代碼;431320060705為設(shè)備 ID編號(hào);第一個(gè) 01為采樣率,表示分采;第二個(gè) 01表示通道數(shù)為 1個(gè);4313為測量分項(xiàng)代碼,即井表層水溫;15.968 4、15.968 4、15.968 4、15.968 4、15.968 4分別為最近 5個(gè)觀測數(shù)據(jù)的值。
如果是磁通門磁力儀設(shè)備,則返回的數(shù)據(jù)包含變化記錄垂直分量、變化記錄水平分量等 4個(gè)測項(xiàng)數(shù)據(jù)。
所以,在實(shí)際模擬軟件開發(fā)過程中,必須實(shí)際測試每種模擬設(shè)備的具體數(shù)據(jù)格式,有針對(duì)性地進(jìn)行模擬。
模擬軟件分設(shè)備端模擬軟件子系統(tǒng)和客戶端模擬軟件子系統(tǒng)。設(shè)備端模擬軟件子系統(tǒng)主要模擬實(shí)現(xiàn)各種前兆觀測設(shè)備接收客戶端模擬軟件發(fā)送的各種通信指令,并對(duì)指令進(jìn)行分析,進(jìn)而執(zhí)行相關(guān)指令,將運(yùn)行結(jié)果按照規(guī)定的數(shù)據(jù)包格式打包,并發(fā)送給客戶端模擬軟件??蛻舳四M軟件子系統(tǒng)主要完成連接設(shè)備端模擬軟件、發(fā)送各種通信指令原語、收到指令后解析觀測數(shù)據(jù)。模擬軟件的工作流程如圖 1所示。
當(dāng)某個(gè)具體設(shè)備啟動(dòng)后,設(shè)備一直處于偵聽狀態(tài),如果此時(shí)有客戶端發(fā)送連接請(qǐng)求,設(shè)備將產(chǎn)生一個(gè)新的工作線程用來處理與該客戶端的交互??蛻舳耸紫劝l(fā)送登錄指令,服務(wù)器端根據(jù)指令中的用戶名和密碼查找數(shù)據(jù)庫,判斷是否正確,如果用戶名和密碼都正確,則返回 “$ack ”字符串,表示登錄成功;返回 “$err ”字符串,表示失敗。登錄成功后,工作線程繼續(xù)等待接受客戶端的其他指令請(qǐng)求,并根據(jù)不同的指令,模擬執(zhí)行不同的操作,并將模擬執(zhí)行產(chǎn)生的數(shù)據(jù)按照規(guī)定的格式打包,并發(fā)送回客戶端。直至客戶端關(guān)閉連接或設(shè)備端關(guān)閉或者設(shè)備端空閑超時(shí)自動(dòng)關(guān)閉。
圖1 模擬軟件工作流程Fig.1 Workflow of simulation system
模擬軟件可以同時(shí)模擬多個(gè)設(shè)備,每個(gè)設(shè)備可以同時(shí)接受多個(gè)客戶端的連接。通過前文的分析可知,模擬設(shè)備具有一些共同的功能,如啟動(dòng)、停止、用戶登錄、獲取當(dāng)前數(shù)據(jù)、獲取配置參數(shù)、獲取運(yùn)行日志等。將這些功能封裝在一個(gè) ITen-FiveDevice的接口中。對(duì)于一些共同的操作,如登錄、啟動(dòng)、停止等功能在 TenFiveDeviceAbstract類中實(shí)現(xiàn),而大部分設(shè)備具有的不同的具體功能實(shí)現(xiàn)則由每個(gè)具體的設(shè)備類(如:DSQ、G M4、WYY等)負(fù)責(zé)進(jìn)行重載,相關(guān)類圖如圖 2所示。
圖2 模擬設(shè)備類圖Fig.2 Diagram of s imulation devices
模擬軟件為用戶提供了一個(gè)可視化操作界面,用戶可以方便的操作各種模擬設(shè)備,包括啟動(dòng)、停止、添加、刪除、修改設(shè)備等。模擬軟件啟動(dòng)時(shí),先從數(shù)據(jù)庫中加載所有的設(shè)備信息到內(nèi)存中,每個(gè)設(shè)備就是一個(gè) Device對(duì)象,所有設(shè)備組成一個(gè)鏈表結(jié)構(gòu) DeviceList。模擬設(shè)備在運(yùn)行過程中,用戶連接數(shù)、運(yùn)行狀態(tài)等信息會(huì)隨著客戶端的連接與斷開或發(fā)出的各種通信指令不同而發(fā)生變化,界面上的信息需要和各設(shè)備內(nèi)存結(jié)構(gòu)中的信息保持一致。在此,采用觀察者設(shè)計(jì)模式,使界面上的設(shè)備狀態(tài)和內(nèi)存中的設(shè)備對(duì)象狀態(tài)保持一致。觀察者設(shè)計(jì)模式的工作原理是讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽某個(gè)主題對(duì)象(被觀察者),當(dāng)這個(gè)主題對(duì)象的狀態(tài)發(fā)生變化時(shí),它會(huì)通知所有觀察者對(duì)象,使這些觀察者對(duì)象能夠自動(dòng)更新各自的行為或狀態(tài)。觀察者模式的優(yōu)點(diǎn)在于,它在觀察者和被觀察者之間建立一種抽象、松散的耦合關(guān)系,并且支持廣播通信,被觀察者會(huì)向所有登記過的觀察者發(fā)送通知消息。
在 J2SDK中的 java.util包中,為 Java程序設(shè)計(jì)人員提供了實(shí)現(xiàn)觀察者模式的幾個(gè)類和接口,主要有 java.util.Observer接口和 java.util.Observable類(盧葦,楊少波,2008)。java.util.Observer接口是觀察者對(duì)象接口,它定義了一個(gè) update方法,用于在收到被觀察者對(duì)象發(fā)出的消息后,定義如何更新自己的狀態(tài)或行為。java.util.Observable類是一個(gè)被觀察對(duì)象或數(shù)據(jù),通過其提供的 addObserver方法注冊(cè)一個(gè)觀察對(duì)象,通過 notifyObservers方法通知所有的觀察者調(diào)用自身的 update方法更新自身狀態(tài)或行為。
在本模擬軟件中,DeviceList對(duì)象可以被視為一個(gè)被觀察對(duì)象,它繼承了 Observable類,DataT-able封裝了界面上的 JTable控件,用于顯示 DeviceList對(duì)象中各設(shè)備對(duì)象相關(guān)信息,實(shí)現(xiàn)了 Observer接口,是一個(gè)觀察者。觀察者模式相關(guān)類及其之間的關(guān)系如圖 3所示。
圖3 觀察者模式相關(guān)類及其關(guān)系Fig.3 Relative classes and their relationship of observer design pattern
當(dāng)模擬設(shè)備啟動(dòng)、停止時(shí),或者因?yàn)槌瑫r(shí)而自動(dòng)斷開時(shí)都會(huì)導(dǎo)致設(shè)備的狀態(tài)發(fā)生改變(即 Device對(duì)象的 status屬性發(fā)生改變),當(dāng)有一個(gè)客戶端連接或斷開時(shí),也會(huì)導(dǎo)致設(shè)備的客戶端連接數(shù)目(clientNumber屬性)發(fā)生變化。當(dāng)這些操作發(fā)生時(shí),將 Device對(duì)象的 operation屬性設(shè)置為 update,并調(diào)用如下代碼通知觀察者進(jìn)行更新:
setChanged();//設(shè)置改變
notifyObservers(device);//通知更新
被觀察者發(fā)送更新通知(notifyObservers方法)時(shí),將Device對(duì)象作為參數(shù)傳遞給觀察者。觀察者DataTable對(duì)象接收到更新通知后,自動(dòng)調(diào)用 update方法,更新界面上設(shè)備相關(guān)信息。
在模擬軟件實(shí)現(xiàn)中,管理員可以隨時(shí)在設(shè)備端管理界面上停止、啟動(dòng)某個(gè)設(shè)備。啟動(dòng)一個(gè)設(shè)備即建立一個(gè)監(jiān)聽套接字,然后調(diào)用其 accept方法,在指定的端口進(jìn)行監(jiān)聽,等待客戶端的連接,如果連接成功,就新創(chuàng)建并啟動(dòng)一個(gè)線程,在線程內(nèi)部處理和客戶端的交互。模擬設(shè)備的啟動(dòng)方法的算法描述如下。
在本模擬系統(tǒng)中,如果設(shè)備對(duì)象 Device直接繼承 Thread類,而將上述模擬設(shè)備的啟動(dòng)方法內(nèi)容置于其 run方法內(nèi),雖然可以啟動(dòng)設(shè)備進(jìn)行監(jiān)聽,但是當(dāng)停止監(jiān)聽后無法重新啟動(dòng)。原因在于一個(gè)線程執(zhí)行完指定的任務(wù)后就消亡了,無法調(diào)用線程對(duì)象的 start方法再次啟動(dòng)該線程(Sun Microsystems,2003)。
因此,在模擬軟件中,將監(jiān)聽任務(wù)單獨(dú)實(shí)現(xiàn)在 TenFiveDeviceServerThread類中,它繼承了 Runnable接口,將啟動(dòng)方法放在 TenFiveDeviceServerThread類的 run方法中,并且其構(gòu)造函數(shù)中包含一個(gè)類型為 Device的參數(shù),與相應(yīng)的設(shè)備進(jìn)行關(guān)聯(lián)。
Device類的 startServer方法算法如下:首先,構(gòu)造一個(gè) TenFiveDeviceServerThread對(duì)象;然后,構(gòu)造一個(gè)線程對(duì)象,并啟動(dòng)該線程;最后,更新界面狀態(tài)。
當(dāng)需要停止設(shè)備監(jiān)聽時(shí),可以調(diào)用 Device對(duì)象的 stopServer方法。
由此可見,設(shè)備(Device類)包括一個(gè) Ten-FiveDeviceServerThread對(duì)象,而一個(gè) TenFiveDeviceServerThread對(duì)象包括多個(gè)客戶端工作線程對(duì)象(TenFiveWorkThread),每個(gè)工作線程對(duì)象內(nèi)有一個(gè)命令解析對(duì)象 parser,負(fù)責(zé)對(duì)收到的客戶端命令進(jìn)行解析并調(diào)用設(shè)備相應(yīng)的方法,打包模擬數(shù)據(jù)。其 UML關(guān)系圖見圖 4。
模擬軟件客戶端和設(shè)備端通過 Socket建立連接,當(dāng)設(shè)備端停止模擬時(shí),客戶端軟件的界面狀態(tài)需要實(shí)時(shí)更新。在整個(gè)通信過程中,客戶端主動(dòng)請(qǐng)求設(shè)備端,而設(shè)備端一直處于被動(dòng)響應(yīng)模式。當(dāng)設(shè)備端停止時(shí),客戶端并不能立刻知道設(shè)備端的狀態(tài),只有在下一次請(qǐng)求時(shí)才會(huì)出現(xiàn)異常。因此,在客戶端和設(shè)備端之間應(yīng)該建立一條“心跳”線來檢測兩者之間鏈路是否暢通。Java中的 Socket類提供了一個(gè) sendUrgentData方法(Sun Microsystems,2003),它會(huì)往輸出流發(fā)送一個(gè)字節(jié)的數(shù)據(jù),用于測試對(duì)方 Socket是否已經(jīng)關(guān)閉。只要對(duì)方Socket的 SO_OOB INL INE屬性(默認(rèn)值)沒有打開,就會(huì)自動(dòng)舍棄這個(gè)字節(jié),因此設(shè)備端不需要添加任何處理該消息的相關(guān)代碼。在模擬軟件中,當(dāng) Socket連接成功后,會(huì)啟動(dòng)一個(gè)定時(shí)器,每隔 1秒鐘就通過 sendUrgentData方法發(fā)送一個(gè)字節(jié)數(shù)據(jù),確認(rèn)設(shè)備端是否關(guān)閉,如果設(shè)備端已經(jīng)關(guān)閉,sendUrgentData方法將會(huì)拋出異常,在異常處理代碼中關(guān)閉客戶端相關(guān)連接即可。
圖4 設(shè)備、線程類 UML圖Fig.4 UML diagram of device
設(shè)備端模擬軟件子系統(tǒng)能夠?qū)崿F(xiàn)設(shè)備的添加、修改、刪除以及查看詳細(xì)信息,在設(shè)備列表中,選擇一個(gè)具體設(shè)備后,可以啟動(dòng)或停止監(jiān)聽??蛻舳四M軟件子系統(tǒng)通過指定模擬設(shè)備的 IP地址和端口號(hào)連接到一個(gè)運(yùn)行中的模擬設(shè)備,然后發(fā)送登錄、獲取數(shù)據(jù)等指令,并將返回?cái)?shù)據(jù)顯示在界面上。
模擬軟件能夠模擬絕大部分通信指令。模擬的設(shè)備包括水管傾斜儀、豎直擺鉆孔傾斜儀、測氡儀、數(shù)字式溫度計(jì)等多種 “十五”設(shè)備。設(shè)備端模擬軟件子系統(tǒng)界面如圖 5所示,客戶端模擬軟件子系統(tǒng)界面如圖 6所示。
圖5 設(shè)備端模擬軟件子系統(tǒng)界面Fig.5 U Iof device side of simulative system
圖6 客戶端模擬軟件子系統(tǒng)界面Fig.6 U Iof client side of simulative system
該模擬軟件界面友好、簡單實(shí)用、易于操作,能夠模擬大部分 “十五”前兆觀測設(shè)備,為臺(tái)站工作人員、教師、學(xué)生學(xué)習(xí)和了解前兆設(shè)備通信協(xié)議、設(shè)備功能、觀測數(shù)據(jù)格式提供了模擬環(huán)境支持,同時(shí)也為各種前兆設(shè)備相關(guān)通信軟件的開發(fā)提供模擬支撐環(huán)境,在實(shí)際開發(fā)中,可以直接連接該模擬軟件,避免對(duì)實(shí)際觀測設(shè)備的頻繁訪問,具有較大的應(yīng)用價(jià)值。
地殼運(yùn)動(dòng)監(jiān)測工程研究中心 .2005.中國數(shù)字地震觀測網(wǎng)絡(luò)技術(shù)規(guī)程——地震前兆臺(tái)網(wǎng)專用設(shè)備網(wǎng)絡(luò)通信 [M].北京:地震出版社.
何案華,趙剛,王軍,等 .2008.串口前兆儀器的因特網(wǎng)接入方案與配套軟件開發(fā)[J].地震研究,31(3):279-283.
盧葦,楊少波 .2008.J2EE項(xiàng)目實(shí)訓(xùn)——UML及設(shè)計(jì)模式 [M].北京:清華大學(xué)出版社 .
倪泰山,闕云彩,李祥,等 .2009.基于B/S結(jié)構(gòu)的地震臺(tái)站綜合信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].地震研究,32(1):89-93.
牛從達(dá),王峰,李倩,等 .2005.云南分布式地震觀測數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].地震研究,28(4):398-402.
王秀英,周振安,劉愛春 .2008.“十五”地震前兆觀測設(shè)備網(wǎng)絡(luò)通信規(guī)程應(yīng)用探討[J].大地測量與地球動(dòng)力學(xué),28(4):131-135.
中國地震局 .2005.中國地震前兆臺(tái)網(wǎng)技術(shù)規(guī)程[M].北京:地震出版社.
SunMicrosystems.Class Thread[EB/OL].(2003-01-01)[2010-05- 22]. http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html.
SunMicrosystems.sendUrgentData[EB/OL].(2003-01-01)[2010-05-22].http://java.sun.com/j2se/1.4.2/docs/api/java/net/Socket.html#sendUrgentData(int).
Research on Key Technologies of Simulative Commun ication System of Earthquake Precursory Observation Devices
S HAN W ei-feng,L I Jun
(Institute of D isaster Prevention,Sanhe065201,Hebei,China)
A ccording to“Stipulation on N et Comm unication for D evices in China Geophysical and Geochem ical O bservatory N e tw ork”,a sim ulative comm unication system of precursory observation devices based on java programm ing language is designed.Firstly,the paper introduces the comm unication prim itives,data package form at and high-level architecture.Secondly,several key technologies of sim ulative comm unication system are argued in detail,such as how to sim ultaneously sim ulate m ultiple p recursor equipm ent,updating devices'status using observer pattern,using socket and m ultithreading technologies to start/stop s im ulative device,using “heart”m essage to judge w hether the rem ote socket is closed or not.The s im ulative comm unication system realizes m ost comm unication pr im itives and provides a sim ulative environm ent for students to understand the functions,comm unication prim itives and data package form at of precursory observation devices,w hich enhances the teaching effects and training quality,on the other hand it provides a support environm ent for developm ent of sim ulation softw are.
precursory observation devices,sim ulative comm unication softw are,socket,m ultithreading,observer design patten
TP311.52
A
1000-0666(2010)04-0365-06
2010-03-15.
中國地震局教師科研基金(20090101)和防災(zāi)科技學(xué)院防災(zāi)減災(zāi)青年科技基金(200905)聯(lián)合資助 .