《实时操作系统VxWorks下电子海图系统打印功能的实现.pdf》由会员分享,可在线阅读,更多相关《实时操作系统VxWorks下电子海图系统打印功能的实现.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、文章编号:1 0 0 98 1 1 9(2 0 0 4)0 8 0 0 4 00 4 摘 要 以电子海图系统为工程背景,重点介绍 了实时操作 系统 v x Wo r k s下电子海图系统打印功能的设计 实 现过程,以及 图形和 汉 字输 出的具体 方 法 关 键词 实时操 作 系统,V x Wo r k s,电子海 图 系统,E C D I S,打 印驱动 程序 Re a l i z a t i o n o f Pr i n t Fu n c t i o n o f ECDI S Un de r RTOS Vx Wo r k s Wa n g Ru i h u a Ha o Ya n l i
2、n g W a n g J i n g mi n (H a r b i n E n g i n e e r i n g U n i v e r s i t y,H a r b i n 1 5 0 0 0 1)Ab s t r a c t T a k i n g E l e c t r o n i c C h a r t D i s p l a y a n d h ff o r ma t i o n S y s t e m(E C D I S)a s t h e b a c k g r o u n d,h o w t o r e a l i z e t h e p ri n t f u n c
3、t i o n o f E C D I S u n d e r t h e r e a l t i m e o p e r a t i n g s y s t e m(R T O S)i s i n t r o d u c e d i n t h i s p a p e r A n d i n t h e p r o c e s s o f p ri n t,t h e me t h o d o f h o w t o d e a l w i t h t h e Ch i n e s e c h a r a c t e r i s a l s o d i s c u s s e d i n d
4、 e t a i l Ke y wo r d s Re a lt i me o p e r a t i n g s y s t e m,Vx W o r k s,E l e c t r o n i c c h a rt d i s p l a y a n d i n f o r ma t i o n s y s t e m,E CI DS,P r i n t e r d r i v e r l 前言 电子海图系统是一种把需要向航海人员显示和解释的 各种各样信 息融成一体的实时导航系统,是地理信 息系统 在 舰船组 合导 航 系统 中 的重要 应用,被 认为 是继雷 达 A R P A之后在舰船
5、导航方面又一项伟大的技术革命。与简单 地用颜色显示的纸海图相 比,电子海图系统包括更多的使 用简单、操作容易的地理和文字信 息。作为一种自动 判定 仪器,它能够 连续测定船舶相对于陆地、图示物标、导航 标志和不可见碍航物的位置,对海上航 行、安全和 商业都 有重要意义。V x W o r k s 是一种嵌入式的买日 寸 操作系统。将应用较为厂 泛的电子海图系统移植到 V x Wo r k s 操作 系统下的主要原 因 有两个:是 V x Wo r k s 系统的买B t,It-,能够很好的满足 导 航系统买O I,IJ-的要求;二是基于信息安全方面的考虑,海 图系统要求一种保密性好、没有漏洞的
6、操作系统,使用 V x 一 :o r k s 操作系统,程序开发者可以进行最底层的程序开发,能够完全控制系统的资源,确保海图信息的安全。2 电子海图系统打印功能的总体设计思路 在 V x Wo r k s 操作系统中,实现 电子海 图信息打印功能 设计的总体思路是:首先将 打印内容,包括图像和报表,转换成恰当格式的图像文件,如 P o s t S c r i p t 文件,而后对于 没有内置 P o s t S c ri p t 语言解释器的打 印机,需要将 P o s t S c r i p t 语言解释成打印机可以识别的语言,最后把图像文件输送 4 0 军 民 两 用 技 术 与 产 品
7、2 0 0 4 8 到打印机。本文介绍基于内置有 P o s t S c r i p t 语言解释器的 H P L a s e r J e t 1 2 0 0打印机,在 V x Wo r k s 操作系统下,完成电子海图信 息打印功能的买现过程。3 打印驱动 打印机驱动程序中的各个函数的实现:(1)基本的 I 0函数的买现 根据打印机并口的特点,驱 动程序中要买现的基本的 I O函数应该是 l p t O p e n()、l p t R e a d()、l p t Wr i t e()和 l p t l o c t l()。这 4 个基本函数的声明分别是:L O C A L i n t l p
8、 t O p e n(L l r F D E V9 p D e v,c h a r n a m e,i n t mo d e);L O C A L i n t l p t R e a d(L P T _ I)E Vp D e v,c h a r g e p B u f,i n t s i z e);L O C AL i n t l p t Wfi t e(L P T D E Vp D e v,c h a r p B u Li n t s i z e);L O C A L S T A T U S l p t l o c t l(L P T D E V*p D e v,i n t f u n c
9、t i o n,i n t a r g O;其中 L P T _ D E V结构的定义为:t y p e d e f s t r u c t l p t De v DEV HDR d e v Hd r;BOOL c r e a t e d;TRUE i f t h i s d e v i c e h a s b e e n c r e a t e d BOOL a u t o f e e d;-h TRUE i f e n a b l e a u t o f e e d BOOL i n s e r v i c e;TRUE i f i n t e r r u p t i n s e r v
10、i c e US HOR T d a t a;d a t a r e g i s t e r US HOR T s t a t;s t a t u s r e g i s t e r 维普资讯 http:/ US HORT c t r l;c o n t r o l r e g i s t e r i n t i n t C n t;i n t e r r u p t c o u n t-k i n t r e t D C n t;r e t r y C O U rt t i n t b u s y W a i t;l o o p c o u n t f o r B US Y wa i t i
11、 n t s t r o b e W a i t;l o o p c o u n t for S T ROB E wa i t l n t h me o u t;-k t i I n e o u t s e c o n d for s y n c S e m-k i n t i n t L e v e l;i n t e r r u p t l e v e l S EMAP HORE mu t e S e m;mu t e x s e ma D h o r e-k S EMAP HORE s y n c S e m;S y l l c s e ma p h o r e L P T _ D E
12、V D E V HD R是所有设备的头结构,是由 V x :o r k s系统定 义的,定义为:t y p e d e f s t r u c t -k DEVI-I DR d e v i c e h e a d e r J r a 1 1(1 e v i(e s t r uc t ur e s-k DL NODE n o d e:-k d e v i c e l i n k e d l i s t n(J d e s h o r t d r v Nu m:d r i v e r n u mb e r for t t 1 i s d e v i c c-k c h a r-k n a me:d
13、 e v i c e n a me D E V _ H D R (2)设备的硬件初始化函数 x x D r y()的实现 该函数的声明为:S T A T U S l p t D r v(i n t c h a n n e l s,L E S O U R C E D R e s o u r c e)其中,参 数 c h a n n e l s为打印并口的通道号;参数 p R e s ou r c e是 指 向 结 构L P T _ R E S O U R C E 的 指 针,结 构 I R E S O U R C E的定义为:t y p e d e f s t r u c t l p t Re
14、s o u r c e L P T_RESOURCE i n t i o B a s e:-k I O b a s e a d d r e s s i nt i nt Vec t o r;i n t e r r u pt v e c t o r-k i n t i n t L e v e l;-k i n t e r r u p t l e v e l-k BOOL a u t o f e e d;TRUE i f e n a b l e a u t o f e e d-k i n t b u s y a i t;l o o p c o u n t for BU S Y wa i t i n
15、t s t r o b e g a i t;l o o p c o u n t for S T ROB E w a i t-k i n t r e t DCn t:-k r e t n ,c o u n t-k i n t t i me o u t;-k t i n l e o u t s e c o n d f o r s y n c S e m 1 L f r r RE S OURCE:该 函 数 l p t D n,(i n t c h a n n e l s L F r _ R E S O U R C E p R e s o u r c e)完成了打 印机并口的初始化,其 中调用函数
16、i l 1 l c o。-fl e e t()和 i o s D r v h l s t a l l()的具体形式为:【v o i d)i n t C o n n e c t(V OI D F U N C P T R )I N U M T O I V E C (p R e s o u r c e一 i n t V e c t i)r)(V O I D F U N C P T R)l p t l n t r,(i n t)p D e v):l p t D r N u in=i o s D n I n s t a l l(1 p t O p e n (F U N C P T R)N U L L 1
17、 p t Op e n 1 F U NC P T R)N UL L,l p t R e a d,l p t Wr i t e,l p t I o c t 1);(3)设备的创建函数 x x D e v C r e a t e()的实现 该因数的声明为:S T A T U S l p t D e v C r e a t e(c h a r-k n a n l e,i n t c h a n n e 1)该函数将设备的创建标志置 为 T R U E,然后调用函数 i o s D e v A d d(&l p t D e v【a n n e l】,d e v Hd r n a m e,l p t D
18、 r v N u m)将 I 建的设备加入 I O系统中。对于打印驱 动程序,重点 在于函数 l p t Wr i t e()的编 写,这个函数的实现可采用两抻方式。一种是中断方式,即将控制寄存器中的允许中断位置为 1,这样,打印机每打 印输 出一个字符 后,立即向主机发出中断请求信号,要求 发送下个 字符;主机方面只要在中断服务程序中实现 数 据传输即可,而不必循环查询打印机的“忙”信号。另一 种足查询方 式,用这种 方式时,主机不停地测试打印机的“忙”信号,当检 测到打 印机不忙时,便 向其发 送打 印数 据,若打印忙,则主机必须等待,直到打印机不忙。根据编 写打 印机驱 动程序的 两种方
19、 式,选 用查 询方 式 其流程如图 1。图 1 打印机输出数据流程图 4 P o s t S c r i p t 文件的生成 在、o r k s 操作 系统的开发环境 T o r n a d o下,软件包 Z I (1-?Z a f P fi n t e r 类 及 Z a f D i s p l a y类 提供 的 函数可完 成 I)o s t S i r i p t 文 件 的 生 成。Z a f P r i n t e r 类 继 承 Z a f D i s p l a v类 而 来,因此,在 Z a f P r i n t e r 中除了继 承来的图形 显示函数之 外,还定义了与打印
20、机接口相 关的函数,如 B e g i n J o b(),E n d J o b(),B e g i n P a g e(),E n d P a g e()等。在用 Z I N C自带的程序生成 P o s t S e r i p t 文件时,需注意 以下几点:(1)将自定义的颜色值加入颜色表中,在 i p r i n t c p P文 件(在目录-T o r n a d o t a r g e t s r c z i n c g e n e r i c 下)中,原来 的颜色表定义为:s t a t i c u n s i g n e d l o n g p s C o l o r T a
21、b l e【1 6】=2 0 0 4 8军 民 两 用 技 术 与 产 品f 4 1 维普资讯 http:/ 0 x 0 0 0 0 0 0 0 0L,0一Z AF _ J=L R B L ACK 0 x 0 0 O 0 0 0 8 0 L 1一Z AF CL R BL U E 0 x 0 0 0 0 8 0 0 0 L 2一Z AF CL R GREE N 0 x 0 0 0 0 8 0 8 0 I 3一Z AF CL R C YAN 0 x 0 0 8 0 0 0 0 0 L 4 一Z AF CL R RED 0 x 0 0 8 0 0 08 0 L 5一Z AF CL R MACENT
22、A 0 x o 0 8 08 o 0 0 L,6一Z AF _ J=L R_ BR0WN O x O O C O C0 C O L 7一Z AF C L R LI GHT GRAY 0 x 0 0 8 0 8 0 8 0 L,8一Z AF _ J=L R p AR K G R A Y 0 x 0 0 0 0 0 0 F F L 9一Z AF CL R L I GHT BL UE 0 x 0 0 0 0F F 0 0 L 1 0一Z AF CL R L I GHTGREE N 0 x 0 0 0 0F F F F L,1 1一Z AFC L R _ L I G H T C Y A N O x O
23、 O F F 0 0 0 0 L,1 2一Z A F !=L R _ L I G HT R E D 0 x 0 0 F F 0 0 F F L,1 3一Z AF L R_ L I GHTMAGEN TA 0 x 0 0F F F F 0 0 L,1 4一Z AF CL R,EL L 0W 0 x 0 0 F F F F F F L,1 5一Z AF J=L R WH I T E l:保留原有的 l 6 种颜色,再增加 4 8 种海图中的颜色:0 x 0 0 0 0 0 0 0 0 0 x 0 0 0 0 0 0 8 0,0 x 0 0 0 01)4 0 0,0 x 0 0 8 0 f f f
24、f,0 x 0 0 d 2 0 0 0 0,O x O O f f O 0 几 0 x 0 0 d c 8 0 0 0,0 x 0 0 c 0 c 0 c 0,O x O O ff c 7 a b,0 x 0 0 0 0 0 0 ff,O x O O O O f f O 0,0 x 0 0 c 8 f f f f,0 x 0 0 f f 0 0 0 0,0 x 0 0 f 6 ff,0 x 0 0 f f f f c 0,0 x 0 0 f f f f f f,0 x 0 0 f f 0 2 f(O x O O f m2 f d 0 x 0 0 ff 0 2 f d,0 x 0 0 P 0 0
25、 2 f d,0 x 0 0 f f 0 2 f d0 x 0 0 f f 0 2 f d 0 x 0 0 f f 0 2 f d,0 x 0 0 f f 0 2 f d,0 x 0 0f f 0 2 f d,0 x 0 0 f f 0 2 f d,O x O O f f 0 2 f d,O x O O f f 0 2 f d,0 x 0 0f f 0 2 f d,0 x 0 0 f m2f d,O x O O f f 0 2 f d,O x O O f f 0 2 f d,0 x 0 0 0 0 0 0 0 0,0 x 0 0 0 0 0 0 ff,0 x 0 0 3 3 a a 0 0,0
26、 x 0 0 6 0 c 0 c 0,0 x 0 0 b 0 3 0 3 0 0 x 0 0 c 0 4 0 c 0,0 x 0 0 8 0 4 0 4 0,0 x 0 0 a 0a 0 a 0,0 x 0 0 4 0 4 0 4 0,0 x 0 0 8 0 8 0 ff,0 x 0 0 8 0 f 0,O x O 01 6 e d f e,0 x 0 0 e 0 2 0 2 0,O x O O e O l O e O,O x O O f f f f 8 0,0 x 0 0 f f f f f f,这样颜色表中共有 6 4 种可用颜色。同时将 f o r(i n d e x:0:i n d e
27、 x1 6:i n d e x+)c o l o r T a b l e【i n d e x】:p s C o l o r T a b l e【i n d e x】;改为:for(i n d e x=0:i n d e x6 4;i n d e x+)c o l o r T a b l e【i n d e x】:p s C o l o r T a b l e【i n d e x】;(2)为使生成的 P o s t S c r i p t 文件尽可能的小,对原来海 图的画图程序做了一点改动。在原程序 中,多边形的绘制 是 通过画两点线 完成的,这样,生成 P o s t S c r i p t
28、文件 比较 大,可将 其改为直接调用画多边形的函数 P o l y g o n()。经过 这样的改动,生成的 P o s t S c r i p t 文件减小了很多,原来的一 页图生成的 P o s t S c r i p t 文件为 3 6 5 M,改动后不足 1 M。5 P o s t S c r ip t 文件在 V x w0 r k s 操作系统下的打印输出 要使 用打 印驱动 程序,首先要 调用 函数 l p t D e v C r e a t e (c b a r n a m e,i n t c h a n n e 1)为 L P T端口创建设备,其中端口号 由参数 c h a n
29、 n e l 指定,创建的设备的名称为 n a m e。只能为一 4 2 l 军 民 两 用 技 术 与 产 品 2 0 0 4 8 个端口号创建一个设备。创 建 设 备 成 功 之 后,主 机 就 可 以 向 打 印 机 发 送 P o s t S c r i p t 文件了,其程序流程如图 2。图 2 程序 流程 图 6 汉字打印输出的实现 在 v x Wo r k s 操作系统下,实现电子海图中汉字的显示 和打印输出功能的基本思路是:利用 Wi n d o w s 操作 系统中 的 T r u e T y p e 字库,根据需要显示汉字的 U n i c o d e 编码,在 T r u
30、 e T y p e字库 中找到该汉字的相应信息,按照 T r u e T y p e 字 库中存储的信息,将汉字显示或打印输出。T r u e r y p e 字库由很多表组成,它是用一些闭合的轮廓线 来描述每个字符的。若能够访问 T r u e T y p e 字库获得相应汉 字的描述信息,就能将汉字画出来。对于 T r u e T y p e 字库的 访问,网上有开放的资源可以实现,这就是 F r e e T y p e 2,它 为应用程序访问字库文件提供了统一的接 口,支持的格式 包 括T r u e T y p e,O p e n T y p e,T y p e l,C I D,C
31、F F,Wi n d o w s F O N F N T,X 1 1 P C F 等。要使用 F r e e T y p e,就要在相应的操 作系统下对源代码进行编译,生成一个库文件,然后在应 用程序中调用相应的 A P I 库函数。通过 F r e e Typ e 提供的库函数,应用程序可以访问 T r u e T v p e字库,根 据所得 到的 T r u e T y p e汉字信 息,就能实现 T r u e r v p e 字体的显示或打 印输出。但是 T r u e T y p e 字库的访 问是通过 U n i c o d e 编码进行的,也就是说,只有获得了字符 维普资讯 ht
32、tp:/ 的 U n i c o d e 编码,才能在 T m e T y p e 字库中得到该字符的描述信 息。在电子海图程序中,字符的 U n i c o d e 编码的获得是通过 查表实现 的。所谓的查表,是指将 国际汉字字符集中所有 U n i c o d e 绷,存-1 明 u n s i g n e d l o n g g b 2 3 1 2一unid a t a 【8 7 l I 9 4】,根据 字符 的区位码就可 以得到相应 的 U i c o d。编 码。例如区号为 q h,位号为 w h的字符的 U n i c o d e 编码就是 数组元素 g b 2 3 1 2一u n
33、id a t a q h一1 l 1 w h一1 的值。保存 所有 字 符的 U n i c o d e 编 码 的数 组 g b 2 3 1 2一u nid a t a 【8 7 l I 9 4 是在 Wi n d o w s 操作系统下转换得到的。具体的做 法是将 国际汉字字符集中的所有字符按照一定的格式保存 成文本文件,然后从文件中读 出每个字符,调用函数 M u l t i B y t e T o Wi d e C h a r()将其转换成 U n i c o d e 编码,并将其保存。根据 T r u e T y p e 字库中字符 的信息,显示或打 印输出字 符有两种途径:一种是调
34、用 F r e e T y p e 的 A P I 函数得到相应 字符的轮廓线,然后将其填充;另一种是调用 F r e e T y p e 的 A P I 函数直接得到字符的位图,再调用相应操作系统中的打 点函数实现位图的显示。由于第二种方法实现起来比较简 单,并且海图系统中的汉字不是很多,所以在海图程序中 使用的是第二种方法。在获得相应汉字的字形位图信息的基础上,实现汉 字 打印输出功能的关键是如何使用 P o s t S c r i p t 语言描述相应汉 字字形 的位图信息。在程序的设计 中,通过画 1 个像素长 度的直线采实现点的输 出,然后用一系列的点输 出位图信 息。其中,点的输出
35、用 P o s t S c ri p t 语言表示为:x v m ovet o x+l Y l i n e t o 根 据 汉 字 横 多 竖 少 的 特 点,可 以 对 以 上 产 生 的 P o s t S c r i p t 文件进行优化,如果 N点在条横线上,就直接 画 N长度的直线,用 P o s t S c r i p t 语言表示为:x Y mo v e t o x+N Y l i n e t o 这样,就将原来 的 N条 P o s t S c r i p t 语句转 化为 l 条语 句,从而减少了 P o s t S c r i p t 文件的长度。7 结束语 V x Wo
36、r k s 实时操作系统的特点决定了在此操作系统中开 发驱动程序的重要性。根据 需要配置相应的设备,并实现 硬件的驱动,是 V x Wo r k s 系统中进行软件设计与开发的前 提。本文介绍的电子海图系统打印功能的总体设计 思想及 实现方法,已在哈尔滨工程大学研制的某型 电子海 图系统 的二次开发中得到应用。参 考文献 l 孔祥营,柏桂枝编著 嵌入式实时操作系统 V x Wo r k s 及其开发 环境 T o r n a d o 北京:中国电力出版社,2 0 0 l:l 1 2 尚涛,施亮 实时操作系统 V x W o r k s 下 I O设备驱动程序的编 写技巧 微计算机信息,2 0
37、0 1;(8):2 4 2 6 3 张敛,孙枫 电子海图系统中的坐标变换研究 导航,1 9 9 6;3 2(4):757 9 4 张利 P c机打印口的原理及应用开发 北京:清华大学出版 社,1 9 9 5 7月 1 0 日,北 京 一 场 1 0年 不遏 的特 大暴 雨 灾 害天 气,使 人 们 对城 市预 警 和 应急 系统 再次 成 为 关注 的 焦点。灾 害的 发 生是 因 气 象预 报 的 落后 带 来的 对城 市应 急反 应速 度 的滞后。因此,提 高 气 象预报 的 准确 性 和及 时性 已经 迫在眉睫。需要大计 算量的数值 天 气预报 的 出现 和 发展 使 人们 的 希望逐步
38、成为现 实,但 由于其 巨 大的计算量,也成为数值天气预 报发展 的瓶 颈。高性能计算的出现,为气象 人 员进 行 准 确 的数值 天 气预报 提 供 了可能。高性能计算机具有强 大的运 算 处 理速 度、庞 大的数 据 存储功能、精密的逻辑分析能力 等特点,这为高性能计 算在气象 行 业 的 应 用打 下 了坚实 的基 础。作为 国内高性能计算机领头羊的 曙光 公 司,其 气 象专 用计 算机 是 国 内广 泛使 用的数 值 预报 系统。这 套 系统 采 用 了国际流 行 的 MMS 模 式当年此机型就应用于西藏 和贵 州省的气象服务,近年 又进 入 了山西气象局、成都 高原气象 研 究所、
39、国 家海 洋局 等 气 象 系 统,开辟 了一务科研和市场同步 走的先河。对于高性能计算在 气 象研 究 中的 具体 作 用,据 曙 光公 司高性能服务器事业部总经理介 绍:数值预报的原理其 实并不复 杂,大 气作 为地球 上 的 流体,遵 循运动定律、能量守恒、热力学 定律等一组物理定律,这组物理 定律 可用数学方程组表达 出来,其 中的要点是温、压、湿、风等 气象要 素与时间、地点、高度之 间的 相 互关 系,将 这 些数 据 输入 超级计算机进行相应的方程式计 算即可以得 出下一个时刻的气象 发 展 状 况。可 以预 见,高性 能计 算机在气象行业的成功应用,必 将会使我国的气象预报 水平提 高 到更高的层次。(蒋 英)2 0 0 4 8军 民 两 用 技 术 与 产 品f 4 3 维普资讯 http:/