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

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