打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
!!开钱箱通用指令
quasiceo
>《powerbuilder》
2016.05.30
关注
[delphi]
view plain
copy
// 支持开钱箱的打印机有EPSON 210PD/220、STAR POS58、DIY-POS POS58N
function
openmoneybox:
boolean
;
// 开钱箱 Epson210D+D7+Win2k测试通过
Var
F:TextFile;
pdStr:
string
;
pport:
string
;
// 打印机端口,开钱箱端口
prin:
string
;
// 打印机类型
cd:
string
;
begin
cd:=trim(sini
.
ReadString(
'Pos'
,
'use_pos_pd_led_omb'
,
''
));
// 使用客显开钱箱
if
cd=
'1'
then
// // diy 川田客显开钱箱,使用客显开钱箱
begin
pdstr:=chr(
2
)+chr(
77
);
// {控制顾客显示屏开钱箱指令}
com_send(Pchar(PDStr),Length(PDStr));
exit;
end
;
try
pdStr:=Chr(
27
)+
'p'
+Chr(
0
)+Chr(
60
)+Chr(
255
);
// 开钱箱 在win2000下,TP POS58
// pdstr:=chr(27)+chr(112)+chr(0)+chr(60)+chr(255); // 在DOS下开钱箱 RP-POS58NL-P、RP-POS58NS-P、EPSON 210、TP-POS58
// CHR(27)+"p"+CHR(07); // Star SP312 (Receipt)->Star SP2000系列的打印机
pport:=sini
.
readstring(
'Pos'
,
'posprinterport'
,
''
);
// 打印机端口
prin:=sini
.
ReadString(
'Pos'
,
'posprintertype'
,
''
);
// 打印机类型
if
prin=
'STAR SP2000兼容针打'
then
pdstr:=CHR(
27
)+chr(
112
)+CHR(
07
);
// Star SP312 (Receipt)->Star SP2000系列的打印机
// STAR SP2000兼容针打
assignFile(F,
'LPT1'
);
// assignfile(f,pport);
Rewrite(F);
Write(F,pdStr);
CloseFile(F);
Except
application
.
messagebox(
'对不起,打开钱箱失败,请检查[打印机类型或设置]!'
+#
13
+#
13
+
'系统提示:请先检查[打印机是否没纸或打印机连接线]!'
,
pchar
(syscaption),mb_ok+mb_iconerror);
End;
end
;
通用:
其实开钱箱是有几种,一:通过钱箱卡来驱动 二:通过打印机 三:通过顾显 四:通过主板接口,每种都不一样,以下是通过打印机来驱动的:
var
F:TextFile;
pdStr:
string
;开钱箱指令
begin
pdStr:=#
27
+#
112
+#
0
+#
100
+#
100
;
//很通用
assignFile(F,
'LPT1'
);
Rewrite(F);
Write(F,pdStr);
CloseFile(F);
end
;
[delphi]
view plain
copy
转:pos软件打印及开钱箱
PowerBuilder下使用并口控制打印机
使用PowerBuilder编程的人员如果需要在Windows下使用并口打印机逐行打印,而又不想使用Windows的驱动程序。我们这里提供一种不需要任何外来的元件的方法。
integer
li_FileNum
String PDStr
li_FileNum = FileOpen("LPT1",LineMode!, Write!, LockWrite!, Append!)
PDStr=”PowerBuilder Printer
on
LPT1”
FileWrite(li_FileNum,PDStr)
FileClose(li_FileNum)
如果需要控制并口的POS58打印机开钱箱,使用以上方法是不可打开的,因为PowerBuilder会把chr(
0
)认为毫无意义而给屏蔽掉,所以就只有使用调用外部文件的方法来实现。把附带的OpenLptDoor
.
exe文件复制到程序的目录下,然后在PowerBuilder下调用以下语句就可以打开了,其实该文件执行的指令就是Chr(
27
)+”p”+Chr(
0
)+Chr(
60
)+Chr(
255
):
Run("OpenLptDoor
.
exe")
如果OpenLptDoor
.
exe文件保存在别的位置,就要在调用语句中加入文件存放路径。
PowerBuilder环境下控制串口顾客显示屏
使用PowerBuilder编程的人员如果需要在Windows下使用串口控制顾客显示屏或串口打印机,就需要使用外来方式。我们这里提供了API_COM
.
DLL这个链接库供调用。
首先把API_COM
.
DLL文件复制到编写的源程序目录下,接着在程序中声明调用的三个函数:
1
、 打开源程序,然后选择下拉菜单“Declare”,接着从菜单中选择“Local External Functions”。
2
、 此时出现“Declare Local External Functions”窗口,在窗口中输入如下内容:
function
Boolean com_init(Int com,int baud)
library
"api_com
.
dll"
function
Boolean com_rest()
library
"api_com
.
dll"
function
Boolean com_send(
string
buf,int len)
library
"api_com
.
dll"
按“OK”以后即对函数声明完毕。
3
、 现在就可以在程序中调用函数了。首先打开窗体的脚本编辑器,选择“show”事件,写入如下内容,该内容表示窗体显示时打开端口:
if
not
com_init(
1
,
2400
)
then
messagebox("错误","COM1打开错误!",exclamation!)
end
if
4
、 接着选择“close”事件,写入如下内容,该内容表示窗体关闭时关闭端口:
com_rest();
5
、 现在可以返回主窗体了,在窗体上增加一个按钮,打开该按钮的脚本编辑器,写入如下内容:
string
PDStr
PDStr=Char(
27
)+Char(
81
)+Char(
65
)+"
1234.56
"+Char(
13
);
com_send(PDStr,Len(PDStr))
6
、 按照如上操作,就可以向串口发送显示数字的指令了,如果需要实现其他的功能,只需要对PDStr进行赋值就可以了。
下面是控制顾客显示屏显示“总计”灯的命令:
PDStr=Char(
27
)+Char(
115
)+”
2
”
该代码还可以控制POS58打印机打印,给PDStr如下赋值就开始打印了:
PDStr=”PowerBuilder Printer
on
COM1”+Char(
10
)
使用打印开钱箱:
Chr(
27
)+”p”+Chr(
0
)+Chr(
60
)+Chr(
255
)
使用调用外部文件的方法来实现。把附带的OpenLptDoor
.
exe文件复制到程序的目录下,自定义打印按扭:
Report(...)andRun(docdir +"OpenLptDoor
.
exe")
[delphi]
view plain
copy
1
、控制POS机的客户显示屏
procedure
TFrmMain
.
ShowMoney(Money_Port: String;Money_String:String);
//Moneey_Port 顾显接口Com1 or Com2 Money_String 顾显显示的内容
var
PrnFileName:TextFile;
begin
Assignfile(PrnFileName,Money_Port);
printer
.
Canvas
.
Font
.
Name:=
'宋体'
;
printer
.
Canvas
.
Font
.
Size:=
8
;
printer
.
Canvas
.
Font
.
Charset:=GB2312_CHARSET;
Rewrite(PrnFileName);
write
(PRNFileName,chr(
12
));
//清除顾显
write
(PRNFileName,chr(
27
)+chr(
81
)+chr(
65
)+Money_String+chR(
13
));
//显示信息
CloseFile(PRNFileName);
end
;
2
、不换页走纸的打印
procedure
TFrmMain
.
AddPrintStrings(Strings: TStrings);
var
Prn: TextFile;
i:
word
;
begin
Assignfile(Prn,
'lpt1'
);
printer
.
Canvas
.
Font
.
Name:=
'宋体'
;
printer
.
Canvas
.
Font
.
Size:=
9
;
printer
.
Canvas
.
Font
.
Charset:=GB2312_CHARSET;
try
Rewrite(Prn);
try
for
i :=
0
to
Strings
.
Count -
1
do
writeln
(Prn, Strings
.
Strings[i]);
finally
CloseFile(Prn);
end
;
except
on
EInOutError
do
MessageBox(Handle,PChar(
'文本打印出错!'
),
'警告'
,MB_ICONEXCLAMATION
or
MB_OK);
end
;
end
;
3
、走纸换页的打印
procedure
TFrmMain
.
PrintStrings(Strings: TStrings);
var
Prn: TextFile;
i:
word
;
begin
AssignPrn(Prn);
try
Rewrite(Prn);
printer
.
Canvas
.
Font
.
Name:=
'宋体'
;
printer
.
Canvas
.
Font
.
Size:=
9
;
printer
.
Canvas
.
Font
.
Charset:=GB2312_CHARSET;
try
for
i :=
0
to
Strings
.
Count -
1
do
writeln
(Prn, Strings
.
Strings[i]);
finally
CloseFile(Prn);
end
;
except
on
EInOutError
do
MessageBox(Handle,PChar(
'文本打印出错!'
),
'警告'
,MB_ICONEXCLAMATION
or
MB_OK);
end
;
end
;
4
、打开钱箱
procedure
TFrmMain
.
OpenMoneyBox;
Var F:TextFile;
PDStr:
string
;
begin
//弹出钱箱功能
PDStr:= Chr(
27
)+
'p'
+Chr(
0
)+Chr(
60
)+Chr(
255
);
AssignFile(F,
'LPT1'
);
Rewrite(F);
Write(F, PDStr);
CloseFile(F);
end
;
总结:以上代码经过测试通过。
[c-sharp]
view plain
copy
开钱箱
buffer =
'CHR(27)+ '
p
'+CHR(0)+CHR(20)+CHR(255) '
;
Assignfile(PrnFileName,
'LPT1 '
);
try
Rewrite(PrnFileName);
write(PRNFileName,buffer + #13#10);
finally
CloseFile(PRNFileName);
end;
打印票据
buffer =
'打印内容 '
;
Assignfile(PrnFileName,
'LPT1 '
);
try
Rewrite(PrnFileName);
write(PRNFileName,buffer + #13#10);
finally
CloseFile(PRNFileName);
end;
如果我先打印在开钱箱就好使,否则就象死掉了一样,那为什么呢?
[c-sharp]
view plain
copy
//Delphi下使用并口控制打印机
//打开钱箱的代码
2008年01月10日 星期四 15:38
Delphi下使用并口控制打印机
使用Delphi编程的人员如果需要在Windows下使用并口打印机逐行打印,而又不想使用Windows的驱动程序。我们这里提供一种不需要任何外来的元件的方法。
Var F:TextFile;
Str:
string
;
Begin
try
Str:=’ 欢迎使用票据打印机!’+Chr(10);
AssignFile(F,
'LPT1'
);
Rewrite(F);
Write(F, Str);
CloseFile(F);
Except
Messagedlg(
'数据发送失败!'
,mterror,[mbok],0);
End;
end;
如果需要控制并口打印机开钱箱,也只需要重新给Str如下赋值:
Str:= Chr(27)+
'p'
+Chr(0)+Chr(25)+Chr(255);
Delphi下使用串口控制打印机
使用Delphi编程的人员如果需要在Windows下使用串口控制顾客显示屏或串口打印机,就需要使用外来方式。我们这里提供了API_COM.DLL这个链接库供调用。
首先把API_COM.DLL文件复制到编写的源程序目录下,接着在程序的开头声明调用的三个函数来源:
var
Form1: TForm1;
{加入下面三行声明}
function com_init(com:Integer; baud:Dword):Boolean;stdcall;external
'api_com.dll'
;
function com_rest:Boolean;stdcall;external
'api_com.dll'
;
function com_send(buf:PChar; len:Integer):Boolean;stdcall;external
'api_com.dll'
;
implementation
{$R *.DFM}
Com_init(1,9600)是打开串口进行通讯,1是打开COM1,波特率为9600。如果打开成功,它会返回逻辑真告知串口打开。
Com_rest是关闭串口。
Com_send(命令,长度)是发送数据到串口。
{在窗体创建时打开端口}
procedure TForm1.FormCreate(Sender: TObject);
begin
Com_init(1,9600);
end;
{在按钮中发送内容}
procedure TForm1.Button1Click(Sender: TObject);
begin
Str=Chr(27)+Chr(112)+Chr(0)+Chr(25)+Chr(255);{控制打印机开钱箱指令}
if
com_send(Pchar(Str),Length(Str)) then
begin
Label1.Caption :=
'已经发送命令'
;
end
else
begin
Label1.Caption :=
'发送失败'
;
end;
end;
{在关闭窗体时关闭端口}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Com_rest;
end;
上面语句是控制打印机开钱箱命令,其他的命令集只需要改变按钮中的Str的值即可:
下面是控制打印机打印出“欢迎使用GP系列票据打印机!”的命令:
Str=’欢迎使用GP系列票据打印机!’+Chr(13)
if
com_send(Pchar(Str),Length(Str)) then
begin
Label1.Caption :=
'已经发送命令'
;
end
else
begin
Label1.Caption :=
'发送失败'
;
end;
部分特殊打印机
评论这张 转发至微博 0人 | 分享到: 阅读(127)| 评论(0)| 引用 (0) |举报
数据集处理成可视树,数据网格自动适应宽度 在delphi中如何发送打印机控制码?
历史上的今天
相关文章
C#枚举系统安装的所有打印机2010-02-19 01:23:31 vb.net直接控制并口打印机的两种方法2010-04-28 00:56:56 直接把结果输出到打印机2010-05-21 16:55:26 用宏给打印机“记工”2010-06-08 18:37:15 取得网络上的打印机2010-04-07 21:24:12
最近读者
登录后,您可以在此留下足迹。 fairyhoo kingmous
评论
点击登录|昵称:
取消 验证码:换一张
上一页 1... -1-1-1-1-1-1-1... -1下一页
[delphi]
view plain
copy
我目前用的是川田POS58的,指令是这样的:
使用Delphi编程的人员如果需要在Windows下使用并口打印机逐行打印,而又不想使用Windows的驱动程序。我们这里提供一种不需要任何外来的元件的方法。
Var F:TextFile;
PDStr:
string
;
Begin
try
PDStr:=’Delphi Printer
on
LPT1’+chr(
10
);
AssignFile(F,
'LPT1'
);
Rewrite(F);
Write(F, PDStr);
CloseFile(F);
Except
Messagedlg(
'数据发送失败!'
,mterror,[mbok],
0
);
End;
end
;
如果需要控制并口的POS58打印机开钱箱,也只需要重新给PDStr如下赋值:
PDStr:= Chr(
27
)+
'p'
+Chr(
0
)+Chr(
60
)+Chr(
255
);
http:
//www.sddbbs.net/bbs/dispbbs.asp?boardID=89&ID=1707
【分享】POS钱箱的安装方法及零售单开钱箱指令设置
钱箱类型比较多,它的接口也有较大区别,有的类似电话线接头的,有的只有两根电线,有的是COM口的,也有的是LPT口的,安装与连接方法也有所不同,软件驱动方式也不一样。
常见的钱箱是与票据打印机一起使用的,一般票据打印机的背面都有钱箱的驱动接口,将钱箱的RJ11接头(类似电话线接头)连接到票据打印机背面的驱动接口,一般票据打印机是连接在COM口或LPT口上的,然后通过软件向COM或LPT口发送信号,这样就可以打开钱箱了;
一般票据打印机的钱箱的驱动指令是通过票据打印机来发送的,跟钱箱没有关系,票据打印机的供应商会提供给您该型号打印机的驱动钱箱指令说明,您再将该指令加入您的POS前台软件里即可。
驱动指令有使用十六进制的,也有十进制的,也有ASCII代码的,在下面的例子中将把这三种数据表达形式对应关系列示出。
如:STAR票据打印机接在LPT1口中,驱动指令是:
进制
指令
开钱箱指令
十六进制
1B
70
7
CHR(0x1B)+ CHR(0x70)+ CHR(0x7)
十进制
27
112
7
CHR(
27
)+ CHR(
112
)+ CHR(
7
)
ASCII代码
ESC
p
CHR(
27
)+
'p'
+ CHR(
7
)
顶
1
踩
0
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
POS机钱箱的安装与驱动
Delphi下POS机控制钱箱,客显,打印机
POS打印机一些特殊控制
能打印小票但是弹不出钱箱
POS58热敏打印机按了打印它没反应
delphi 对记事本文件进行写操作
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×