我在做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,'打印的测试程序');(此为打印画布比较慢)
  虽然能打印出来,但出纸速度又太慢,请大家给与帮忙谢谢!!
  (即可以直接打印,且在打印时出纸速度要快)

解决方案 »

  1.   

     我目前也是這樣處理的,USB的都用驅動來打,不過沒有覺得很慢,針式小票機肯定會慢點,熱敏的就不會很慢。 通常都是將內容放到 TStringList  裏來打的。  針式上都是即掃即打。
      

  2.   

    试试 AssignFile(F,'\\.\USB001');
      

  3.   

    //我的解决方法是,用Labview7.0设计好打印纸,生成打印码,然后数据当成变量进行替换,下面是生成机场行李条代码procedure PrintLuggage(LuggageTag,PassportID,GuestName,BirthDate,Nationality,ShipDate,ShipFerryNo,
                           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;
      

  4.   

    我已经解决,方法如下:(但当前打印机需要驱动,没有驱动可能不行)
    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('当前打印机的名称', '要打印的内容');
      

  5.   

    谢谢,正好遇到USB接口小票打印机打印问题。