pos开钱箱的问题(50分)

  • 主题发起人 主题发起人 心飞雪
  • 开始时间 开始时间

心飞雪

Unregistered / Unconfirmed
GUEST, unregistred user!
 请各位有做过pos系统的帮我看看,以下代码是什么问题:
在rewrite(f)为何偶尔会出现:I/O error 105的错误呢?
有时出错但有时又不会出错。请帮忙提提意见,谢谢!
procedure openmoneybox();
// 开钱箱 Epson210D+D7+Win2k测试通过
var
F:TEXTFILE;
pdStr,cd:string;
pport,prin:string;
// 打印机端口,开钱箱端口,打印机类型
begin
cd:=trim(sini.ReadString('Pos','use_pos_pd_led_omb',''));
// 使用客显开钱箱
if cd='1' then
// diy 川田客显开钱箱,使用客显开钱箱
begin
pdstr:=chr(2)+chr(77);
// 控制顾客显示屏开钱箱指令
try
com_send(Pchar(PDStr),Length(PDStr));
except
on e: Exceptiondo
begin
abort;
end;
end;
exit;
end;
try
pdStr:=Chr(27)+'p'+Chr(0)+Chr(60)+Chr(255);
pport:=trim(sini.ReadString('Pos','posprinterport',''));
// 打印机端口
prin:=sini.ReadString('Pos','posprintertype','');
// 打印机类型
if prin='STAR SP2000兼容针打' then
// STAR SP2000兼容针打
pdstr:=CHR(27)+chr(112)+CHR(07);
// Star SP312 (Receipt)->Star SP2000系列的打印机
try
assignFile(F,pport);
// assignfile(f,pport);
except
on e: Exceptiondo
begin
abort;
end;
end;
try
Rewrite(F);
except
on e: Exceptiondo
begin
abort;
end;
end;
try
Write(F,pdStr);
except
on e: Exceptiondo
begin
abort;
end;
end;
try
CloseFile(F);
except
on e: Exceptiondo
begin
abort;
end;
end;
Except
begin
application.messagebox('对不起,钱箱打开失败,请检查【打印机类型或设置】;'+#13+#13+
'提示:请检查【打印机是否打开或没纸或打印机连接线,'+#13+#13+
' 或是否采用顾客显示屏等其它方式开钱箱】!',
pchar(syscaption),mb_ok+mb_iconerror);
end;
end;
end;
 
感觉有点乱,有很多东西都可以合并的
 
中间的一段改成这样试试
try
assignFile(F,pport);
// assignfile(f,pport);pport是文件名吗?
if fileexists(文件名) then
Append(F);
else
Rewrite(F);
try
Write(F,pdStr);
finally
closefile(f);
end;

except
on e: Exceptiondo
begin
abort;
end;
end;
 
如果改成以下代码,应该不会再乱了吧?
pport:是端口名称lpt1;利用lpt来开钱箱
procedure openmoneybox();
// 开钱箱 Epson210D+D7+Win2k测试通过
var
F:TEXTFILE;
pdStr,cd:string;
pport,prin: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);
pport:=trim(sini.ReadString('Pos','posprinterport',''));
// 打印机端口
prin:=sini.ReadString('Pos','posprintertype','');
// 打印机类型
if prin='STAR SP2000兼容针打' then
// STAR SP2000兼容针打
pdstr:=CHR(27)+chr(112)+CHR(07);
// Star SP312 (Receipt)->Star SP2000系列的打印机
assignFile(F,pport);
// assignfile(f,pport);
Rewrite(F);
Write(F,pdStr);
CloseFile(F);
Except
begin
application.messagebox('对不起,钱箱打开失败,请检查【打印机类型或设置】;'+#13+#13+
'提示:请检查【打印机是否打开或没纸或打印机连接线,'+#13+#13+
' 或是否采用顾客显示屏等其它方式开钱箱】!',
pchar(syscaption),mb_ok+mb_iconerror);
end;
end;
end;
 
怎么没人回复啊?
真是可怜!
 
真见鬼了,高手都到哪里去了?
怎么没人回复啊?
 

Similar threads

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