我在做POS打印时,想直接打印端口,直接打印LPT1时可以,例如:
Try
//默认使用LPT1
AssignFile(F,'lpt1');
try
Rewrite(F);
Writeln(F,'要打印的测试程序');
finally
CloseFile(F);
end;
except
end;
finally
FreeAndNil(StrList);
end;
但现在如果端口是USB001或者是USB002时,则不能用AssignFile(F,'USB001');
但如果直接用Printer.Canvas.TextOut((5,20,'打印的测试程序');(此为打印画布比较慢)
虽然能打印出来,但出纸速度又太慢,请大家给与帮忙谢谢!!
(即可以直接打印,且在打印时出纸速度要快)
Try
//默认使用LPT1
AssignFile(F,'lpt1');
try
Rewrite(F);
Writeln(F,'要打印的测试程序');
finally
CloseFile(F);
end;
except
end;
finally
FreeAndNil(StrList);
end;
但现在如果端口是USB001或者是USB002时,则不能用AssignFile(F,'USB001');
但如果直接用Printer.Canvas.TextOut((5,20,'打印的测试程序');(此为打印画布比较慢)
虽然能打印出来,但出纸速度又太慢,请大家给与帮忙谢谢!!
(即可以直接打印,且在打印时出纸速度要快)
AirFerryDate,AirFerryNo,Dest,BagCount, shipTicketNo,Operator :string);
var
PrintCortrol:TStringList;
PrintPRN: string;
Filehandle: integer;
LuggageTag1 :string;
begin
LuggageTag1 :='3A'+RightStr(LuggageTag,6); PrintCortrol :=TStringList.Create; ;
PrintCortrol.Clear;
PrintCortrol.Add('{D4531,0541,4500|}');
PrintCortrol.Add('{C|}');
PrintCortrol.Add('{U2;0130|}');
PrintCortrol.Add('{D4531,0541,4500|}');
PrintCortrol.Add('{AX;+000,+000,+00|}');
PrintCortrol.Add('{AY;+00,0|}');
PrintCortrol.Add('{PC000;0177,3898,15,15,A,00,B|}');
PrintCortrol.Add('{RC00;'+trim(LuggageTag1)+'|}');
PrintCortrol.Add('{XB00;0076,3792,2,1,06,06,12,12,06,0,0050|}');
PrintCortrol.Add('{RB00;'+trim(LuggageTag)+'|}');
PrintCortrol.Add('{PC001;0040,3754,05,05,E,00,B|}');
PrintCortrol.Add('{RC01;DEST-|}');
PrintCortrol.Add('{PC002;0040,3695,05,05,E,00,B|}');
PrintCortrol.Add('{RC02;'+trim(ShipFerryNo)+' / '+trim(ShipDate)+' ZUI >> HKA|}');
PrintCortrol.Add('{PC003;0040,3672,05,05,E,00,B|}');
PrintCortrol.Add('{RC03;'+trim(GuestName)+'|}');
PrintCortrol.Add('{PC004;0109,3642,05,05,E,00,B|}');
PrintCortrol.Add('{RC04;BAG IDENTIFICATION TAG|}');
PrintCortrol.Add('{PC005;0040,3723,05,05,E,00,B|}');
PrintCortrol.Add('{RC05;'+trim(AirFerryNo)+' / '+trim(AirFerryDate)+' HKA >> '+trim(Dest)+'|}');
PrintCortrol.Add('{XB01;0071,2903,2,1,06,06,12,12,06,3,0398|}');
PrintCortrol.Add('{RB01;'+trim(LuggageTag)+'|}');
PrintCortrol.Add('{PC006;0121,2344,10,10,H,00,B|}');
PrintCortrol.Add('{RC06;'+trim(AirFerryNo)+' / '+trim(AirFerryDate)+'|}');
PrintCortrol.Add('{PC007;0149,2219,25,15,E,00,B|}');
PrintCortrol.Add('{RC07;'+trim(Dest)+'|}');
PrintCortrol.Add('{PC008;0144,2077,05,05,E,00,B|}');
PrintCortrol.Add('{RC08;FINAL DESTINATION|}');
PrintCortrol.Add('{PC009;0152,0053,05,05,E,22,B|}');
PrintCortrol.Add('{RC09;'+trim(LuggageTag1)+'|}');
PrintCortrol.Add('{PC010;0485,0088,05,05,E,22,B|}');
PrintCortrol.Add('{RC10;'+trim(ShipFerryNo)+' / '+trim(ShipDate)+' ZUI >> HKA|}');
PrintCortrol.Add('{PC011;0485,0119,05,05,E,22,B|}');
PrintCortrol.Add('{RC11;'+trim(AirFerryNo)+' / '+trim(AirFerryDate)+' HKA >> '+trim(Dest)+'|}');
PrintCortrol.Add('{PC012;0482,0147,05,05,E,22,B|}');
PrintCortrol.Add('{RC12;'+trim(GuestName)+'|}');
PrintCortrol.Add('{XB02;0076,0210,2,1,06,06,12,12,06,0,0066|}');
PrintCortrol.Add('{RB02;'+trim(LuggageTag)+'|}');
PrintCortrol.Add('{PC013;0322,0190,05,05,E,22,B|}');
PrintCortrol.Add('{RC13;'+trim(LuggageTag1)+'|}');
PrintCortrol.Add('{XB03;0076,0332,2,1,06,06,12,12,06,0,0066|}');
PrintCortrol.Add('{RB03;'+trim(LuggageTag)+'|}');
PrintCortrol.Add('{PC014;0322,0307,05,05,E,22,B|}');
PrintCortrol.Add('{RC14;'+trim(LuggageTag1)+'|}');
PrintCortrol.Add('{PC015;0490,0218,05,05,M,11,B|}');
PrintCortrol.Add('{RC15;'+trim(Dest)+'|}');
PrintCortrol.Add('{XB04;0071,1051,2,1,06,06,12,12,06,3,0398|}');
PrintCortrol.Add('{RB04;'+trim(LuggageTag)+'|}');
PrintCortrol.Add('{XB05;0076,1143,2,1,06,06,12,12,06,0,0317|}');
PrintCortrol.Add('{RB05;'+trim(LuggageTag)+'|}');
PrintCortrol.Add('{PC016;0373,1496,10,10,E,22,B|}');
PrintCortrol.Add('{RC16;'+trim(LuggageTag1)+'|}');
PrintCortrol.Add('{PC017;0457,1579,05,05,E,22,B|}');
PrintCortrol.Add('{RC17;operter:'+trim(Operator)+'|}');
PrintCortrol.Add('{PC018;0457,1628,05,05,E,22,B|}');
PrintCortrol.Add('{RC18;SerialNo:'+trim(shipTicketNo)+'|}');
PrintCortrol.Add('{PC019;0454,1661,05,05,E,22,B|}');
PrintCortrol.Add('{RC19;BAG:'+trim(BagCount)+'|}');
PrintCortrol.Add('{PC020;0452,1767,05,05,E,22,B|}');
PrintCortrol.Add('{RC20;'+trim(ShipFerryNo)+' / '+trim(ShipDate)+' ZUI >> HKA|}');
PrintCortrol.Add('{PC021;0452,1737,05,05,E,22,B|}');
PrintCortrol.Add('{RC21;'+trim(AirFerryNo)+' / '+trim(AirFerryDate)+' HKA >> '+trim(Dest)+'|}');
PrintCortrol.Add('{PC022;0454,1800,05,05,E,22,B|}');
PrintCortrol.Add('{RC22;Nationality:'+trim(Nationality)+'|}');
PrintCortrol.Add('{PC023;0457,1833,05,05,E,22,B|}');
PrintCortrol.Add('{RC23;BirthDate:'+trim(BirthDate)+'|}');
PrintCortrol.Add('{PC024;0457,1866,05,05,E,22,B|}');
PrintCortrol.Add('{RC24;NAME:'+trim(GuestName)+'|}');
PrintCortrol.Add('{PC025;0457,1897,05,05,E,22,B|}');
PrintCortrol.Add('{RC25;PassID:'+trim(PassportID)+'|}');
PrintCortrol.Add('{PC026;0177,4338,15,15,A,00,B|}');
PrintCortrol.Add('{RC26;'+trim(LuggageTag1)+'|}');
PrintCortrol.Add('{XB06;0076,4229,2,1,06,06,12,12,06,0,0050|}');
PrintCortrol.Add('{RB06;'+trim(LuggageTag)+'|}');
PrintCortrol.Add('{PC027;0045,4193,05,05,E,00,B|}');
PrintCortrol.Add('{RC27;DEST-|}');
PrintCortrol.Add('{PC028;0045,4135,05,05,E,00,B|}');
PrintCortrol.Add('{RC28;'+trim(ShipFerryNo)+' / '+trim(ShipDate)+' ZUI >> HKA|}');
PrintCortrol.Add('{PC029;0045,4112,05,05,E,00,B|}');
PrintCortrol.Add('{RC29;'+trim(GuestName)+'|}');
PrintCortrol.Add('{PC030;0109,4081,05,05,E,00,B|}');
PrintCortrol.Add('{RC30;BAG IDENTIFICATION TAG|}');
PrintCortrol.Add('{PC031;0045,4163,05,05,E,00,B|}');
PrintCortrol.Add('{RC31;'+trim(AirFerryNo)+' / '+trim(AirFerryDate)+' HKA >> '+trim(Dest)+'|}');
PrintCortrol.Add('{PC032;0487,0342,05,05,M,11,B|}');
PrintCortrol.Add('{RC32;'+trim(Dest)+'|}');
PrintCortrol.Add('{XB07;0480,0076,2,1,04,04,08,08,04,2,0035|}');
PrintCortrol.Add('{RB07;'+trim(LuggageTag)+'|}');
PrintCortrol.Add('{XB08;0076,2981,2,1,06,06,12,12,06,0,0317|}');
PrintCortrol.Add('{RB08;'+trim(LuggageTag)+'|}');
PrintCortrol.Add('{XR;0091,2128,0452,2198,B|}');
PrintCortrol.Add('{XR;0091,2205,0452,2275,B|}');
PrintCortrol.Add('{XR;0091,2199,0271,2204,B|}');
PrintCortrol.Add('{XR;0272,2199,0452,2204,B|}');
PrintCortrol.Add('{XS;I,0001,0012C2200|}');
PrintCortrol.Add('{U1;0130|}'); PrintPRN := PrintCortrol.Text;
Filehandle := Fileopen('LPT1', fmOpenWrite);
if Filehandle > 0 then
Filewrite(Filehandle, PrintPRN[1], length(PrintPRN))
else
MsShow('连接打印口错误');
Fileclose(Filehandle); PrintCortrol.Free;end;
uses WinSpool,Printers;
procedure P_WriteToPrinter(PrinterName: string; S: string); //PrinterName: 打印机名字及EPSON LQ-1600K等,S为打印机的ESC命令等。
var
Handle: THandle;
N: DWORD;
DocInfo1: TDocInfo1;
begin
if not OpenPrinter(PChar(PrinterName), Handle, nil) then
begin
ShowMessage('错误: ' + IntToStr(GetLastError));
Exit;
end;
with DocInfo1 do
begin
pDocName := PChar('正在处理打印...');
pOutputFile := nil;
pDataType := 'RAW';
end;
StartDocPrinter(Handle, 1, @DocInfo1);
StartPagePrinter(Handle);
WritePrinter(Handle, PChar(S), Length(S), N);
EndPagePrinter(Handle);
EndDocPrinter(Handle);
ClosePrinter(Handle);
end;然后进行调用
P_WriteToPrinter('当前打印机的名称', '要打印的内容');