调用LPT打印时遇到这个问题File accescc denied,请问怎么解决??网上找了,好像没有可以解决的方法
Assignfile(f,'LPT1');
rewrite(f);
write(f,#$1b'@'); //初始化打印机
write(f,#$1d'h'#80); //设置条码高度
write(f,#$1d'k'#2);
write(f,'496595707379'#0#$a);
write(f,#$1b#$64#5#$1d'V'#1);//走纸5行,切
closefile(f);
这打印代码
Assignfile(f,'LPT1');
rewrite(f);
write(f,#$1b'@'); //初始化打印机
write(f,#$1d'h'#80); //设置条码高度
write(f,#$1d'k'#2);
write(f,'496595707379'#0#$a);
write(f,#$1b#$64#5#$1d'V'#1);//走纸5行,切
closefile(f);
这打印代码
2.CMOS里设置的并口模式,对比一下,看看是不是有不一致的地方没遇到过,目前只能提供2个参考意见。 另,是否有其他程序运行中?占用了LPT1?
var
H: THandle;
begin
H := CreateFile('LPT1',0,0,nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
if H <> INVALID_HANDLE_VALUE then
ShowMessage('可用');
end;有问题的机器上装了打印驱动及其他打印软件吗?
我现在就是想知道,如果是软件占用了,那我怎么去释放这个端口,难道一台机不能同时两套软件使用LPT口吗?去找了很多资料,都没有提到过
我记得并口有几种模式,开机进CMOS的时候可以看到的,好像是ECP和SSP什么的,具体哪个是合适的,你看下自己的台式机上配置的是啥,如果别的不一样就改过来就好了。我也没遇到过你这样的情况,我写的那程序也换了n多电脑了,没人说不能用,而且POS程序基本全部都是使用这种方式来处理的。总感觉是并口设置的问题,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button2: TButton;
Edit5: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
hCommFile : THandle;
f: TextFile;begin
hcommFile:=CreateFile('LPT1',generic_write,0,nil,open_existing,file_flag_overlapped,0); //打开串行口
if hCommFile=INVALID_HANDLE_VALUE then
begin
ShowMessage('打印机未正确安装!');
Exit;
end;
Assignfile(f,'LPT1');
rewrite(f);
write(f,#$1b'@'); //初始化打印机
Write(F,Char(27)+char(33)+char(16)); //字体设置
Writeln(f,StringOfChar(' ',(10-length(Edit1.text)) Div 2)+Edit1.text+StringOfChar(' ',(30-length(Edit2.text)) Div 2)
+Edit2.text+StringOfChar(' ',(20-length(Edit3.text)) Div 2)+Edit3.text);
//
Write(F,Char(27)+char(33)+char(0)+char(13)); //取消字体
Write(f,' 票价 ¥20.00 服务费 ¥0.00 2场次 ' +char(13)) ;
Write(f,' 总计 ¥20.00 对号入座 '+char(13) );
Write(f,' 2011.12.31 15:30 对号入座 '+char(13) );
write(f,#$1b'@'); //初始化打印机
write(f,#$1d'h'#80); //设置条码高度
write(f,#$1d'k'#2);
write(f,'169111228929'#0#$a+char(13) ); //打印条码
Writeln(f,'169111228929');
//
Writeln(F,chr($1d)+ 'V'+char(66)+chr(1)); //切d纸
closefile(f);end;end.
也不行