高山
摘要:文章介紹了建設發(fā)射機房運行監(jiān)控系統(tǒng)的關鍵技術難題,及其解決思路和方法。解決了發(fā)射臺機房運行監(jiān)控系統(tǒng)在和其他系統(tǒng)交換數(shù)據(jù)過程中,因使用不同的編程語言,而產生不同的漢字編碼帶來的相互轉換難題;并實現(xiàn)了系統(tǒng)接收數(shù)據(jù)包以后,把字符串按需求拆分還原出相應的數(shù)據(jù);還攻克了因網(wǎng)絡中斷、或者服務器關閉等原因,而產生的Socket連接超時難題。
關鍵詞:系統(tǒng)開發(fā);編碼轉換;字符拆分;連接超時
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2016)21-0204-03
無線電臺管理局近年在大力推進信息化建設,整合現(xiàn)有的發(fā)射機單機自動化系統(tǒng)、天線自動交換系統(tǒng)、以及機房輔助系統(tǒng),優(yōu)化發(fā)射臺安全播出設備的自動化系統(tǒng),提高安全播出效果。機房運行監(jiān)控系統(tǒng)結構如圖1所示:
機房運行監(jiān)控系統(tǒng)的作用就是統(tǒng)一調度管理全機房的播出任務,接收、解析由上一級平臺下發(fā)的調度令,調整運行圖,協(xié)調發(fā)射和天線自動化系統(tǒng)進行播出;集中管理全機房設備,統(tǒng)一監(jiān)控,根據(jù)發(fā)射機房設備的運行狀態(tài)和運行信息,進行代播申請和系統(tǒng)運行方式設置,并將運行狀態(tài)信息和故障信息,進行記錄、匯總和管理 。下面就開發(fā)過程中遇到的關鍵技術難題,做一個初步探討和解析。
1 編碼轉換
機房運行監(jiān)控系統(tǒng)和發(fā)射機單機自動化系統(tǒng)、天線交換系統(tǒng)、機房輔助系統(tǒng)、上一級臺平臺進行數(shù)據(jù)交換,如果是不同編程語言開發(fā)的系統(tǒng),就存在一個漢字編碼轉換問題。例如微軟的C++默認的漢字編碼方式是GB2312,而Sun公司的Java默認的漢字編碼方式是UTF-8,在進行通信時如果數(shù)據(jù)包里包含漢字,而沒有進行編碼轉換,對方接收到的數(shù)據(jù)就變成不可知的亂碼,不能正確解析。如何在GB2312與UTF-8之間相互轉換?很多資料上講解的編碼轉換通常是用字符串的轉換,來進行2進制的運算,這就涉及大量的I/O操作,效率比較低,使用起來也很不方便。發(fā)射機自動化系統(tǒng)發(fā)送的數(shù)據(jù)包實時性要求很高,且編碼轉換的工作量往往非常大,因此不得不考慮效率的問題。在GB2312和UTF-8互換的時候,首先需要先轉換成UNICOD,然后再轉換成GB2312或UTF-8。根據(jù)UTF-8一個漢字要用3個字節(jié),而UNICODE只用2個字節(jié);找出對應關系,進行位操作,即可達到目的。實現(xiàn)UTF-8和UNICODE之間的轉換,就可用二進制運算,代替字符串的轉換,從而使問題簡單化。經過查找大量相關資料,反復測試,筆者用VC++編寫了一個GB2312和UTF-8相互轉換函數(shù)。下面是UTF-8到GB2312具體的實現(xiàn)代碼,反過來也可以實現(xiàn)GB2312到UTF-8的轉換。
void CChineseCodeLib::UTF_8ToUnicode(WCHAR*pOut,char *pText) // UTF-8轉換成Unicode
{ char* uchar = (char *)pOut;
uchar[1] = ((pText[0] & 0x0F) << 4) + ((pText[1] >> 2) & 0x0F);
uchar[0] = ((pText[1] & 0x03) << 6) + (pText[2] & 0x3F);
return; }
void CChineseCodeLib::UnicodeToGB2312(char* pOut,unsigned short uData) // Unicode 轉換成GB2312
{WideCharToMultiByte(CP_ACP,NULL,&uData,1,pOut,sizeof(WCHAR),NULL,NULL);
return;}
void CChineseCodeLib::UTF_8ToGB2312(string &pOut, char *pText, int pLen) // UTF-8 轉換成GB2312
{ char * newBuf = new char[pLen];
char Ctemp[4];
memset(Ctemp,0,4);
int i =0; int j = 0;
while(i < pLen)
{ if(pText[i] > 0)
{newBuf[j++] = pText[i++]; }
else
{ WCHAR Wtemp;
UTF_8ToUnicode(&Wtemp,pText + i);
UnicodeToGB2312(Ctemp,Wtemp);
newBuf[j] = Ctemp[0];
newBuf[j + 1] = Ctemp[1];
i += 3; j += 2; }}
newBuf[j] = \0;
pOut = newBuf;
delete []newBuf;
return; }
在和不同系統(tǒng)交換數(shù)據(jù)的過程中,涉及漢字編碼轉換的地方,直接調用上面的函數(shù),即可輕松實現(xiàn)不同編碼方式的轉換。
2 字符串的自由拆分
根據(jù)無線局制定的《無線電臺管理局信息化建設規(guī)范》,機房運行監(jiān)控系統(tǒng)在和上一級臺平臺、發(fā)射機單機自動化系統(tǒng)、天線交換系統(tǒng)、機房輔助設備交換數(shù)據(jù)時,用Socket進行通信,傳送的數(shù)據(jù)包中不同的數(shù)據(jù)量之間用“|”分隔,那么在接收端解包的時候也是用“|”,判斷還原各個數(shù)據(jù)量。為了方便在程序中重復調用,將數(shù)據(jù)幀拆分代碼封裝成一個類,以下為具體實現(xiàn)方式。
數(shù)據(jù)拆分封裝類Header Files代碼:
3.2 在線醫(yī)學期刊雜志
許多的醫(yī)學期刊雜志都有電子版供醫(yī)學專業(yè)人士使用。如創(chuàng)新醫(yī)學網(wǎng),網(wǎng)址http://www.yixue360.com,能提供《中國社區(qū)醫(yī)師》、《醫(yī)學信息》、《吉林醫(yī)學》等雜志的論文閱讀。還有一些常見醫(yī)學英文期刊雜志網(wǎng)址,如期刊名稱Nature Medicine,網(wǎng)絡版地址:http://www.nature.com/nm/journal/v14/n5/index.html#af;期刊名稱:NEJM,網(wǎng)絡版地址:http://content.nejm.org/ 。還有MD Anderson網(wǎng)站,網(wǎng)址http://www.mdanderson.org,匯集了海量的生物學、醫(yī)學類期刊供用戶查閱使用。
3.3 專業(yè)醫(yī)學圖庫
Internet網(wǎng)為醫(yī)學信息用戶提供種類豐富,逼真實用的醫(yī)學專業(yè)圖片,有實體圖、模型圖、解剖圖、多譜分類圖、光學顯微鏡圖等,它們對醫(yī)學教育和醫(yī)療診斷起著舉足輕重的作用。如可在Internet網(wǎng)上搜索血液學圖譜、解剖學圖譜等。
3.4 在線醫(yī)學字典
Internet 上有多種醫(yī)學字典,如:英漢醫(yī)學詞典,網(wǎng)址http://www.esaurus.org/,它收錄了數(shù)以萬計的醫(yī)學術語英語單詞、詞組,并有準確、規(guī)范的中文解釋, 是醫(yī)學從業(yè)人員必備的專業(yè)工具書。還有medical dictionary online,網(wǎng)址http://www.online-medical-dictionary.org/,它是涵蓋醫(yī)學術語及縮略語、藥學、護理、醫(yī)療設備、健康狀況等的在線醫(yī)學辭典。
3.5 醫(yī)學學術交流活動
醫(yī)藥衛(wèi)生學科是新知識、新技術頻出的領域,通過交流溝通信息,能夠了解醫(yī)學領域的最新研究動態(tài),加快知識更新和學術創(chuàng)新。為了適應當前醫(yī)學科學發(fā)展的需要,促進醫(yī)師隊伍職業(yè)素養(yǎng)和醫(yī)術水平的提高,加速推動醫(yī)院的學科建設和發(fā)展,需要建立和完善醫(yī)技人員學術交流及外派進修制度。通過學術交流能更好的結合本職工作來學習新知識和新技術,提高自主創(chuàng)新能力,建設高素質創(chuàng)新型的醫(yī)學專業(yè)技術人才隊伍。醫(yī)務從業(yè)人員在TechExpo網(wǎng)站上可查找有關醫(yī)學專業(yè)技術會議的安排來選擇參會,網(wǎng)址URL: http://www.techexpo.com。
3.6 國內外常用的醫(yī)學檢索數(shù)據(jù)庫
1)中國生物醫(yī)學文獻數(shù)據(jù)庫(CBM):網(wǎng)址http://www.sinomed.ac.cn/,2004年起可以通過網(wǎng)絡檢索所需文獻。
2)國家科技圖書文獻中心(NSTL):網(wǎng)址http://www.nstl.gov.cn/,它收藏了涵蓋理工農醫(yī)4個領域的科技文獻信息,提供中外文期刊、學位論文、標準等各類文獻的免費檢索和網(wǎng)上全文傳送服務,學科覆蓋面廣,數(shù)據(jù)量大,可供檢索的二次文獻數(shù)據(jù)量已近5000萬條,是目前我國最大的科技文獻資源共建共享服務體系。
3)萬方醫(yī)學網(wǎng):萬方醫(yī)學網(wǎng)是萬方數(shù)據(jù)股份有限公司聯(lián)合國內醫(yī)學權威機構、醫(yī)學期刊編輯部、權威醫(yī)學專家推出的,面向廣大醫(yī)院、醫(yī)學院校、科研機構及醫(yī)療衛(wèi)生從業(yè)人員的醫(yī)學信息整合服務、醫(yī)學知識鏈接全開放平臺。為用戶提供期刊雜志、學位論文、會議論文、科技成果等信息檢索功能,并提供在線支持服務。中文網(wǎng)址:http:// www.wanfangdata.com.cn;英文網(wǎng)址:http:// www.wanfangdata.com ,可通過因特網(wǎng)訪問或通過大學圖書館鏡像站點登錄。
4)同方中國學位、會議、期刊全文數(shù)據(jù)庫(CNKI):網(wǎng)址http://www.cnki.net,是目前世界上最大的連續(xù)動態(tài)更新的中國期刊全文數(shù)據(jù)庫。
5)重慶維普數(shù)據(jù)庫:網(wǎng)址:http://www.cqvip.com。 它是維普資訊公司推出的一個功能強大的中文科技期刊檢索系統(tǒng)。
6)Ovid 數(shù)據(jù)庫:網(wǎng)址:http://ovidsp.ovid.com。Ovid 數(shù)據(jù)庫是世界上最大的生物醫(yī)學文獻數(shù)據(jù)庫。
7)Medline與PubMedline:網(wǎng)址http://www.ncbi.nlm.nih.gov/pubmed Medline,是國際權威的生物醫(yī)學文獻書目型數(shù)據(jù)庫。
8)Biomed Central(BMC):網(wǎng)址 http://www.highwire.org,提供網(wǎng)上即時免費查閱經過同行評議的生物醫(yī)學研究資料。
3.7醫(yī)學軟件APP
隨著移動智能終端的廣泛應用,移動終端應用APP作為新的開拓渠道,正逐漸嶄露頭角。APP是針對手機這種移動連接到互聯(lián)網(wǎng)的業(yè)務或者無線網(wǎng)卡業(yè)務而開發(fā)的應用程序服務,將APP運用于移動教學已成為趨勢。如“醫(yī)學移動課堂APP”是由醫(yī)學教育網(wǎng)研發(fā)的一款移動學習手機應用軟件,覆蓋醫(yī)學領域的全部課程,包括醫(yī)師資格、執(zhí)業(yè)/助理醫(yī)師、執(zhí)業(yè)藥師、護士資格、檢驗師等課程。我們可以利用醫(yī)學軟件APP隨時隨地檢索學習感興趣的醫(yī)學知識。
參考文獻:
[1] 張卡琳. 醫(yī)學期刊編輯文獻檢索基本技能的培養(yǎng)[J].現(xiàn)代醫(yī)藥衛(wèi)生2010(26).
[2]王升東. 醫(yī)學信息資源利用中在的問題及對策[J]. 醫(yī)學情報工作,2011.
[3] http://bbs.iiyi.com/thread-1303696-1.html.