我在学习打印机的功能,现在已经利用下面的方法成功打印出数据了,[DllImport("kernel32.dll")]
private static extern int CreateFile(...);[DllImport("kernel32.dll")]
private static extern bool WriteFile(...);

[DllImport("kernel32.dll")]
private static extern bool ReadFile(.);[DllImport("kernel32.dll")]
private static extern bool CloseHandle(int hObject);但是请问如何能够通过访问lpt的状态寄存器,来获取打印机的状态,例如繁忙,无纸。
我用ReadFile方法怎么也读不出来,应该是不会用,请问改如果获取状态信息呢?引脚  信号      寄存器  说明
01    nstrobe    co
02    data0      d0
03    data1      d1
04    data2      d2
05    data3      d3
06    data4      d4
07    data5      d5
08    data6      d6
09    data7      d7
10    nAck       S6     低电平表示准备好接受数据
11    busy       S7     高电平表示打印机忙
12    paperEnd   S5     无纸
13    select     S4     高电平表示选中打印机
14-18
19-30
31
32    nError     S3     低电平表示打印机出错
33-36请问如何去取打印机的状态呢? 等待高手指点

解决方案 »

  1.   

    http://www.codeproject.com/KB/cs/csppleds.aspxhttp://www.xker.com/page/e2009/0319/70273.html
    http://topic.csdn.net/u/20070124/18/fe3928a0-58cf-4944-bb84-3377f121183e.html
    可以使用inpout32.dll里面提供的函数进行读取
      

  2.   

    ReadFile(.)是读不到这些数据的,你用的斑马打印机吗?
      

  3.   

    我用 inpout32.dll 的Inp32(uint  PortAddress)方法去读S3 S4 S5 S6 S7的输出值,
    我写Inp32(888)好象不对,这个实在是不懂了,请教一下。
    另外请问Inp32(uint  PortAddress)获取出的状态寄存器值是固定不变的,例如如果没纸了,那么只要用Inp32()获取一次值,就能准确得到状态值吗?
      

  4.   

    http://www.sllk.net/wordpress/?p=433如果要讀取 LPT Port 的值,要記得先改變 ECR 暫存器的值,將暫存器設定為雙向模式
      

  5.   

    请问我只是想读 LPT 端口的 S3 S4 S5 S6 S7 状态寄存器的值,也需要这么做吗?用Inp32(LPT的S3地址),不能读出来吗,请问LPT的S3地址是多少?
      

  6.   

    http://hi.baidu.com/thunderdanky/blog/item/dae16c3820c32d25b9998fbb.html先用并口的监测工具查看.
    http://download.csdn.net/source/947403