gzyueqian
13352868059
首页 > 新闻中心 > > 正文

DPU-3445位图驱动程序的设计与实现

更新时间: 2009-07-17 22:00:13来源: 粤嵌教育浏览量:1856

 1 引言
  Dpu-3445是Seiko Instrument公司开发的便携式热敏打印机,它体积小,重量轻,只有250克左右,打印宽度达104cm,点密度为8dot/mm,速度达50mm/s,有4KB的输入缓冲区。由于这些特点,我们在设计便携式产品中选择它作为系统的输出设备。

  2 系统实现

  2.1 接口描述
  DPU-3445可以通过串行RS-232接口或IRDA接口同计算机相连。当采用RS-232接口时,信号电平-3到-15V为逻辑‘1’,+3到+15V为逻辑‘0’。波特率可选为1200,2400,4800,9600,19200,38400bps,数据长度可选7或8位。停止位可选1或2位。校验位可选奇校验,偶校验或无校验。与主机(标准PC机)接口连接如图1。

 

 

  基于IRDA接口时,传送距离为0.05m到1m,传送角度±15°,脉宽典型值为1.63微秒,波特率为9600至115200bps,LSAP地址固定为7。
  Dpu-3445有输入缓冲区和行缓冲区。当它从主机接收数据时,将数据先存放到输入缓冲区中,然后再从输入缓冲区将数据取出放入行缓冲区中并执行命令。

  2.2 位图输出驱动程序的实现
  驱动程序的一个主要功能就是利用I/O缓冲,对数据进行加工,包括格式处理和编码的转换。Dpu-3445提供了一个位图处理命令,其格式为:ESC+”*”+m+nl+nh+DATA
  写成代码方式为:1bH+2aH+m+nl+nh+d1+d2++dk

  m表明位图方式:m=0,为8点单密度,m=1,为8点双密度,m=32,为24点单密度,m=33,为24点双密度。水平方向的点数为:256×nh+nl。d表示位图的数据,8点位图模式时k=(256×nh+nl),24点模式时k=(256×nh+nl)×3。其数据序列如图2。

 

 

  然而,BMP文件的数据存储格式与Dpu-3445的数据存储序列不一致。BMP文件可看成由三部分组成:位图文件头(bitmap-file header)、位图信息(bitmap-infor-mation)和位图字节阵列。位图文件头可用BITMAP-FILEHEADER来定义:

  位图信息用BITMAPINFO结构来定义,它由位图信息头和彩色表组成,形式如下:



  彩色表之后是图像数据字节阵列。图像的每一扫描行由表示图像像素的连续的字节组成,每行的字节数取决于图像的颜色数目和用像素表示的图像宽度,
扫描行是由底向上存储的,也就是说,阵列的个字节表示位图左下角的像素,而一个字节表示位图右上角的像素。
  以黑白BMP文件为例,位图的宽和高(像素)分别存放在第0x12~0x15与0x16~0x19字节处,数据字节阵列从0x3e开始存放。当用Dpu-3445输出时,由于阵列排序不一致,所以从位图文件中读出的数据必须进行转换,变换成Dpu-3445位图处理命令所需要的格式才能输出。下面给出从黑白BMP数据字节阵列到DPU-3445下24点方式打印数据序列转换部分的C语言源代码。


  每调用一次上面所给的C语言源函数arrange(),将可转换24×128bit的像素点阵数据,如对于128×120的位图,应调用5次。若转换像素位图到DPU-3445下8点方式,则在上面程序段中只需将BITMAP-MODE24换成BITMAPMODE8(其值为8)即可。

 
 3 结束语
  在我们的产品设计中使用了DPU-3445作为位图的输出设备,其驱动程序中的数据转换部分采用如上所述的代码,取得了令人满意的效果,达到了设计目标。

免费预约试听课