当前位置:文档之家› 便携式微型打印机 开发常见问题及解答

便携式微型打印机 开发常见问题及解答

VMP01 PLUS便携式微型打印机开发常见问题及解答(V1.0)一、什么样的终端能驱动VMP01 PLUS便携式微型打印机打印VMP01PLUS分为两个型号:VMP01-PI、VMP01-PB。

其中VMP01-PI的数据通讯接口有:RS232串口、RAW-IR(原始红外)、IrCOMM(IrDA协会制定的红外虚拟串口);VMP01-PB的数据通讯接口有:RS232串口、Bluetooth(蓝牙虚拟串口)。

原则上只要手持数据终端(如数据采集器、PDA、手机、抄表机等)上有其中的一种就可以驱动VMP01微型打印机打印。

二、怎样通过手持数据终端驱动VMP01 PLUS微型打印机VMP01PLUS微型打印机不是一种通用的windows外部打印机设备,所以在windows 下并不能通过打印机驱动程序(peripheral device driver)实现在WORD、EXCEL、IE等等软件的打印功能。

而需要开发人员根据具体的客户需求编写驱动打印机的程序。

不论您使用的是VMP01 PLUS打印机的哪种端口(RS232、RAW-IR、IrCOMM、Bluetooth),对于手持数据终端(如数据采集器、PDA、手机、抄表机等)而言,VMP01便携式微型打印机都是一个外部串行数据接受设备,所以开发者开发微型打印机打印软件时,只需要打开对应的串行端口,然后向打印机发送打印命令和打印内容,在微型打印机接受到数据后,就会打印。

二、能否给出手持终端上驱动VMP01 PLUS微型打印机的程序流程基本的驱动打印机的程序流程是这样:打开串口Æ初始化打印机Æ向串口写入打印数据Æ关闭串口对于所有的手持终端,如果具有串行数据通讯接口,都会提供(或者开发者能够编写)如下几个函数(注:因对每个开发平台的函数名或参数不尽相同,这里给出的是一组虚拟函数,采用C语言语法):打开串口函数:Port: 串行端口号, Baudrate: 波特率CommOpen(Port,Baudrate);//向串口写入字符串:Port: 串行端口号, Block: 准备向 CommWrite(Port,Block,Length)//打印机发送的字符串, Length: 字符串长度关闭串口:Port: 串行端口号。

CommClose(Port);//有了这几个函数,我们就可以便携驱动打印机的程序了:例:(假设目前用于与打印机通讯的串行端口号为1,波特率为9600,采用C语言语法)注:建议开发者配合《VMP01 PLUS微型打印机开发手册》看如下代码。

/*************** Example Start *****************/unsigned char Str[1024];//打开串口----------------------------------------CommOpen(1,9600);sleep(50); //延时50ms//初始化打印机(必需)------------------------------Str[0]='\x1B'; //或Str[0]=27;Str[1]='\x40'; //或Str[0]=64;//向打印机发送初始化命令,参见开发手册4.1.1 ESC @ CommWrite(1,Str,2);//设置打印字符尺寸为两倍高两倍宽---------------------Str[0]='\x1D';Str[1]='\x21';Str[2]='\x11';//向打印机发送倍高倍宽命令,参见开发手册4.2.2 GS ! CommWrite(1,Str,3);//打印"**标题**"这几个字---------------------------strcpy(Str,"**标题**");Str[4]='\x0D';Str[5]='\x0A';CommWrite(1,Str,10);//打印“**标题**”这几个字,//注意:如果只发送“××标题××”这几个字,打印机是不//会打印的,必须发出命令\x0D\x0A后,打印机才会将其打//印出来。

详细请见《VMP01 PLUS微型打印机开发手册》//设置打印字符尺寸为单倍高单倍宽(原始大小)------------Str[0]='\x1D';Str[1]='\x21';Str[2]='\x0';//向打印机发送单倍高单倍宽命令CommWrite(1,Str,3);//打印内容----------------------------------------strcpy(Str,"用户需要打印的内容1\r\n");//向打印机发送打印内容CommWrite(1,Str,strlen(Str));strcpy(Str,"用户需要打印的内容2\r\n");//向打印机发送打印内容CommWrite(1,Str,strlen(Str));strcpy(Str,"用户需要打印的内容3\r\n");CommWrite(1,Str,strlen(Str));//向打印机发送打印内容//关闭串行端口-------------------------------------CommClose(Port);/**************** Example END *******************/打印出的效果如下:三、WINCE系统的PDA怎样驱动VMP01 PLUS便携式微型打印机WINCE系统的PDA如果使用使用红外端口驱动VMP01-PI微型打印机,那么建议用户使用IrCOMM,而不是用RAW-IR或VIR协议(其中的区别请见【五、RAW-IR、VIR和IrCOMM 有什么区别】)。

因为WINCE系统的PDA如果具有红外接口的话,那么一般就会支持IrCOMM虚拟红外端口。

我们提供了WINCE系统下用IrCOMM驱动VMP01微型打印机的范例代码,可从我公司网站()上下载。

如果用蓝牙接口驱动VMP01-PB微型打印机打印的话,那么需要使用蓝牙虚拟串口。

因为WINCE的版本及衍生版本比较多,蓝牙虚拟串行端口号各不相同,如果要使用的话,请咨询各PDA生产厂商。

驱动VMP01微型打印机打印的流程请见【二、能否给出手持终端上驱动VMP01微型打印机的程序流程】。

四、PALM系统的PDA或手机怎样驱动VMP01 PLUS便携式微型打印机PALM系统从V5 .0起开始支持IrCOMM和Virtual Bluetooth port。

如果用红外驱动微型打印机的话,PALM V5.0以上的PDA或手机建议使用IrCOMM,PALM V5.0以下的手机可以使用RAW-IR和VIR驱动VMP01便携式微型打印机。

PALM V5.0系统提供了几个函数可以很好地支持IrCOMM和虚拟蓝牙串口:SrmOpen(PortID,Baud,PortIdP);// PortID=sysFileCVirtIrComm虚拟红外端口// PortID=sysFileCVirtRfComm 虚拟蓝牙端口SrmSend(); //发送数据SrmClose(); //关闭端口驱动VMP01 PLUS微型打印机打印的流程请见【二、能否给出手持终端上驱动VMP01微型打印机的程序流程】。

五、RAW-IR、VIR和IrCOMM有什么区别VIR协议和IrCOMM都是基于IrDA物理层规范的红外通讯协议。

而RAW-IR则是没有包含软件协议的。

IrCOMM协议是IrDA协议的一个子集。

很多PDA都支持IrCOMM协议,如WINCE、POCKET PC、PALM;还有手机。

但是IrCOMM协议是一个非常复杂的协议,所以只有非常具有技术实力的公司的产品中才包含此协议。

但IrDA协会规定的IrDA物理层规范在硬件上非常容易实现,所以很多公司的产品有都包含此硬件,通常包含此硬件的产品都宣称支持IrDA,实际上应被称为可以进行原始红外(RAW IR)数据通讯。

但如果只是简单地使用原始红外来进行数据通讯的话,因红外光易受到干扰,所以很容易造成误码。

为避免误码,就需要通过软件协议对接受到的数据进行校验,然而IrCOMM又太复杂,那么就需要一个简单的红外数据通讯协议,VIR正是在这种情况下出现的。

VIR协议简单,对于熟悉通讯协议的人来说,这是一个非常容易通过编程来实现的软件协议,虽然简单,但是该协议同样可以校验数据的正确性,支持重发,不会丢掉数据,所以VIR协议应该是不支持IrDA协议栈但可以进行原始红外数据通讯功的终端(例如各种条码数据采集器、IC卡手持终端等等)的一个很好的选择。

六、哪些手持设备可以使用IrCOMM驱动VMP01 PLUS便携式微型打印机各种带红外数据传输功能的WINCE、SMARTPHONE终端,包括POCKET PC。

带红外数据传输功能PALM V5.0以上PDA和手机。

还有各种宣称支持IrCOMM的手机及数据采集器(如DT900)。

七、GBK与GB2312有什么区别GBK是一个汉字编码标准,全称《汉字内码扩展规范》,于1995 年制定。

GB2312是1980年国家制定的汉字内码规范。

GBK标准中收录了2万多汉字及符号,因其最早被WINDOWS采用,所以其应用范围非常广。

GB2312中收录了6千多汉字及符号,通常所说的一、二级汉字库就全部包含在GB2312中。

虽然GB2312包含了绝大部分的常用简体汉字,但是由于中文的复杂性,所以GB2312目前已经越来越不能适应需要了,特别是因为人名、地名中包含的很多字GB2312中都没有,如朱镕基的‘镕’字,GB2312中就没有包含,这样导致很多混乱。

正因为GB2312的这些问题,国家标准化委员会又制定了GB13000,GB13000制定的原则与GB2312不同,GB13000以国际化为目标,该标准编码参照了Unicode 2.0 标准编码,与GB2312完全不兼容,因早期的计算机中的汉卡采用了GB2312,无法顺利向GB13000过渡,所以GB13000变成了一个纸面上的标准,无法推广。

有了以上经验,国家标准化委员会制定了GBK规范,他兼容GB2312标准,同时在GB2312标准的基础上扩展了GB13000包含的汉字及符号,但编码修改了,该标准一经推出,就被WINDOWS95所采用(另一种说法是微软协助制定了此标准,这也可以印证为什么GBK 标准一直没有出现在官方的标准目录中)。

相关主题