请教:在delphi中如何发送打印机控制码? ( 积分: 200 )

  • 主题发起人 主题发起人 cnetwei
  • 开始时间 开始时间
C

cnetwei

Unregistered / Unconfirmed
GUEST, unregistred user!
请教:在delphi中如何发送打印机控制码?
在我的打印机操作面板上有一个功能按钮——换行,执行后打印机向前走纸0.5cm,我想在程序中调用这个换行功能,请高手指点如何实现?
windows提供的escape可以给打印机发送控制码,其定义如下:
int Escape(
HDC hdc, // 打印机的handle
int nEscape, // escape 函数
int cbInput, // 输入结构的大小
LPCSTR lpvInData, // 输入结构的指针
LPVOID lpvOutData // 输出结构的指针
);
在这个定义中,第二个参数nEscape,我不清楚要传什么呢?说明文档说提到,这个参数必须是一个预先定义好的,windows下提供了如下的几个定义:ABORTDO;ENDDOC;GETPHYSPAGESIZE;GETPRINTINGOFFSET;GETSCALINGFACTOR;NEWFRAME;NEXTBAND;PASSTHROUGH;SETABORTPROC;STARTDOC;其中好像没有我需要的,用于换行的。
在win32api的说明文档中也提到,对于常用的print escape都已经定义对应的方法,如:AbortDoc,EndDoc等,没有对应的用于换行的方法。
同时也了解到,如果需要发送一些私有的print escape 需要用到extEscape函数,该函数的定义如下:
int ExtEscape(
HDC hdc, //设备Handle
int nEscape, // escape function
int cbInput, // number of bytes in input structure
LPCSTR lpszInData, // pointer to input structure
int cbOutput, // number of bytes in output structure
LPSTR lpszOutData // pointer to output structure
);
同样的,在这个函数的定义中,我不知道需要都要传入那些参数呢??

我的环境是delphi7.0/winXP/EPSON LQ-1600KIII
请高手们关注。
 
请教:在delphi中如何发送打印机控制码?
在我的打印机操作面板上有一个功能按钮——换行,执行后打印机向前走纸0.5cm,我想在程序中调用这个换行功能,请高手指点如何实现?
windows提供的escape可以给打印机发送控制码,其定义如下:
int Escape(
HDC hdc, // 打印机的handle
int nEscape, // escape 函数
int cbInput, // 输入结构的大小
LPCSTR lpvInData, // 输入结构的指针
LPVOID lpvOutData // 输出结构的指针
);
在这个定义中,第二个参数nEscape,我不清楚要传什么呢?说明文档说提到,这个参数必须是一个预先定义好的,windows下提供了如下的几个定义:ABORTDO;ENDDOC;GETPHYSPAGESIZE;GETPRINTINGOFFSET;GETSCALINGFACTOR;NEWFRAME;NEXTBAND;PASSTHROUGH;SETABORTPROC;STARTDOC;其中好像没有我需要的,用于换行的。
在win32api的说明文档中也提到,对于常用的print escape都已经定义对应的方法,如:AbortDoc,EndDoc等,没有对应的用于换行的方法。
同时也了解到,如果需要发送一些私有的print escape 需要用到extEscape函数,该函数的定义如下:
int ExtEscape(
HDC hdc, //设备Handle
int nEscape, // escape function
int cbInput, // number of bytes in input structure
LPCSTR lpszInData, // pointer to input structure
int cbOutput, // number of bytes in output structure
LPSTR lpszOutData // pointer to output structure
);
同样的,在这个函数的定义中,我不知道需要都要传入那些参数呢??

我的环境是delphi7.0/winXP/EPSON LQ-1600KIII
请高手们关注。
 
好象KIII的打印机随机有一本说明书专门说命令集的,你看一下。
 
是的,我查询了 epson的程序员参考手册,其中控制码的 值分别为,27 和 10 ,但我以以下的方式处理时,总是会走一页纸,根本达不到换行的效果,
AssignPrn(textFile);
Rewrite(textFile);
WriteLn(textFile,chr(27) + chr(10));
以上这些代码应该就是 直接写打印机吧??为什么达不到预期的效果。
 
请大家关注阿,为什么这么冷漠呀??
 
不知道你查的书是不是和我的不一样,我这里查到的是
换行
ASCII码 LF
十进制 10
十六进制 0A
解释:
这条命令被接受后,打印缓冲器内的数据立即被打印,且纸按当前设定的行距走纸一行。
 
可是我的打印机 打印出来一个小小的,怪异的符号,没有换行,只是整页的走纸了。
我写向端口的值是,ESC + LF,也就是 chr(27) + chr(10),
不知道我这样写:WriteLn(textFile,chr(27) + chr(10));
对么?
另外我想说的是,我是使用USB接口,连接的打印机,这会有影响么??
 
后退
顶部