前不久财务买了个打印机,然后呢,又不想在自己电脑上进行共享(要求贼高),怕电脑卡。然你呢,把这需求和供应商说了,然后给搞来了一个叫“打印服务器”的神器。
这小东西把USB打印机插上面,不需要给打印服务器装驱动(驱动是安装自己电脑上,这个和普通的网络打印机一样),就能够实现网络打印了。反正我认为很有意思,猜测这东西可能和串口服务器一样,只是单纯转发,而并不需要提供复杂的服务。
像普通的打印机共享,基本都是基于一定的协议的。比如samba协议,就常见的Windows共享协议,创建共享打印机进网上邻居双击安装打印机就可以使用了。还有是http共享打印机,这个是cups可以创建的共享打印机,可以通过一个http的url链接进行打印,并且支持使用代{过}{滤}理服务器。
而9100端口,常见于本身就是网络打印机的打印机,公司里十分常见。支持postscript等脚本,通过9100发送给打印机后,打印机就能打印出来。原理简单,稳定,成本低廉,有比较多的优势,所以被广泛的使用。
USB打印机转成9100的网络打印机,在Linux上应该是比较容易实现的,因为有一群大神开发了cups这牛物。但如果考虑移植性和轻便,以及乐趣,自然是要自己实现才比较有意思。
[section .正文]
作为一只“栈溢出工程师”,凡事讲究亲力亲为是我们的准则。
对于设计验证和实现,首先考虑验证程序简单,并且能够实现跨平台。首选qt,libusb本身是个C库,提供的是C的头文件,所以选用C/C++写会避免不少麻烦。然后qt能够实现不同系统上包括UI和网络代码的一致性。
关于libusb,他是一个比较有名的跨平台USB库,这套库支持win、linux、mac os、bsd等操作系统。知名的开源开发环境Arduino就是通过libusb库来实现atmage32u4这种mcu下载程序的。
但,libusb有分两个主流的版本,一个是libusb-0.1(简写为libusb0,Arduino使用的就是0.1版本的库)还有个是libusb-1.0(Linux2.6之后的版本基本上都只用1.0了,并且包管理器里0.1的devel版本已经不包含头文件了。mac os x中brew可以安装的是1.0.22版本,freebsd也是提供的1.0版本)。可见1.0版本已是主流,考虑兼容性的话个人建议使用1.0版本。
Windows上移植的libusb,libusb-win32是0.1的,另外还有WinUSB(libusb),来自github官方版本,可以详见https://github.com/libusb/libusb/wiki/Windows,也可以看一下zadig(https://zadig.akeo.ie/)这个软件上面提供的介绍。这软件安装USB驱动非常方便,并且开源了他的核心代码,为作者点赞。
[section .验证]
验证1,先写一个USB版的HelloWorld,由于第一次写USB程序,先从简单的开始。
列出VID&PID,USB设备的核心应该就是这个了,当一个不明物体插进USB后,首先系统会获取这个VID和PID,并且自动的搜索驱动。VID(idVendor)是主要识别生产厂商的,PID(idProduct)则是负责识别产品。
这两个东西在一起组成了,USB的唯一ID,重名的几率非常的低。因为同一家厂商是不会做出PID相同的东西的。
其次需要知道的东西是interface(MI,Muti-Interface?),还有endpoint。下面程序是列出打印机的interface和endpoint,操作读写USB设备时,必不可少的参数。
验证2,使用 “nc -l -p 9100>文件” 命令把打印机驱动发送给打印机的数据给保存下来。然后尝试直接把这个数据给发送到USB端口。
验证3,使用qt创建一个监听9100端口的服务器,将读取到的数据,发送到USB端口。
国产线播放免费人成视频播放1小时前0
Thank you for content. Area rugs and online home decor store. 国产线播放免费人成视频播放 国产线播放免费人成视频播放 b是不是越日越大 日本成本人av无码免费国产线播放免费人成视频播放2小时前0
Thank you great post. 国产线播放免费人成视频播放 国产线播放免费人成视频播放 b是不是越日越大 日本成本人av无码免费国产线播放免费人成视频播放4小时前0
Thank you for content. Area rugs and online home decor store. 国产线播放免费人成视频播放 国产线播放免费人成视频播放 b是不是越日越大 日本成本人av无码免费日本成本人av无码免费4小时前0
Nice article inspiring thanks. 国产线播放免费人成视频播放 国产线播放免费人成视频播放 b是不是越日越大 日本成本人av无码免费国产线播放免费人成视频播放4小时前0
Thank you for great information. 国产线播放免费人成视频播放 国产线播放免费人成视频播放 b是不是越日越大 日本成本人av无码免费国产线播放免费人成视频播放4小时前0
Nice article inspiring thanks. 国产线播放免费人成视频播放 国产线播放免费人成视频播放 b是不是越日越大 日本成本人av无码免费国产线播放免费人成视频播放6小时前0
Thank you for great article. 国产线播放免费人成视频播放 国产线播放免费人成视频播放 b是不是越日越大 日本成本人av无码免费国产线播放免费人成视频播放6小时前0
Thank you great post. 国产线播放免费人成视频播放 国产线播放免费人成视频播放 b是不是越日越大 日本成本人av无码免费