各位:我想向通过PC并口向打印机发送命令,例如控制黑标,但不知如何实现,哪位大侠知道还望给予指点,做好给个例子。十二分感谢!(打印机命令,如:ESC d n 打印并进纸n字符行
格式: ASCII:ESC d n
十进制:27 100 n
十六进制:1B 64 n
说明:
打印行缓冲器里的数据并向前走纸n字符行。n=0~255。)

解决方案 »

  1.   

    一天过去了,无人来答!最近CSDN的人气好像不如从前。不管怎样,明儿就2006年了,祝各位万事如意,多多发财!
      

  2.   

    需要使用WinSpool APIuses SysUtils, Printers, WinSpool;function  SendDataToPrinter(sDeviceName, sDocName, sData: String): Boolean;
    //功能描述: 发送数据到打印机
    //入口参数:
    //  sDeviceName - 打印机名称
    //  sDocName    - 打印文档名称
    //  sData       - 发送的数据
    //出口参数:
    //  返回值      - True表示成功, False表示失败
    var
      bResult  : Boolean;
      hPrinter : Cardinal;
      tDocInfo : _DOC_INFO_1A;
      iWrited  : Cardinal;
    begin
      bResult := OpenPrinter(PChar(sDeviceName), hPrinter, nil);
      if bResult then
      begin
        tDocInfo.pDocName := PChar(sDocName);
        tDocInfo.pOutputFile := nil;
        tDocInfo.pDatatype := nil;
        bResult := StartDocPrinter(hPrinter, 1, @tDocInfo) <> 0;
        if bResult then
        begin
          bResult := StartPagePrinter(hPrinter);
          bResult := bResult and WritePrinter(hPrinter, @sData[1], Length(sData), iWrited);
          bResult := bResult and EndPagePrinter(hPrinter);
          EndDocPrinter(hPrinter);
        end;
        ClosePrinter(hPrinter);
      end;
      Result := bResult;
    end;procedure PrinterFeed(n: Integer);
    begin
      SendDataToPrinter('LQ-1600K', 'Feed', #27#100+ chr(n));
    end;