不妨使用window的打印技术来检测打印机的状态.

解决方案 »

  1.   

    我也推荐用汇编语言(在Delphi中嵌入)编写测试程序,我曾经用MCS51单片机控制过EPSON LQ1600K打印机呢!
      

  2.   


    第一个试一试
    uses printers;
    var
        f:TextFile;
    begin
        AssignPrn(f);
        try
            Rewrite(f);
            writeln(f,'Print the output');
        finally
            CloseFile(f);
        end;
    end;
    第二个不知道
      

  3.   

    1.向打印口发送文本的方法其实很多。楼上讲的文件重定向当然是最简单的。
    2.打印机的检测要用API。用Printer只能作最简单的检测。
      

  4.   

    可用CREATEFILE以PRN为文件名生成一个文件,检测返回值,若成功则打印机可用,否则显示打印机故障。生成关于PRN的文件句柄后,可象普通文件一样向文件写入内容,比如WRITE,写完后关闭文件。
      

  5.   

      我不大赞成用汇编,因为我曾在Dll中调用用汇编编写的测试打印机函数,但调用几次后出现地址错,死机!
      

  6.   

    我不大赞成用汇编,因为在NT和2000下无法使用,但找不出别的方法,API函数试过,搞不定。汇编的方法如下:
    //从并行端口读取打印机状态
    function GetPrinterStatus:byte;
    asm
      MOV DX,$379;
      IN AL,DX;
    end;
    //获取打印机是否出错
    function CheckPrinter:boolean;
    var
      temp:byte;
    begin
      temp:=GetPrinterStatus;
      Result:=not ( ((temp and $80)=0) //打印机忙
      or ((temp and $20)<>0)   //打印机缺纸
      or ((temp and $10)=0)    //打印机未联机
      or ((temp and $08)=0) ); //打印机出错;
    end;
      

  7.   

    错误码与实测结果不符为什么请指教。(LQ-300k)
      

  8.   

    不必那么麻烦吧?
    可以把打印机端口当成COM口一样的来操作,直接读写!