Winxp LPT1 连接打字机, 没有驱动。 我用下面的代码向打字机输出文字OK. 但如果打字机没有联机, Writeln(F, 'test data'); 会有超时错误。 AssignFile(F, 'LPT1'); Screen.Cursor := crHourGlass; try Rewrite(F); Writeln(F, 'test data'); finally CloseFile(F); Screen.Cursor := crDefault; end; 请问WINXP如何可以检测LPT1的状态? 小弟试过网上的代码,有用assembly中断指令的(只适用于95/98). 也有用win API CreateFile('LPT1'....)方法的,试过也不行, 请各位大大帮忙!

解决方案 »

  1.   

      //从并行端口读取打印机状态   
      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;