
附件 AIS中文通信規則及編碼
A.1
B.1 概述
ITU-R M.1371-1《在VHF海上移動頻段采用時分多址(TDMA)技術的通用船載自
動識別系統(AIS)的技術特性》對消息中收發的字符規定采用該文獻《6位ASCII字符
碼和8位標準ASCII字符碼的對照表》(以下簡稱對照表)的6位ASCⅡ碼。下面給出
一種在消息中使用漢字交換信息的方法,使規定使用6位ASCII碼收發信息的船載自
動識別系統,能用漢字代碼收發信息。
A.2
B.2 代碼定義
1)換碼特征碼
船載自動識別系統以收發雙方約定的字符組合作為換碼特征碼,讓收發雙方知道
以下收發的是含漢字代碼的收發代碼,該字符組合在對照表中6位ASCII碼字符集中
選取。
2)機內碼
機內碼是一般嵌入式計算機擁有的含漢字代碼的編碼,即單字節8位二進制數,
第8位為“0”,表示標準ASCII字符代碼;雙字節16位二進制數,兩個字節第8位都
為“1”,表示GB2312基本集漢字代碼。機內碼用于船載自動識別系統計算機的字符
和漢字的存儲、處理和收發含漢字代碼的信息。
A.3
B.3收發雙方約定
1)船載自動識別系統收發消息時,其初始字符編碼默認采用對照表的6位ASCII
碼;
2)當且僅當收發換碼特征碼后,船載自動識別系統收發的字符編碼采用含漢字代
碼的機內碼;消息收發結束,系統恢復默認采用對照表的6位ASCII碼;
A.4
B.4實施舉例
下面使用計算機編程語言C編寫程序,使默認使用6位ASCII碼收發信息的船載
自動識別系統,換碼用機內碼收發信息。此實施例顯示和描述了本方法的原理和特征,
實際使用不受此例的限制。
程序中收發雙方約定字符組合“&&&”作為換碼特征碼。函數xToY_nd和
yToX_receive實施了本方法的算法;其它函數與本方法關系不大,故程序略。
unsigned char ndData[162]; //要發送的機內碼。
unsigned char receiveData[162]; //收到的已轉換的機內碼。
void nd_6bit(unsigned char y); //將y的低6位送入發送數據區,程序略。
void nd_8bit(unsigned char y); //將y送入發送數據區,程序略。
unsigned char receive_6bit(); //從接收數據區取6位值作為返回值,程序略。
unsigned char receive_8bit(); //從接收數據區取8位值作為返回值,程序略。
/*-------------------------------------------------------------
** 函數名:xToY_nd
** 功能:將數組ndData中的機內碼轉換為默認的6位ASCII碼或仍為機內碼,
送入發送數據區。
** 輸入:sn,要轉換的數組元素個數;
數組ndData,元素是機內碼。
** 輸出:函數nd_6bit(c),把默認的6位ASCII碼送入發送數據區;
函數nd_8bit(c),把機內碼8位送入發送數據區。
----------------------------------------------------------------*/
void xToY_nd(sn)
unsigned char sn;
{
unsigned char i, x1, y1, escN, esc;
i=0;
escN=0; //特征字符計數清0。
esc=0; // esc若為0x1b,換碼特征碼有效;0,無效。
//循環直至(sn)個。 while(i { x1=ndData[i]; //x1取機內碼。 i++; if(esc==0) { //換碼特征碼無效,x1轉換為默認的6位ASCII碼y1。 x1=x1&0x7f; if(x1>=0x40) y1=x1-0x40; el y1=x1; nd_6bit(y1); //把6位ASCII碼y1送入發送數據區。 if(y1==0x26) //0x26為&,監視是否發送連續3個&即換碼 特征碼。 { //若發送連續3個&,即"&&&",則esc=0x1b,置換碼特征碼 有效。 escN++; if(escN>=3) esc=0x1b; } el escN=0; //否則,escN清0重計。 } el { //換碼特征碼有效,x1作為機內碼原樣發送。 //把8位機內碼送入發送數據區。 nd_8bit(x1); } } //循環直至(sn)個。 } /*------------------------------------------------------------- ** 函數名:yToX_receive ** 功能:將接收的機內碼和默認的6位ASCII碼(轉換為機內碼),送入數組 receiveData。 ** 輸入:rn,接收數據區6位ASCII碼和機內碼總數; 函數receive_6bit(),從接收數據區取默認的6位ASCII碼; 函數receive_8bit(),從接收數據區取8位機內碼。 ** 輸出:數組receiveData。 -------------------------------------------------------------*/ void yToX_receive(rn) unsigned char rn; { unsigned char i,x1,y1,escN,esc; i=0;

本文發布于:2023-11-25 07:44:08,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/1700869448225823.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:AIS中文通信規則及編碼.doc
本文 PDF 下載地址:AIS中文通信規則及編碼.pdf
| 留言與評論(共有 0 條評論) |