我的程序里有这样一个问题:
一个卖衣服的程序,打印机是epson tm300,钱箱是posiflex cr3100
钱箱接在打印机上。
当每一张单完成之后,在打印之前要先弹出钱箱,然后打印。
根据手册,我是这样写的:assignfile(myprn,'LPT1');
rewrite(myprn);
write(myprn,chr(27),chr(112),chr(0),chr(50),chr(200));//弹钱箱的控制指令
system.CloseFile(myprn);然后是打印代码....在打印机电源打开的时候,运行是正常的,但是当打印机电源关闭的时候,
钱箱没有反应,程序死机。我想知道有没有什么方法可以判断打印机是否打开了电源,这样我就可以
选择跳过这段代码。
一个卖衣服的程序,打印机是epson tm300,钱箱是posiflex cr3100
钱箱接在打印机上。
当每一张单完成之后,在打印之前要先弹出钱箱,然后打印。
根据手册,我是这样写的:assignfile(myprn,'LPT1');
rewrite(myprn);
write(myprn,chr(27),chr(112),chr(0),chr(50),chr(200));//弹钱箱的控制指令
system.CloseFile(myprn);然后是打印代码....在打印机电源打开的时候,运行是正常的,但是当打印机电源关闭的时候,
钱箱没有反应,程序死机。我想知道有没有什么方法可以判断打印机是否打开了电源,这样我就可以
选择跳过这段代码。
量,并利用这个全局变量来与打印机进行打印操作。
利用P r i n t e r 来实现打印的一般过程如下:
1) 调用B e g i n D o c 过程向打印机发送一个打印作业(此时还没有在打印机上开始打印)。
2) 通过一个Te x t 变量或调用C a n v a s 对象方法建立打印输出。
3) 调用E n d D o c 过程结束当前的打印作业,该打印作业开始在打印机上打印。
4) 如果出现问题,调用A b o r t 过程取消当前打印的作业。
下面是T P r i n t e r 类的几个常用属性:
• Aborted 判断是否中止打印作业。
• Canvas 画布属性。
• Capabilities 当前打印机驱动设备的设置信息。
• Copies 打印的份数。
• Fonts 字体属性。
• Handle 打印机句柄。
• Orientation 纸张的方向:横向或纵向。
• PageHeight 纸张的高度。
• PageNumber 当前打印的页数。
• PageWidth 纸张的宽度。
• PrinterIndex 打印机属性中当前打印机的索引值。
• Printers 系统中安装的所有打印机。
• Printing 标识是否正在进行一个打印作业。
• Title 打印管理器中显示的打印作业的名称。
下面是T P r i n t e r 类的几个常用函数:
• Abort 中止正在打印的打印作业。
• BeginDoc 向打印机发送一个打印作业。
• EndDoc 结束当前的打印作业并关闭文本文件变量。
• NewPage 开始新的一页并增加P a g e N u m b e r 属性。
• Refresh 更新字体和打印机的属性。
通常,在打印前要进行打印预览。在打印预览的时候,往往要将打印的结果在屏幕上显示
出来。这时,就要注意屏幕的分辨率和打印机的分辨率的差别了。读取屏幕信息可以通过全局
变量S c r e e n 来实现,S c r e e n 为T S c r e e n 类的一个实例,在创建工程的时候就自动创建了,并在程序开始运行时读取了屏幕的一些设置信息。
也就是我直接向lpt1写数据的那条代码上。如果打印机打开了,什么事也没有
如果没开,就死机,用try...except...end无法搞定。拜托各位了。
没人会么?
我在csdn和大富翁论坛都搜索了一下,也有人和我提同样的问题
但是都没得到答案。
自己顶一下。
不行的话定期来顶
现象就像是死机了,但这时候马上打开打印机电源,
就会看到钱箱弹出来,就没事了。
我有windows api的书,但是看了一遍打印机的函数,其实基本上delphi都已经
封装了,但是关键是都是针对“安装”在windows中的打印机的。我试了一下,
都没什么效果。大家都知道在windows中可以随便安装任意不存在的打印机吧?
本来卖pos机的给了一个开钱箱的程序,dos程序,这个程序无论打印机
是否打开电源,都不会死机。
但是如果在程序中调用它的话,钱箱的反应速度太慢。这就是我为什么
自己写了开钱箱的代码的原因。
但是从这个程序来看,应该是有办法解决的。
可否详细说一下,比如是哪个函数,我也好去查查资料。
谢谢。
对于打印口LPT有一个脚,好象是DSR,只要打印机一上电就有效,通过API GetCommState取得一个DCB结构的数据,其中有各个脚的状态..
就告诉我一声:[email protected]
告诉我是怎样解决的哦!THANK YOU