gxjt
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2006-06-07
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2308回复:8

USB口打印机控制(200分恭请高手)

楼主#
更多 发布于:2002-08-21 17:24
各位兄弟姐妹,偶现有一台USB接口的打印机,驱动程序已有,能正常打印.问题是偶原来的应用程序要控制它输出,已查到其SymbolicName,用CreateFile打开USB端口句柄,如下
if ((hCom = CreateFile(\"\\\\\\\\.\\\\USB#Vid_04b8&Pid_0001#5&f1546e9&0&2#{a5dcbf10-6530-11d2-901f-00c04fb951ed}\", GENERIC_WRITE, 0, NULL,
  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
  NULL)) == INVALID_HANDLE_VALUE)
throw 1;
端口句柄打开成功(如拔掉USB cable 则不成功),说明打开USB端口句柄是没错的,然后我用WriteFile向端口写数据,WriteFile(hCom, Buf, Length, &len, &osWrite);可为什么打印机没反应啊,是不是还要什么指令呢?望各位指点一二,先谢了.

[编辑 -  8/21/02 by  junming]
[color=red] “阿弥陀佛,无上医王,舍此不求,是谓痴狂。” “一句弥陀,阿伽陀药,舍此不服,是谓大错。” 南无阿弥陀佛......[/color]
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-08-21 18:02
1、WriteFile只是向驱动程序产生IRP_MJ_WRITE的IRP,你怎么知道驱动程序如何处理这个IRP的?
2、就算驱动程序处理了该IRP,发向了设备,你认为设备会打印这些数据?!设备怎么知道打印的格式等等信息?!

我的建议是:
1、看看你的设备的打印接口数据格式。
2、用Bus Hunter查看设备在打印时的数据流,仔细分析。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
gxjt
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2006-06-07
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-22 09:48
1、WriteFile只是向驱动程序产生IRP_MJ_WRITE的IRP,你怎么知道驱动程序如何处理这个IRP的?
2、就算驱动程序处理了该IRP,发向了设备,你认为设备会打印这些数据?!设备怎么知道打印的格式等等信息?!

我的建议是:
1、看看你的设备的打印接口数据格式。
2、用Bus Hunter查看设备在打印时的数据流,仔细分析。

谢谢tigerzd回复,请问
1.怎么看我的设备的打印接口数据格式
2.Bus Hunter为啥东东啊,哪里有啊

菜鸟一个,望不吝指教
[color=red] “阿弥陀佛,无上医王,舍此不求,是谓痴狂。” “一句弥陀,阿伽陀药,舍此不服,是谓大错。” 南无阿弥陀佛......[/color]
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-22 09:58
1、做打印机,这个要你自己去看哦,我不懂。
2、bus hunter是一个监控数据流的软件,本站下载区有。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
gxjt
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2006-06-07
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-22 11:35
tigerzd老兄,偶用Bus Hound 结果如下,给偶分析分析,正常否,WriteFile将东西写到打印机去了吗?多谢了.



 USB Printing Support [64KB/Sec]

Device  Phase  Data                                                   Info              Time   Cmd.Phase.Ofs    
------  -----  -----------------------------------------------------  ----------------  -----  ------------------
   7.1  DO     1b 40 1b 28 - 47 01 00 01                              .@.(G...            0us         1.1.0        
   7.1  DO     1b 28 56 04 - 00 00 00 00                              .(V.....           22sc         2.1.0        
   7.1  DO     81 00 ea 00 - 1b 28 56 04                              .....(V.          2.4sc         3.1.0        
   7.1  DO     00 03 fc 00 - 0f f0 ff 00                              ........          1.8sc         4.1.0        
   7.1  DO     28 24 04 00 - 00 00 00 00                              ($......          789ms         5.1.0        
   7.1  DO     fc ff 00 04 - 07 f8 00 07                              ........          579ms         6.1.0        
   7.1  DO     fc fb 00 01 - 01 fe fa 00                              ........          630ms         7.1.0        
   7.1  DO     2e 01 0a 0a - 01 b2 04 c4                              ........          490ms         8.1.0        
   7.1  DO     00 ff fe 00 - 01 0f f0 f2                              ........          539ms         9.1.0        
   7.1  DO     0f 7f c0 00 - 03 fe 00 7f                              ........          640ms        10.1.0        
   7.1  DO     7c 86 f9 05 - f2 1b e4 17                              ........          5.6sc        11.1.0        
   7.1  DO     ba 85 75 02 - ea 15 d4 0b                              ..u.....           14sc        12.1.0        
   7.1  DO     24 04 00 00 - 00 00 00 1b                              $.......          540ms        13.1.0        
   7.1  DO     cf 80 cc 00 - 1b 28 56 04                              .....(V.          489ms        14.1.0        
   7.1  DO     f2 0b e6 17 - c8 2f 98 5f                              ...../._          630ms        15.1.0        
   7.1  DO     00 1b 2e 01 - 0a 0a 01 b2                              ........          589ms        16.1.0        
   7.1  DO     1f 62 2e c6 - 7d 80 cc 00                              .b......          637ms        17.1.0        
   7.1  DO     45 d8 cb b1 - 17 63 2e c4                              E....c..          524ms        18.1.0        
   7.1  DO     7c 82 f9 85 - f2 0b e6 17                              ........          590ms        19.1.0        
   7.1  DO     01 0a 0a 01 - b2 04 cc 00                              ........          591ms        20.1.0        
   7.1  DO     01 00 00 1b - 28 72 02 00                              ....(r..          489ms        21.1.0        
   7.1  DO     17 50 ae a0 - 5d 40 ba 81                              .P..]@..          490ms        22.1.0        
   7.1  DO     8b b1 1f 62 - 2e c4 7d 88                              ...b....          530ms        23.1.0        
   7.1  DO     2e 01 0a 0a - 01 b2 04 cc                              ........          540ms        24.1.0        
   7.1  DO     3c 02 00 00 - 1b 28 72 02                              <....(r.          490ms        25.1.0        
   7.1  DO     00 1f e0 c8 - 00 1b 28 56                              ......(V          490ms        26.1.0        
   7.1  DO     24 04 00 00 - 00 00 00 1b                              $.......          490ms        27.1.0        
   7.1  DO     1b 2e 01 0a - 0a 01 b2 04                              ........          464ms        28.1.0        


[编辑 -  8/22/02 by  junming]
[color=red] “阿弥陀佛,无上医王,舍此不求,是谓痴狂。” “一句弥陀,阿伽陀药,舍此不服,是谓大错。” 南无阿弥陀佛......[/color]
gxjt
驱动老牛
驱动老牛
  • 注册日期2002-03-26
  • 最后登录2006-06-07
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-22 12:08
下面是正常打印时的Bus Hound 结果:
USB Printing Support [45KB/Sec]

Device  Phase  Data                                                   Info              Time   Cmd.Phase.Ofs    
------  -----  -----------------------------------------------------  ----------------  -----  ------------------
   7.0  CTL    80 06 00 01 - 00 00 12 00                              GET DESCRIPTR       0us         1.1.0        
   7.0  DI     12 01 00 01 - 07 01 02 40                              .......@          3.9ms         1.2.0        
   7.0  CTL    80 06 00 02 - 00 00 09 01                              GET DESCRIPTR      81us         2.1.0        
   7.0  DI     09 02 20 00 - 01 01 00 40                              .. ....@          3.8ms         2.2.0        
   7.0  CTL    00 09 01 00 - 00 00 00 00                              SET CONFIG         20us         3.1.0        
   7.0  CTL    a1 00 00 00 - 00 00 f1 03                              CLASS             6.8ms         4.1.0        
   7.0  DI     00 5a 4d 46 - 47 3a 45 50                              .ZMFG:EP          5.1ms         4.2.0        
   7.1  DO     00 00 00 1b - 01 40 45 4a                              .....@EJ           26sc         5.1.0        
   7.1  DO     3f 00 00 0f - c0 f8 00 00                              ?.......           11ms         6.1.0        
据此我认为是我WriteFile()前没有和打印机握手的缘故,即上面的CTL和DI,大侠们对CTL(USB control packet),DI(Data In)了解吗?请指教,一定给分.
[color=red] “阿弥陀佛,无上医王,舍此不求,是谓痴狂。” “一句弥陀,阿伽陀药,舍此不服,是谓大错。” 南无阿弥陀佛......[/color]
happy-hg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-20
  • 最后登录2011-06-18
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望27点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-07-15 17:29
请教gxjt,我现在也碰到了类似的问题。
我现在使用isp1362驱动hp的打印机,使用pcl语言。正在PC上做试验。我用bushound通过bulkout端点直接向打印机发送pcl数据事,打印机根本没有反应。用bushound抓正常打印的数据时,发现在pcl数据包之间还夹着一些不认识的包。另外我看到你的帖子里的数据是在epson打印机上得到的,我用上述的方法在epson打印机acl c1100上打印出了结果。所以不知是不是hp有特殊的控制方法或指令。随帖附我抓到的数据的文件pcl5e on hp laserjet1160.txt和发送到打印机的数据文件2.prn。
附件名称/大小 下载次数 最后更新
print.rar (41KB)  8
happy-hg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-20
  • 最后登录2011-06-18
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望27点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-07-15 17:54
楼主驱动过惠普打印机吗?
我打算使用isp1362驱动hp的打印机,使用pcl语言。现正在PC上做试验。
我用bushound5.0直接向打印机所在的USB端口的BULK OUT endpoint发送PCL格式的数据,结果发现:当数据包的长度大于4096字节时,该软件就不能发送这些数据;当数据包长度小于4096字节时,数据被发送,但是打印机没有任何反应(BULK OUT 的buffer为4096字节)。同样的办法在epson打印机上可以实现。所以我考虑:向hp打印机输出时,除了输出PCL格式的数据,是否还需要输出其它的数据或命令?
随帖附我抓到的数据的文件pcl5e on hp laserjet1160.txt和发送到打印机的数据文件2.prn。
附件名称/大小 下载次数 最后更新
print.rar (41KB)  10
happy-hg
驱动牛犊
驱动牛犊
  • 注册日期2004-07-20
  • 最后登录2011-06-18
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望27点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-07-15 19:29
请教,惠普打印机的打印问题
请教,惠普打印机的打印问题
游客

返回顶部