无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
12
返回列表 发新帖
楼主: chinaren12
打印 上一主题 下一主题

[求助] 刚刚在论坛看到一个共享打印机的好东西raw print server

  [复制链接]
31#
发表于 2022-9-12 23:54:57 | 显示全部楼层
chinaren12 发表于 2022-9-12 09:36
我刚刚又测试了一遍,P1007确实可以打印了。但是,有一个小小的问题。

就是如果实际连接打印机的电脑 ...

找了一些资料,大概意思是hp这一系列打印机要先发固件过去,打印机才能进正常工作状态,
也就是打印机开机之后如果从没打印过,第一次发固件过去,估计打印机要消耗一段时间运行固件,
之后才可以正常打印
我修改的代码没等待时间,发固件过去就发打印内容了,可能这个时候打印机不能识别,
而第二次打印,这个时候打印机已经运行过固件了,就可以了,
明天看看怎么修改一下

参考https://www.right.com.cn/forum/thread-5452802-1-1.html以及https://www.right.com.cn/forum/thread-502078-1-4.html

有些广受欢迎的打印机,如我的HP Laserjet 1020,是所谓的GDI打印机,主要用于Windows系统。这种打印机设计时就简化了固件,ROM里根本没有真正干活的程序。打印机开机之后,必须由计算机把固件传过来安装到内存后,才能正常工作。在Windows系统里,打印机驱动程序就会自动做这个事。Windows支持热插拔技术,就算主机先开机工作,打印机后开机,Windows系统也会识别到USB口接入了打印机,进而发送固件给打印机。打印机在接收到固件后进行启动,这时我们会听到明显的自检轰鸣声。

但GDI打印机一般只提供了Windows下的驱动,将他们连接到Linux主机上并正常工作可不容易。有一些开源项目提供了Linux下的打印机驱动,配合CUPS打印服务器,就能让Debian、Radhat正常打印。最有名的开源项目是foo2zjx,里面的/osx-hotplug/osx-hplj-hotplug.m文件定义了九种HP打印机硬件特征码和对应的固件。阅读源代码,其中的0x03f0, 0x2b17, "/usr/share/foo2zjs/firmware/sihp1020.dl",对应的就是HP Laserjet 1020打印机,它的固件文件名为sihp1020.dl。这些固件可以自己编译生成,也能在网上(http://oleg.wl500g.info/hplj/)下载到现成的。

我们通常只是用Openwrt或Padavan做一个小型的打印服务器。客户机的Windows系统本来就有驱动,所以这里只探索如何在GDI打印机热插入时,作为打印服务器的路由器能识别到打印机并发送固件,让打印机能正常工作
谁提到过在路由上热插拔后会找不到打印机,然后他写了个脚本每10秒还是多长时间自动检测并连接打印机
现在这个脚本是利用linux的mdev的热插拔机制写的,只在系统开机时或插上打印机时调用一次。发送固件给打印机后,打印机会启动自检,因此可以用两个步骤来测试:
    步骤一:把脚本添加进去后保存重启路由器,如果这时路由器是插了打印机的,启动后能听到打印机的自检声。
    步骤二:从路由器上拔掉打印机USB插头,等几秒再插回去,也会再次听到打印机的自检声。
  1. HOTPLUG HotPlug[] =
  2. {
  3.     0x03f0,        0x0517,                "/usr/share/foo2zjs/firmware/sihp1000.dl",
  4.     0x03f0,        0x1317,                "/usr/share/foo2zjs/firmware/sihp1005.dl",
  5.     0x03f0,        0x4117,                "/usr/share/foo2zjs/firmware/sihp1018.dl",
  6.     0x03f0,        0x2b17,                "/usr/share/foo2zjs/firmware/sihp1020.dl",

  7.     0x03f0,        0x3d17,                "/usr/share/foo2xqx/firmware/sihpP1005.dl",
  8.     0x03f0,        0x3e17,                "/usr/share/foo2xqx/firmware/sihpP1006.dl",
  9.     0x03f0,        0x4817,                "/usr/share/foo2xqx/firmware/sihpP1005.dl",
  10.     0x03f0,        0x4917,                "/usr/share/foo2xqx/firmware/sihpP1006.dl",
  11.     0x03f0,        0x3f17,                "/usr/share/foo2xqx/firmware/sihpP1505.dl",
  12.     0,                0,                NULL,        // Must be last
  13. };
复制代码
其实 P1007和P1005用的是同一个固件,P1008和P1006用的也是同一个固件。开源项目foo2zjx里面的/osx-hotplug/osx-hplj-hotplug.m文件定义了硬件特征码和对应的固件。上面是代码

点评

感谢层主辛苦付出,持续关注中!  详情 回复 发表于 2022-9-13 08:46
回复

使用道具 举报

32#
发表于 2022-9-13 09:43:20 | 显示全部楼层
参考https://blog.51cto.com/firehare/588307以及https://www.linuxidc.com/Linux/2010-04/25762.htm
因为该款打印机在断电之后都要重新加载一个firmware才能正常工作,因此你应该在每次打印机断电之后都要用root身份载入sihp1000.img
$sudo -s
#cat sihp1000.img > /dev/usb/lp0
HP 1020的固件(firmware)没有固化在机器里而是在启动时从PC机装过去的。所以, 第一步是安装这个固件
不能马上打印。症状是:发送了打印指令后,打印机没有什么响应,也没有出错提示,通过 dmesg 却可以发现总是出现 usblp0: removed 的提示,而设备并未被删除了。通过 搜索,得知这种打印机需要上传一个 firmware 固件文件才能使用,而这个 firmware 在 linux 下的驱动程序里面并没有内置!所以就会导致打印机没有响应
所以打印机开机之后必须要发一次固件给他,才能正常工作,
考虑要不要rawprint服务启动时候发一个固件过去
回复

使用道具 举报

33#
发表于 2022-9-13 10:19:33 | 显示全部楼层
修改了一下,在服务启动时候,执行InitHp发送一段数据过去,
请再试试能不能一次打印成功

RawPrintServer100-p1007-inithp.rar

858.17 KB, 下载次数: 28, 下载积分: 无忧币 -2

点评

不能一次打印成功,我刚刚测试了,虽然rawprintserver一开始给了代码初始化了打印机,但是打印的时候打印直接没有任何反应。  详情 回复 发表于 2022-9-13 12:00
回复

使用道具 举报

34#
发表于 2022-9-13 15:44:42 | 显示全部楼层
chinaren12 发表于 2022-9-13 12:00
不能一次打印成功,我刚刚测试了,虽然rawprintserver一开始给了代码初始化了打印机,但是打印的时候打印 ...

加了一行FlushPrinter,请测试看看,
win下打印API相关的参考资料不是太多,
Linux下的比较多

RawPrintServer100-p1007-FlushPrinter.rar

858.25 KB, 下载次数: 42, 下载积分: 无忧币 -2

点评

老哥,刚刚测试,还是不行,不能一次打印成功,必须在连接打印机的电脑上打印一张,然后网络打印才能OK,如果不这样做的话,打印机就没反应。  详情 回复 发表于 2022-9-17 17:27
好的,测试了给反馈给你  详情 回复 发表于 2022-9-14 09:01
我觉得应该单独写一个小程序,专门用于初始化这些特殊的打印机,让这些程序和代码独立于Raw Print Server。因为这本身不是Raw Print Server的问题。  详情 回复 发表于 2022-9-13 16:33
回复

使用道具 举报

35#
发表于 2022-9-14 10:03:00 | 显示全部楼层
Climbing 发表于 2022-9-13 16:33
我觉得应该单独写一个小程序,专门用于初始化这些特殊的打印机,让这些程序和代码独立于Raw Print Server ...

理论确实如此,
但是运行两个程序也不方便,
改改raw print做个hp特制版简单一些
回复

使用道具 举报

36#
发表于 2022-9-14 23:42:22 | 显示全部楼层
zhuzihongyu 发表于 2022-9-14 21:52
请问大佬到底哪个打印服务程序可以用的?以及怎么使用呢

看最新的那个压缩包就行,
非hp打印机也可以直接用楼主发的原版,
hp的gdi打印机使用修改版,
用法rawprint install 打印机名字
回复

使用道具 举报

37#
发表于 2022-9-15 10:44:46 | 显示全部楼层
2275385864 发表于 2022-9-15 00:37
请问,最新那个是只能1007还是1020那些也能用

暂时只做了1007,其他型号没加入
请告知您的打印机型号,我先改一下试试
回复

使用道具 举报

38#
发表于 2022-9-16 11:20:59 | 显示全部楼层

附件改为发送p1008的启动数据,请试试

RawPrintServer100-p1008.rar

399.21 KB, 下载次数: 34, 下载积分: 无忧币 -2

回复

使用道具 举报

39#
发表于 2022-9-18 23:24:46 | 显示全部楼层
chinaren12 发表于 2022-9-17 17:27
老哥,刚刚测试,还是不行,不能一次打印成功,必须在连接打印机的电脑上打印一张,然后网络打印才能OK, ...

估计还有数据要发给打印机用于初始化,我再看看Linux的代码

点评

好的,谢谢  详情 回复 发表于 2022-9-19 12:51
回复

使用道具 举报

40#
发表于 2022-9-18 23:34:07 | 显示全部楼层
2275385864 发表于 2022-9-15 21:39
单位暂时用的XLPD这个软件共享的,个别不能用的打印机,用raw print server1.0正式版刚好可以,现在就观望, ...

thinprint应该是兼容性做的最好的产品了,
毕竟市场上打印机种类非常多,
类似于raw print server这种开源产品,
没人给他专门做产品兼容性测试,
也就是能用几个算几个了
回复

使用道具 举报

41#
发表于 2022-9-18 23:35:08 | 显示全部楼层
shy20070509 发表于 2022-9-15 10:49
办公电脑设备不允许共享怎么办?

技术上不允许windows共享,那使用这个工具试试,
制度上不允许任何共享,那没办法
回复

使用道具 举报

42#
发表于 2022-9-20 00:28:45 | 显示全部楼层
邪恶海盗 发表于 2022-9-19 18:17
人多的企业更要用打印服务器了...

其实呢,
比较新的打印机都已经是网络打印机了,
如果公司愿意花钱的直接采购一个接上网线就行,
自动获得ip,基本上不要配置什么,
这种东西就是给那些比较老的打印机发挥余热的,

点评

辛苦辛苦! 等比较成熟了,希望大师重开新贴子发布一下,现在找起来很费劲,不知道下哪个好。 要再有个小教程就更好了。  详情 回复 发表于 2022-9-23 12:18
是这么个理,不过假如人家还在用并且没到报废的时候,一般很少会专门再去买新的...  详情 回复 发表于 2022-9-20 10:41
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-18 03:46

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表