一个POS机打印的问题~~~~~~~救命呀~(100分)

  • 主题发起人 主题发起人 enje0
  • 开始时间 开始时间
E

enje0

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么样可以给POS58打印机发送指令。
如:打印并换行:
LF 打印并换行:
格式 十六进制:0A
如果要进纸我发送 Writeln(PosFile,#$0A);就可以了。这是单个参数的。如果是多个参数我怎么做:
如:字符打印命令:
ESC ! 设置字符打印方式
格式 十六进制:1B 21 N (ESC!n 用于选择打印字符的大小。N的默认为0,即不放大)可是这个我在程序中应该怎么发送?
其实我就是想打印出来这种效果:
XXXXX销售清单 (黑体 加粗 5号)
-----------------------
商口名称 数量 单位 金额 (黑体 小五)
.......
-----------------------
共N条 合计:XX元 (黑体 小五)
实收:XX元
并且打印的纸张高度要于适合于销售的笔数。打完就自动不再多走纸。
那位可爱的,善良的大大,给点提未,或给写一下大概代码。小生感谢不尽呀~~~[:(]
 
连着写呀!
例如#$0A#$0B
 
//在打印处回车
procedure TFrmSy.BitBtn3Click(Sender: TObject);
var step,j,k:integer;//j空格
F:TextFile;
PDStr:string;
begin
PDStr:='***********食品有限公司'+chr(10)+'店名:'+edit3.Text+char(10)+'日期:'+formatdatetime('yyyy"年"mm"月"dd"日"
hh:mm AM/PM',now)+char(10);
PDStr:=PDStr+'品名 单价 数量 金额'+chr(10);
for Step:=1 to maxrowdo
begin
//处理品名的长度
if (length(stringgrid1.Cells[1,step])<14) then
begin
j:=14-length(stringgrid1.Cells[1,step]);
PDStr:=PDStr+stringgrid1.Cells[1,step];
for k:=1 to jdo
PDStr:=PDStr+' ';
end else
PDStr:=PDStr+copy(stringgrid1.Cells[1,step],1,14);
//处理单价的长度
if (length(stringgrid1.Cells[2,step])<8) then
begin
j:=8-length(stringgrid1.Cells[2,step]);
PDStr:=PDStr+stringgrid1.Cells[2,step];
for k:=1 to jdo
PDStr:=PDStr+' ';
end else
PDStr:=PDStr+copy(stringgrid1.Cells[2,step],1,8);
//处理数量的长度
if (length(stringgrid1.Cells[3,step])<3) then
begin
j:=3-length(stringgrid1.Cells[3,step]);
PDStr:=PDStr+stringgrid1.Cells[3,step];
for k:=1 to jdo
PDStr:=PDStr+' ';
end else
PDStr:=PDStr+copy(stringgrid1.Cells[3,step],1,3);
//处理金额的长度
if (length(stringgrid1.Cells[6,step])<7) then
begin
j:=7-length(stringgrid1.Cells[6,step]);
PDStr:=PDStr+stringgrid1.Cells[6,step];
for k:=1 to jdo
PDStr:=PDStr+' ';
end else
PDStr:=PDStr+copy(stringgrid1.Cells[6,step],1,7);
PDStr:=PDStr+chr(10);
end;
PDStr:=PDStr+'^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^'+chr(10);
PDStr:=PDStr+'合计人民币:'+edit5.Text+'元'+chr(10);
PDStr:=PDStr+'收银员:'+edit9.Text+char(10);
PDStr:=PDStr+'资讯管理系统由资讯部制作';
PDStr:=PDstr+chr(10)+chr(10)+chr(10)+chr(10)+chr(10)+chr(10)+chr(10)+chr(10)+chr(10);
AssignFile(F, 'LPT1');
Rewrite(F);
Write(F, PDStr);
CloseFile(F);
bitbtn1.SetFocus;
end;
 
liqh9672,先谢一下~
这种方法我已用过。我想你有点没有理解我的意思。
是这样的。我是想让标头可以是黑体加粗五号字,这样直接写到LPT1端口,好像不可以改变字体。有没有可以即改变字体又可以控制打印高度的方法。
 
各位大大有没有办法呀?给我出点点子呀~~~~~~~~~~~强烈要求“点子牛”出场~~HOHO~
 
直接操作端口的好像是不能改变字体的!
你看看打印指令中有没有!
 
问题已解决。多谢名位
 

Similar threads

后退
顶部