请教获取热敏打印机状态寄存器的问题

smarteyeexit 2010-04-02 08:08:15
我在学习打印机的功能,现在已经利用下面的方法成功打印出数据了,

[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

请问如何去取打印机的状态呢? 等待高手指点
...全文
249 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
aisunrong 2011-04-23
  • 打赏
  • 举报
回复
请问如何去取打印机的状态呢?大哥你这个问题解决了没啊?我现在也为这个问题烦啊
smarteyeexit 2010-04-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xingyuebuyu 的回复:]
http://www.sllk.net/wordpress/?p=433

如果要讀取 LPT Port 的值,要記得先改變 ECR 暫存器的值,將暫存器設定為雙向模式
[/Quote]


请问我只是想读 LPT 端口的 S3 S4 S5 S6 S7 状态寄存器的值,也需要这么做吗?

用Inp32(LPT的S3地址),不能读出来吗,请问LPT的S3地址是多少?
xingyuebuyu 2010-04-03
  • 打赏
  • 举报
回复
http://www.sllk.net/wordpress/?p=433

如果要讀取 LPT Port 的值,要記得先改變 ECR 暫存器的值,將暫存器設定為雙向模式
oneatree 2010-04-03
  • 打赏
  • 举报
回复
mark
smarteyeexit 2010-04-03
  • 打赏
  • 举报
回复
我用 inpout32.dll 的Inp32(uint PortAddress)方法去读S3 S4 S5 S6 S7的输出值,
我写Inp32(888)好象不对,这个实在是不懂了,请教一下。
另外请问Inp32(uint PortAddress)获取出的状态寄存器值是固定不变的,例如如果没纸了,那么只要用Inp32()获取一次值,就能准确得到状态值吗?
doubleu2005 2010-04-02
  • 打赏
  • 举报
回复
ReadFile(.)是读不到这些数据的,你用的斑马打印机吗?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧