999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Bit Fields的AIS報文解析及實現*

2014-07-11 08:49:02王步云
艦船電子工程 2014年7期
關鍵詞:定義船舶結構

方 興 王步云

(91550部隊 大連 116023)

1 引言

船載自動識別系統(Automatic Identification System,AIS)是一種新型的海上輔助助航系統及設備,具有船只識別、目標追蹤、碰撞規避等諸多功能,目前已成為船舶交通管理、保障航行安全的重要工具[1]。AIS報文是AIS網絡中交換和傳輸的數據單位,它包含了將要發送的完整的船舶數據信息。而報文解析則是將接收到報文轉換成船舶信息的過程,是實現AIS廣泛應用的基礎。

AIS報文主要可分為明碼和暗碼兩類。明碼以“$”開頭,主要用于傳遞傳感器信息,包括UTC時間、地理位置等[2]。明碼的所有字符均為ASCII文本字符,可以直接提取報文信息。明碼的每條語句不能超過82個ASCII字符,如果超過82個字符,就需要采用暗碼傳輸。

暗碼以“!”開頭,能夠傳遞船舶以及基站的各類信息。暗碼采用一定的方式對Bit位進行壓縮,實現了無線電文的封裝,節省了傳輸帶寬,提高了傳輸效率。暗碼不僅能夠傳送格式不確定的信息,而且還能將內容較長的信息分段傳送。AIS報文的傳輸以暗碼居多。

然而由于暗碼在傳輸之前進行了壓縮,因此在終端上解析時,需要進行解壓縮,首先依據6Bit位表將ASCII字符轉換為中6Bit的二進制數據,并進行拼接;然后依據報文格式分解二進制數據;最后通過整合將二進制數據轉換成相關信息。從整個過程可以看出,暗碼的解析需要以Bit位為單位進行多次轉換,實現較為復雜。

Bit Fields是C語言提供的一種對Bit位進行操作的方法,針對AIS暗碼報文解析的特點,本文提出一種基于Bit Fields的暗碼報文解析的新方法,通過對Bit Fields結構的定義,省去中間的轉換環節,直接對各Bit位進行操作后即可得到相關信息,具備實現簡單、解析高效等特點,具有良好的實用價值。

2 AIS報文格式及解析特點

2.1 AIS報文

暗碼包含報頭、傳送電文所需語句總數、語句號、電文識別碼、信道、船舶信息、填充比特數和檢驗碼等部分。如圖1所示為AIS暗碼報文格式及示例。

圖1 暗碼報文格式及示例

“!”表示暗碼報文標志;緊接著的五位字符為會話ID,如“AIVDM”說明是通過VHF數據鏈路進行接收的所有的AIS信息,其它的會話ID還包括“AIVDO、AIACA、AIABK”[3];當將一條長消息分成多條語句進行傳輸時,由第三項表明該消息具體由多少條語句組成,本例中就一條語句;第四項為語句序號,表示當前語句在語句序列中的位置;第五項為消息標識號,它標識該條語句的消息號,當僅一條語句時,該項不填;第六項指定了傳輸的頻道;第七項是按協議定義的封裝消息,如果消息是由多條語句組成,那么在解碼時需要將各條消息提取合并成一個完整的消息碼文才能進行解碼;第八項是比特填充位數;第九項為校驗碼,是“*”前面所有字符異或的結果,十六進制表示,用于數據校驗。

表1 AIS中常用的報文類型

其中第七項封裝消息的第一個字符說明了該報文的類型,報文類型不同,格式也不相同。在AIS中,常用的報文類型如表1所示[4]。

[5]列出了每種報文中Bit的具體分布,如船位報告1、2、3報文的Bit位分布如表2所示。無論哪一類報文,在解析過程中,前六項及第八項的內容可以直接提取,不需要任何轉換,第七項內容的提取才是整個解析過程中的難點。

表2 船位報告1、2、3報文的Bit位分布

2.2 AIS報文的解析特點

1)對于包含相同信息的不同類型報文,相同信息在報文中的位置并不相同,從而導致解析過程中很多模塊難以重用。如報文1、2、3與報文18、19中均含有船舶的經緯度信息,但經緯度信息在前三類中處于報文的第62到117位,而在后兩類則處于第58位到113位。

2)報文的解析主要是對Bit位的操作,整個過程中需多次移位、拼接,操作復雜繁瑣。在PC端解析AIS報文時,首先需將字符轉換為6BitASCII碼,然后對轉換后的6Bit進行拼接操作,形成一個新的字符串;最后再根據報文格式按照Bit位提取相應的信息;在提取過程中,還需要不斷移位、拼接等操作,整個過程較為繁瑣。

3)AIS數據涉及的類型較少,只包括整數和字符兩種類型。而對于經緯度、航速等浮點數類型的信息,也是通過整數類型轉換得到。這在一定程度上也減小了AIS報文解析的復雜度。

3 Bit Fields在AIS數據解析中的應用

3.1 Bit Fields的概念和用法

Bit Fields是C語言提供的一種對Bit位進行操作的方法。所謂Bit Fields就是把一個字節中的二進制位劃分為不同的區域,每個域占用不同的Bit位并且有一個域名,允許在程序中按照域名進行操作,這樣就可以把不同的變量用一個字節的二進制位域表示。采用這種定義方式節省了存儲空間,處理較為簡便。

Bit Fields的定義與結構的定義相仿,其形式為

上述位域中,Data1結構共占兩個字節16位,其中a占6位,b占2位,c占8位。

對于位域的使用,有如下幾點需要注意:

1)一個位域必須存儲在同一個字節中,不能跨兩個字節,如果一個字節所剩空間不夠存放另一位域時,應從下一字節起開始存放該位域,剩余空間應作為空域。如:

2)每一個位域的長度不能超過前面所指定類型的長度,否則無效。如:

3)由于在PC中字節序是從左至右,而位序則是從右至左的,因此位域結構在內存中的存放有其特殊性。位域定義的先后次序也將影響該位域在內存中存放的位置。以Data2為例,其存放如表3所示。

表3 位域在內存中的存放示例

從表3中可以看出,位域a存放在第一個字節的低6位,第一個字節的高2位為空域;位域b則存放在第二個字節的低4位,位域c則存放在第二個字節的高4位。而位域a所占用的字節和位域b及c占用的字節則是從左至右的。

3.2 AIS解析中的Bit Fields的定義

由于AIS的報文信息是按照Bit位進行存儲并傳輸的,因此非常適合采用Bit Fields的方式進行解析。通過位域結構的定義,可以省去大部分轉換環節,直接提取船舶信息。主要方法是:針對每一類報文,定義一個位域結構并聲明一個該結構的變量,然后將轉換得到的6Bit流直接轉換為該位域結構類型,這樣就可以通過所定義的變量直接訪問Bit流中信息,從而實現AIS報文的解析。在整個過程中,位域結構的定義就是重點。

以1、2、3類報文為例,報文中的每個字符經6Bit位轉換后,不進行拼接,直接將有效的6Bit位放在一個字節的低6位,高2位填“0”。由此整個報文的Bit流在內存中按照表4存放。

表4 轉換后的AIS信息在內存中存放

為了使類型轉換后的Bit Fields結構變量能夠與Bit流對應起來從而正確地提取船舶信息,可以如下定義位域結構:

在上述位域結構中,每一行對應一個8Bit位字節。按照表3的存放方式,為了除去無效的高2位,位域結構中每行的最后始終是兩位空域,即每個字節的高兩位無效;此外,由于位序從右至左,因此同一字節里定義不同的位域時需與報文格式的先后次序相反,如上述結構的第二行,應先定義報文格式后面的MMSI1,再定義格式前面的Repeat indicator(RPT);而對于在不同字節的信息,按照格式次序依次定義即可,如第三、四行,先定義MMSI的第5~10位,后定義第11~16位。最終該位域結構在內存中存放方式如表5所示。

表5 Msg123在內存中的存放

通過上述定義,整個位域結構正好與轉換后的Bit流對應起來,下一步就可以直接通過位域結構變量提取船舶信息。

3.3 船舶信息的提取

第一步:確定收到的AIS報文ID。依據AIS格式特點,封裝電文的第一個字符指定了該報文的ID,如圖1中的“1”指明了該報文屬于1類報文。獲取報文ID主要是為了確定Bit流將要轉換的位域結構類型。

第二步:類型轉換。依據報文ID,將Bit流轉換為對應的位域結構類型。仍以1、2、3類報文為例:

第三步:獲得最終的船舶信息。通過類型轉換后,就可以直接采用pMsg訪問船舶信息。如船舶的ID:

而對于跨字節的數據,還需進行移位得到最終的信息。如MMSI號碼,在報文中占用30位,在位域結構則跨6個字節,從高位到低位依次是MMSI1到MMSI6,采用移位的方式可得到最終信息:

其它信息均可按照上述方法獲取,不再一一舉例。

4 AIS數據解析實驗

4.1 解析軟件開發

本文在 Windows Xp Sp3操作系統上,采用Visual C++6.0平臺開發解析軟件并進行實驗。解析軟件包括數據接收、數據校驗、數據轉換、信息提取、信息顯示等模塊。

整個軟件運行流程如圖2所示:數據接收模塊從外部接收到AIS語句后,數據校驗模塊則對AIS語句進行異或校驗,對于采用多條語句傳送的消息,還需檢查該消息是否完整;確認校驗無誤及消息完整后,數據轉換模塊負責報文的6Bit位ASCII碼字符轉換、Bit Fields結構類型轉換等一系列工作,最后信息提取模塊依據報文格式,從Bit Fields結構變量中提取相對應的船舶信息并交由信息顯示模塊進行顯示。

圖2 軟件運行流程

4.2 實驗結果及結論

按照第二節所述方法,采用上述解析軟件對圖1中的示例報文進行解析,解析結果如表6所示。

表6 根據報文解析得到的信息(部分)

結果表明,采用基于Bit Fields方法能夠實現AIS數據的正確解析,過程簡單,邏輯清晰。

5 結語

AIS報文解析是實現AIS廣泛應用的基礎。針對AIS報文采用Bit流進行傳輸、存儲的特點,結合C語言中對Bit位操作的Bit Fields方法,本文提出一種基于Bit Fields的AIS報文解析方法。該方法通過對Bit Fields的定義,省去中間復雜、繁瑣的轉換環節,直接對各Bit位進行操作后即可得到所需信息,提高了AIS報文解析效率,具有方法簡單、邏輯清晰、解析高效等特點,對以后進一步開發ECDIS顯示系統、航標系統以及船舶避碰專家系統等都具有借鑒意義。

參考文獻

[1]初秀民,徐海潮,萬劍,等.基于多線程的船載自動識別系統報文解析[J].中國航海,2011,34(2):19-23.

[2]江衍煊,張詩永,陳福金.利用AIS串口數據進行船舶避碰仿真[J].電腦與信息技術,2010,18(1):24-27.

[3]郭善寧,何祖軍.基于VC++的AIS模擬器的設計與實現[J].艦船電子工程,2008,28(10):148-150.

[4]張文力.船載自動識別系統[M].大連:大連海事大學出版社,2004.

[5]RECOMMENDATION ITU-R M.1371-4*.Technical characteristics for an automatic identification system using time-division multiple access in the VHF maritime mobile band[R].International Telecommunication Union,2010:4.

猜你喜歡
定義船舶結構
計算流體力學在船舶操縱運動仿真中的應用
《船舶》2022 年度征訂啟事
船舶(2021年4期)2021-09-07 17:32:22
《形而上學》△卷的結構和位置
哲學評論(2021年2期)2021-08-22 01:53:34
船舶!請加速
論結構
中華詩詞(2019年7期)2019-11-25 01:43:04
論《日出》的結構
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
創新治理結構促進中小企業持續成長
現代企業(2015年9期)2015-02-28 18:56:50
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
山的定義
公務員文萃(2013年5期)2013-03-11 16:08:37
主站蜘蛛池模板: 久久亚洲国产最新网站| 伊人色婷婷| 亚洲—日韩aV在线| 欧美日韩精品一区二区在线线 | 天天婬欲婬香婬色婬视频播放| 91久久偷偷做嫩草影院电| 欧美伊人色综合久久天天| www.91中文字幕| 亚洲国产欧美国产综合久久| 亚洲综合专区| 亚洲一区网站| 国产视频入口| 亚洲第一区精品日韩在线播放| 不卡无码网| 国产第一页免费浮力影院| 再看日本中文字幕在线观看| jizz在线观看| 国产精品午夜福利麻豆| 午夜福利无码一区二区| 特级毛片免费视频| 在线欧美a| 国内嫩模私拍精品视频| 亚洲国产精品日韩欧美一区| 成人va亚洲va欧美天堂| 亚洲综合中文字幕国产精品欧美 | 日韩第八页| 欧美在线视频不卡第一页| 亚洲色图另类| 老色鬼久久亚洲AV综合| 国产色爱av资源综合区| 午夜丁香婷婷| 国产91久久久久久| 久久国产高清视频| 好吊日免费视频| 伊人久久婷婷五月综合97色| 无码中文字幕精品推荐| 日韩在线视频网| 欧美国产日本高清不卡| 国产内射一区亚洲| 国产乱码精品一区二区三区中文| 99青青青精品视频在线| 久久五月天综合| 中国一级毛片免费观看| 国产亚洲现在一区二区中文| 2021精品国产自在现线看| 99热这里都是国产精品| 亚洲区欧美区| 国产在线视频欧美亚综合| 国产精品夜夜嗨视频免费视频| 老司国产精品视频91| 亚洲第一区精品日韩在线播放| 亚洲精品人成网线在线| 最新亚洲av女人的天堂| 欧美不卡视频在线观看| 亚洲成A人V欧美综合| 国产精品极品美女自在线网站| 亚洲一区二区三区国产精品| 日韩欧美综合在线制服| 国产精品永久久久久| 狠狠v日韩v欧美v| 亚洲九九视频| 欧美一级视频免费| 日韩欧美中文在线| 日韩无码白| 国产aaaaa一级毛片| 日本在线欧美在线| 毛片在线播放a| 日韩在线播放欧美字幕| 色香蕉影院| 国产真实自在自线免费精品| 国产鲁鲁视频在线观看| 激情爆乳一区二区| 国产91视频观看| 国产第三区| 亚洲有无码中文网| 国产不卡网| 国产福利在线免费| 欧美高清视频一区二区三区| 波多野结衣久久高清免费| 日韩大乳视频中文字幕| 91久久偷偷做嫩草影院| 国产一级做美女做受视频|