很多公司都有这么个痛点:一台USB接口的打印机接在某台电脑上,只有这台电脑能直接打印,其他同事想打印就得开着这台电脑,还得共享权限,电脑一关机或者系统出问题大家都打印不了。解决办法很简单,加一个网络打印服务器——几十块到几百块的小盒子,一头接USB打印机,一头插网线,普通USB打印机立刻变成网络打印机,不管电脑开不开机,局域网里的人都能直接打印。今天就聊聊网络打印服务器的工作原理、硬件结构、常用协议,以及自己DIY一个的思路。
打印服务器说白了就是一台小型的嵌入式计算机,它有两个关键接口:一个USB接口(接打印机的USB Slave端,也就是B口),一个以太网接口(接局域网交换机)。它的核心工作就是做"协议转换":局域网里的电脑通过网络打印协议(比如RAW协议的9100端口、LPR/LPD协议的515端口、IPP协议的631端口)把打印数据发过来,打印服务器收到数据之后,再通过USB接口把数据转发给打印机,相当于把原本电脑和打印机之间的USB连线换成了网络。这样一来,只要打印服务器开着,任何能连上网的电脑、手机、平板都能直接发送打印任务,不用依赖某台主机。
硬件结构上,打印服务器就是个典型的嵌入式小设备,核心是一颗MCU或者MPU,常见的方案有几种:第一种是用ARM Cortex-M系列的单片机(比如STM32F107、STM32F407,带USB Host控制器和以太网MAC),成本低,跑裸机或RTOS,功能简单一些;第二种是用MIPS或ARM的路由器芯片方案(比如MT7620、RT5350这些常见的WiFi路由器芯片),跑Linux系统,功能强,还能扩展WiFi打印、云打印;第三种是专用的打印服务器芯片,比如Prolific、MOSCHIP这些厂商出的USB转网络打印芯片,外围电路简单,拿来就能用。除了主控芯片,外围一般还有:USB Host接口(A型口,接打印机)、以太网PHY和RJ45网口、SPI Flash存固件、SDRAM或SRAM做缓存(存打印数据)、电源部分(一般DC 5V供电)、有的还带WiFi模块和复位按键。
软件层面,打印服务器要支持几种常见的网络打印协议,不然各种系统和软件连不上。最常用的三个:第一个是RAW协议,也叫JetDirect协议,HP公司搞的,就是通过TCP的9100端口直接传输打印数据,电脑端把它配置成"标准TCP/IP端口"就能用,是目前兼容性最好、速度最快的协议,Windows、macOS、Linux都支持。第二个是LPR/LPD协议(Line Printer Remote / Line Printer Daemon),基于TCP 515端口,是UNIX时代就有的打印协议,兼容性也不错,很多老系统和打印机默认支持。第三个是IPP协议(Internet Printing Protocol),基于HTTP的631端口,支持打印任务管理、状态查询,macOS和CUPS打印系统用得比较多,还支持跨网络、跨互联网打印。好的打印服务器这三个协议都会支持,用户根据自己的需求选就行。
打印服务器的USB部分工作在USB Host模式,它要模拟电脑去识别打印机设备,这就涉及到USB打印机类(USB Printer Class,属于USB Device Class的子类,协议号是7)。标准的USB打印机遵循Class规范,通过Bulk传输端点传输打印数据,打印服务器只要实现了USB Host的打印机类驱动,就能识别大部分主流的USB打印机(HP、Canon、Epson这些都兼容标准类协议),收到网络端的数据后直接通过USB Bulk端点发给打印机。这里要注意,有些打印机不是标准的USB打印机类,需要厂商的专用驱动(比如一些GDI打印机、Win打印机),这种打印服务器可能识别不了,买打印服务器的时候要注意看兼容性列表。除了打印数据传输,有的打印服务器还支持通过USB读取打印机的状态(缺纸、卡纸、缺墨),反馈给客户端。
自己DIY一个打印服务器其实也挺有意思,不用画PCB,用现成的开发板就能做。最简单的方案:用树莓派Zero W(带WiFi和USB口),跑Raspberry Pi OS,装CUPS打印系统和Samba,CUPS负责打印管理,Samba把打印机共享成Windows网络打印机,配置一下就能用了,还支持WiFi打印、手机打印,总成本几十块。另一个方案是用带USB Host和以太网的STM32开发板,移植lwIP协议栈跑TCP服务器(9100端口),再移植USB Host的打印机类驱动,实现网络数据到USB的转发,这种方案成本低、体积小、启动快,适合做成产品。实际使用中有几个小技巧:打印服务器的IP地址最好设成静态的,不要用DHCP,不然地址变了大家的打印端口都得重新配;如果是大公司很多人打印,选带缓存大一点的打印服务器,不然复杂的打印任务(比如几十页的PDF、带图片的文档)会很慢;无线打印的话尽量用5GHz WiFi或者有线,2.4GHz干扰大,大文件打印容易卡顿。
上一篇:多参数监护仪原理:心电、血压、血氧这些数据是怎么测出来的?
下一篇:没有了