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
主站蜘蛛池模板: 99精品视频九九精品| 欧美日本在线观看| 视频二区国产精品职场同事| 亚洲成人播放| 在线免费观看a视频| 欧美在线视频不卡第一页| 欧美日韩精品一区二区在线线| 色综合天天操| 日本成人一区| 日韩欧美视频第一区在线观看| 国产精品主播| 欧美日本二区| 亚洲中文字幕无码mv| 成年人国产网站| 国产精品深爱在线| aa级毛片毛片免费观看久| 国产在线观看人成激情视频| 亚洲AV无码久久天堂| 亚洲另类第一页| 欧美色图久久| 华人在线亚洲欧美精品| 先锋资源久久| 精品一区国产精品| 福利国产微拍广场一区视频在线| 九九九久久国产精品| 中文字幕调教一区二区视频| 天天综合网亚洲网站| 香蕉视频在线精品| 国产精品欧美亚洲韩国日本不卡| 97精品伊人久久大香线蕉| 午夜不卡视频| 久久国产精品77777| 91久久国产热精品免费| 亚洲色图欧美一区| 国产综合欧美| 香蕉网久久| 亚洲开心婷婷中文字幕| 日本www在线视频| 91成人免费观看在线观看| 欧美成人aⅴ| 91在线无码精品秘九色APP| 亚洲二三区| 欧美亚洲国产精品久久蜜芽| 色AV色 综合网站| 国产成人亚洲欧美激情| 亚洲色图综合在线| 黄色国产在线| 国产91成人| 伊人AV天堂| 91精品国产自产91精品资源| 久久综合丝袜日本网| 国产三级a| 国产成人一级| 精品国产乱码久久久久久一区二区| 色窝窝免费一区二区三区 | AⅤ色综合久久天堂AV色综合| 国产免费看久久久| 国产成人精品午夜视频'| 亚洲第一精品福利| 九九视频在线免费观看| 粗大猛烈进出高潮视频无码| 精品国产网站| 久久综合五月婷婷| 国产a v无码专区亚洲av| 无码国内精品人妻少妇蜜桃视频| 亚洲人成影视在线观看| 97se亚洲| 久久精品这里只有精99品| 国产精品第5页| 中文无码影院| 婷婷亚洲最大| 国产亚洲欧美日韩在线一区二区三区| 操美女免费网站| 特级做a爰片毛片免费69| 中文毛片无遮挡播放免费| 亚洲无线一二三四区男男| 亚洲精品视频免费观看| 99re在线视频观看| 亚洲欧洲日韩综合色天使| 亚洲精品国产自在现线最新| 国产亚洲精品资源在线26u| 国产福利微拍精品一区二区|