Epson TM-U210PD 打印问题!!!(100分)

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

chenjianzu

Unregistered / Unconfirmed
GUEST, unregistred user!
我的POS系统中,写了如下代码控制打印机(Epson TM-U210PD)输出:
var F:TextFile;
begin
qrybillprint.Open();
ASSIGNFILE(F,'LPT1');
REWRITE(F);
WRITELN(F,' 出 品 小 票');
Writeln(F,'——————————————————————');
Writeln(F,' 台号:'+qrybillprint.FieldByName('fldDeskID').AsString+' '+ FormatDateTime('yyyy-mm-dd hh:mm:ss',Now()));
Writeln(F,' 帐单号: '+ qrybillprint.FieldByName('fldBillCode').AsString);
Writeln(F,'——————————————————————');
while not qrybillprint.Eofdo
begin
Writeln(F,' '+qrybillprint.FieldByName('fldItemCode').AsString+' '+qrybillprint.FieldByName('fldItemName').AsString);
Writeln(F,' '+'数量: '+qrybillprint.FieldByName('fldQty').AsString);
Writeln(F,'——————————————————————');
qrybillprint.Next();
end;
qrybillprint.Close();
CloseFile(F);
end;

当 qryBillPrint 返回的数据超过四个后,只能打印出四个数据,第五个就无法正常打印。
利用该打印机自检功能时发现在一行英文: Buffer Capacity 512 bytes (缓冲区??)
是不是说该打印机只能一次性接收 512 字节的数据,超过部分的数据就无法打印?
那应该怎么解决呢?
 
使用Printer.Canvas试试
 
用 Printer.Canvas 是要求装打印机的驱动的。而我直接控制端口就是想绕过驱动啊!
 
应该是打印机的设置问题,查一下说明书。
 
没有说明书啊,我测试用的打印机是全新的,刚开封的啊!
 
你的机器太快了, 打印的过程中需要等一等....
 
代码好像没有错,我也这样用的,没有问题。
有一个 发送数据后立即打印的选项,你设置一个看看。
 
function lptprint(prnStr:String):string;
Var
F:TextFile;
begin
AssignFile(F, 'LPT1');
Rewrite(F);
Writeln(F, prnStr);
CloseFile(F);
end;
我的程序中这样写了个函数!
每次调用后就CloseFile,那样就不会有问题了!
在调用的时候就是
……
lptprint(' 出 品 小 票');
lptprint('——————————————————————');
lptprint(' 台号:'+qrybillprint.FieldByName('fldDeskID').AsString+' '+ FormatDateTime('yyyy-mm-dd hh:mm:ss',Now()));
……
 
嘿嘿,而且我的程序中实际测试打印过20多条没有问题!再多就不是很清楚了!
我的绝对是实例噢!哈哈
 
[:(]还有点建议,您老大的程序写的实在有点难看,
先定义赋值给变量好了,干嘛拉的那么老长啊?
题外话,别介意啊!嘿嘿
 
to 江南大米:
谢谢你的建议,我会改进的!
程序改进中。。。。。
to xuziling20:
怎么设置为立即打印?打印机的设置中还是在程序中控制!
 
来来来再送你点好东西,够你喝一壶的了,哈哈
EPSON ESC/POS 控制命令
英文模式下的命令
代码 功能 描述 代码 功能 描述
LF 换行 0A(H)10(D) ESC m 局部切割
CR 回车 0D(H)13(D) ESC o 印章
ESC SP 设置右边界 ESC q 释放纸
ESC ! 设置打印方式 ESC r 选择打印颜色
ESC * 设置位映射方式 ESC z 设置或取消两页并行打印
ESC @ 初始化打印机 ESC BEL 蜂鸣器ON/OFF
ESC R 选择国际字符子集 ESC c5 禁止/使能面板开关
ESC d 打印及N行进纸 ESC c6 禁止/使能ON-LINE开关
ESC t 选择字符码表 ESC p 产生指定脉冲
ESC l 选择或取消倒过来的字符集 ESC V 发送打印机状态
ESC c0 选择打印页 ESC ~ LED ON/OFF
FF 打印送出单页 HT 水平TAB
RS 流水TAB ESC % 选择或取消用户自定义字符集
ESC 2 选择行间距为1/6英寸 ESC & 定义用户自定义字符集
ESC 3 设置行进为最小间距 ESC D 设置TAB位置
ESC < 返回行首 ESC i 全切割
ESC C 设置单页长度 ESC f 设单页等待时间
ESC F 选择或取消单页退纸区 ESC e 打印病退回N行
ESC J 以最小间距进行打印和进纸 ESC c4 选择打印纸及检测器(终止打印)
ESC K 以最小间距进行打印和退纸 ESC c3 选择纸结束信号输出
ESC U 选择或取消单向打印 ESC c1 选择行间距
中文模式下的命令
代码 功能 描述 代码 功能 描述
FS &amp; 选择中文字符模式 FS – n 设置中文字符下划线模式开关
FS . 取消中文模式 FS ! n 选择中文字体

 
"江南大米"的控制指令是很好呀!
可惜没有告诉怎么将这些指令发送到打印机呀?
我有一个DEMO,要就留下E-MAIL。
 
to 江南大米:
更新程序后更惨!原来最多可以打印四行的,现在只能打印二行了!!!
 
to duancy
可以发个例子给我吗?
b3411080@21cn.com
 
我认为应该加一个延时。
 
chenjianzu兄,请教个问题,你通过这种方式打印出来的文件,字够大吗?能够控制字体的大小吗?
 
to bfox:
不行,我没有能够控制字体的大小,但因为是出品的小票,字体小点无所谓,节约成本嘛! [:D] 用户暂时没有对字体的大小提出意见! [8D]
to duancy:
给我发一个DEMO,多谢了! chenjianzu@163.com
 
听!
问:
怎么控制票证打印机自动退纸?见题:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2371697
to duancy
可以发个例子给我吗?
wcany@sina.com
或 wcany@tom.com
 
发了好几次,终于发出去了。请查收!记得给分。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
I
回复
0
查看
627
import
I
后退
顶部