一种在卫星接收机顶盒上实现多语言显示的方法

文档序号:7950663阅读:1019来源:国知局
专利名称:一种在卫星接收机顶盒上实现多语言显示的方法
技术领域
本发明属于一种多语言显示的方法,尤其涉及一种在卫星接收机顶盒中显示六种语言的方法。
背景技术
目前传统的多语言显示是通过调用多个字库来实现的,有几种语言就存在几种字库,在后续的调用过程中就直接对字库中的具体字进行取用,方便快捷,但同时带来一个缺点,即所占用的存储空间较大.以24点阵的机顶盒为例,描述一个字母最多使用的空间为78字节,那么一个语言字库的占用空间为78×128(字符)=9.75k以英语、法语、德语、意大利语、土耳其语和西班牙语六种语言为例,总占用空间19.5×6=58.5k占用较大的存储空间将会带来两方面的问题,一是存储元件的成本高,另一方面是调用过程需要较多的时间。

发明内容
本发明的目的在于,针对西欧语言中很多是在英语的基础上增加或减少了几个字符,换句话说,在这些语言中相当数量的字母都相同,所以本方法将这些语言中字符先进行一个统计,所有可能用到的字符共计209个,这样六种语言的占用空间为78×209=15.9k,这个数据库供机顶盒系统调用。
本发明是这样实现的,一种在卫星接收机上实现多语言显示的方法,其特征在于,包括以下的步骤a)提供一个字符向量表和字符数据表,所述字符数据表用于提供存放字符的点阵数据,所述字符向量表用于提供字符数据的存放地址,所述向量表和数据表对应所有128个ASC II字符以及非重复的多语言字符;
b)字符串指针指向待转化字符串中的一个字符;c)读取所述字符的ASCII码,通过地址函数,在所述字符向量表中找到字符点阵的坐标地址;d)根据所述坐标地址,通过点阵数据函数,在所述字符数据表中找到对应的点阵数据;e)通过OSD显示函数将所述点阵数据进行显示;f)所述字符串指针指向下一个字符,返回上述步骤c)。


下面,参照附图,对于熟悉本技术领域的人员而言,从对本发明方法的详细描述中,本发明的上述和其他目的、特征和优点将显而易见。
图1是本发明的实现方法的流程图;图2是本发明所采用的经过扩展的ASCII编码表。
本发明的较佳实施例是以六种语言为例,这六种语言包括以英语、法语、德语、意大利语、土耳其语和西班牙语六种语言,经统计,六种语言的字符数共209种。考虑到字符点阵显示方便,在整个方法中设计了两张表,字符向量表和字符数据表,字符向量表用来指出字符数据的存放地址,六种语言用到的字符数为209个,按1个字符的字长为16,字符向量表的大小为209×16字长,比如字符向量表中第33个字表示的是“!”这个字符的点阵数据在字符数据表中的位置。
字符数据表用来给出存放字符的点阵数据,这些数据是按照某种特定的数据结构进行存储的。考察字符向量表和字符数据表的存放顺序,可以了解到,前128个字符顺序符合ASCII码标准,即如图2(a)中所示的顺序,ASCII码中的标准字符有128个,即ASCII码为0~127的字符是确定的,在任何系统的任何机型中对应的都是确定的字符。由于是多语言,相应出现一些扩展的字符,这些扩展的字符放在扩展ASCII编码表中,如图2(b)所示。这128~255个字符的顺序随着系统的不同可能会有差异。比如在IBM-PC长城0520上ASCII值为129的字符对应字符为″ü″,在其他机型上可能就对应″″了。从字符变成ASCII码这个过程是由编译器来完成的,本实施例中使用的是METAWARE,但是其他项目中有的用的是其他编译器,输入的是“ü”,翻译成ASCII值为186,在其他编译系统下有可能翻译成其它数。输入的是“a”,因为是在ASCII标准中,不管什么系统都翻译成97。为使得代码具有很好的可重用性,我们在开发时对于从128到255之间的字符采用直接输入ASCII码来完成。“i”这个字符串,我们在输入的时候就输成“i\272\243”(其中’\’是转意符号)。
\272也就代表‘ü‘\243代表’‘。
字符数据表的数据结构typedef struct{charWidth_X;charWidth_Y;charWidth;charHight;charXoffs;charYoffs;unsigned char*pBM; //点阵数据}font_lib;在实现多语言菜单字符的显示上本方法是通过字符显示函数TextPrint(unsigned char *pStr)来实现的,该实现过程请参见流程图1。
首先进入步骤S1,例如输入一个字符串为“abcdef”,首指针就指向字母″a″;接着在步骤S2中判断该指针是否指向输入字符串的末端,判断的结果一旦为“是”,即该程序结束,转入步骤S7;如果结果为“否”,执行下一步骤,这里需注意,通常在C语言中系统对字符常量自动加一个“\0”作为结束符,通过这个标识可以了解到指针是不是指向字符串的末尾;在步骤S3中,获得指针所指向字符的ASCII码后,进行地址函数运算,根据字符向量表得到字符点阵实际的存储位置;在步骤S4中,结合点阵数据函数的运算与字符数据表,得到字符的点阵数据;实际上,本发明显示一个字符串是分步进行的,在读取单个字母后获得所读字母的ASCII码值,通过ASCII码值在字符向量表中找到该字符点阵的坐标,通过该坐标就能够访问到点阵数据了。然后通过步骤S5,调用OSD显示函数,将该字符在屏幕上显示出来,最后步骤S6,字符串指针又指向下一个字符,并返回步骤S2,重复各步,直到指针指向为字符串的结尾。
例如‘a’这个字符显示过程如下1〕‘a’的ASCII码是972〕代入地址函数的公式CharVect=(WORD)Fn_Vect[CIdx*2]*256+(WORD)Fn_Vect[(CIdx*2+1]计算得到字符点阵坐标的地址CharVect=73813〕代入点阵数据的公式Fn_Data[CharVect]=Fn_Data 其中7381为点阵的第一个数据,4〕通过访问数组Fn_Data 就能得到点阵数据。
5〕OSD显示函数是把得到的字符点阵数据在终端上显示出来,该功能主要是通过硬件来执行的,我们把点阵数据写到OSD缓存中,才有系统CPU负责把数据送到视频编码器中,对字符给予显示。
前面提供了对较佳实施例的描述,以使本领域内的任何技术人员可使用或利用本发明。对这些实施例的各种修改对本领域内的技术人员是显而易见的,可把这里所述的总的原理应用到其他实施例而不使用创造性。因而,本发明将不限于这里所示的实施例,而应依据符合这里所揭示的原理和新特征的最宽范围。
权利要求
1.一种在卫星接收机上实现多语言显示的方法,其特征在于,包括以下的步骤a)提供一个字符向量表和字符数据表,所述字符数据表用于提供存放字符的点阵数据,所述字符向量表用于提供字符数据的存放地址,所述向量表和数据表对应所有128个ASC II字符以及非重复的多语言字符;b)字符串指针指向待转化字符串中的一个字符;c)读取所述字符的ASCII码,通过地址函数,在所述字符向量表中找到字符点阵的坐标地址;d)根据所述坐标地址,通过点阵数据函数,在所述字符数据表中找到对应的点阵数据;e)通过OSD显示函数将所述点阵数据进行显示;f)所述字符串指针指向下一个字符,返回上述步骤c)。
2.根据权利要求1所述的方法,其特征在于,所述语言包括英语、法语、德语、意大利语、土耳其语和西班牙语。
3.根据权利要求2所述的方法,其特征在于,所述字符向量表的大小为209×16字长。
4.根据权利要求1所述的方法,其特征在于,所述字符数据表指出存放字符的点阵数据是以数据结构进行存储的。
5.根据权利要求4所述的方法,其特征在于,所述字符数据表中的存放顺序为,前128个符合ASCII码顺序标准。
全文摘要
本发明公开一种在卫星接收机上实现多语言显示的方法,包括以下的步骤a)提供一个字符向量表和字符数据表,所述字符数据表用于提供存放字符的点阵数据,所述字符向量表用于提供字符数据的存放地址,所述向量表和数据表对应所有128个ASCII字符以及非重复的多语言字符;b)字符串指针指向待转化字符串中的一个字符;c)读取字符的ASCII码,通过地址函数,在字符向量表中找到字符点阵的坐标地址;d)根据坐标地址,通过点阵数据函数,在字符数据表中找到对应的点阵数据;e)通过OSD显示函数将点阵数据进行显示;f)字符串指针指向下一个字符,返回上述步骤c)。本方法比常规多语言显示的卫星接收机顶盒的存储开销小。
文档编号H04B7/15GK1407735SQ01126579
公开日2003年4月2日 申请日期2001年8月29日 优先权日2001年8月29日
发明者张伟 申请人:上海广电信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1