|
技术文库首页
|
编程
|
IC
|
晶体管
|
精解
|
中频
|
其它
|
电源
|
基础
|
电脑
|
无线
|
液晶
|
微波
|
空调
|
手机
|
|
热水器
|
电动车
|
LED屏
|
焊机
|
您现在的位置: 华玉生活网 >> 技术文库 >> 无线 >> 正文>> 繁體中文

基于开源软件的嵌入式网络打印服务器

首都师范大学徐远超中国科学院计算技术研究所江涛引言目前常用的打印机有两种接口形式:USB口和Ethernet网口。由于价格相对较低,USB口的打印机更为普遍。USB口打印机不能独立工作,必须依附于一台主机。为了在一个局域网环境中共享使用一台USB口打印机,需要为该打印机配备一台服务器,然后通过共享设置实现打印机的网络共享。这种方式有几个方面的缺陷:需要占用一台服务器资源;耗电;容易中毒导致无法正常打印;由于长时间不间

首都师范大学  徐远超

中国科学院计算技术研究所  江涛

引  言

目前常用的打印机有两种接口形式:USB口和Ethernet网口。由于价格相对较低,USB口的打印机更为普遍。USB口打印机不能独立工作,必须依附于一台主机。为了在一个局域网环境中共享使用一台USB口打印机,需要为该打印机配备一台服务器,然后通过共享设置实现打印机的网络共享。这种方式有几个方面的缺陷:需要占用一台服务器资源;耗电;容易中毒导致无法正常打印;由于长时间不间断运行,出现故障的概率高,导致无法打印;占用办公空间。

随着嵌入式处理器主频的不断提高,设计专门的嵌入式网络打印服务器已经成为共识。HP等很少的几家打印机公司在几年以前就推出了这样的嵌人式设备,但基本上都只针对本公司特定的几种打印机,无法做到通用。很多文献,如参考文献[1]、[2]中提到的设计方案不够具体。基于这些情况,设计并实现了一款基于Linux的嵌入式网络打印服务器,硬件设计简单,软件完全开源,只要有Linux下的打印驱动,就可以支持。

1  总体方案设计

要把USB口打印机连入网络,有两种设计方案,一种是使用USB/以太网协议转换器,另一种是设计一个带有USB口和以太网网口(包含操作系统)的嵌人式设备。尽管协议转换器软硬件简单,但不支持多用户同时并发打印,也就无法实现共享打印的要求。

1.1  硬件设计

笔者是在中科院计算所自主研制基于龙芯1号核的“聚芯SoC”1000C上实验的,主频266 MHz。作为产品,只需要提供电源接口、USB口和以太网口。调试阶段,增加串口和JTAG调试接口。考虑到多用户并发打印的负载和实际测试效果,因为移植的开源软件有很多依赖库,所占空间较大,故选用的是1 GB容量的Flash。打印过程中,打印文件在内存中缓存,为了应对较大的打印文件和提高运行速度,建议选择256 MB以上的SDRAM。

嵌入式网络打印服务器硬件结构框图如图1所示。

1.2软件设计

软件设计是整个系统设计的重点,也是难点。在设计思想上,强调尽可能使用开源软件,主要是为了缩短研发周期并能保证打印系统的可靠性和稳定性。操作系统选择目前主流的Linux操作系统。Linux操作系统下的打印控制系统根据打印机的命令方式,分为文本打印机、Post-Script打印机和其他种类。文本打印机不需要驱动程序,就可以直接用cat命令驱动打印机,但只能打印英文,已很少使用。PostScript(简称PS)是一种绘图能力很强的解释性脚本语言,由Adobe公司制定。它因占用系统资源少,处理过程标准化与设备无关而被广泛应用。直接支持PostScript的打印机通常都是比较高级的办公打印机,对于这类打印机来说,PS语言是它们和计算机之间沟通的最简便的方式,应用程序可以将生成的PS文档直接发给打印机打印。但大多数情况下使用的是各种比较低档的,不能直接支持PostScript的打印机,这类打印机只能识别各厂家自己的指令集。

因此,必须采取一种机制,把PostScript格式转换成打印机能够识别的命令格式,而GhostScript程序就是用来完成这个工作的。Ghostscript将PostScript转换成各种打印机能够识别的格式。

打印机驱动程序是应用软件与打印机之间交流的桥梁,它可以将转化好的打印文件,按照各种打印机不同的格式发送给打印机,因此不同的打印机都有自己特有的打印驱动程序。另外,随驱动程序一起发布的还有PPD文档,PPD(PostScript Printer Description)是用来描述打印机功能的文件,里面包含了字体、打印页面等的一些描述。在使用一款打印机之前,必须找到其相应的PPD文件,并正确地安装到打印管理器程序上。笔者所用打印机为HP 1020plus激光打印机,CUPS不附带此驱动,只能另行安装。

为了让不同的作业在打印的时候不产生冲突,就需要一个打印管理程序。这类管理程序很多,使用最为广泛的莫过于CUPS。CUPS接收要打印的文件;通过文件的类型判断是否需要将其转换为PostScript,如果需要,则调用相应的应用程序进行转换;通过PPD文件来判断Ghost-Script应使用何种驱动处理此PostScript文件;把Ghost-Script处理的结果输出到打印设备上。

在打印管理程序和Ghostscript之间,通常还安装一种统一的打印过滤器程序foomatic-rip。它是用perl编写的脚本程序,打印管理程序通过它调用Ghostscript程序,从而把PostScript作业转换成PPD文件描述的打印机自身能够识别的格式。

2几个关键问题

2.1软件的交叉编译

由前面的分析可知,打印服务器需要的开源软件支持,为了运行于嵌入式Linux环境,需要对它们一一进行交叉编译。通常的编译方法是在宿主机上进行,笔者在反复实验后不得不放弃,原因在于这些开源软件还依赖于很多的其他软件包。建议编译安装直接在开发板上进行,虽然速度较慢,但可以及时发现缺少的包。此编译过程大约需要一周的时间。


2.2  CGI程序的编写

嵌入式网络设备通常都提供web管理方式,用以修改配置等。以修改IP地址为例,需要修改源码目录下的cgi-bin子目录下的admin.C文件,参照do_am_printer()函数新增函数do_modify_ip,此函数的功能为读取IP地址所在的配置文件,将IP地址、子网掩码、默认网关等显示在页面文本框中,允许修改,提交修改时该函数将新的参数覆盖原配置文件中旧的参数。为实现这一功能,主要用到了CUPS提供的文件操作函数cupsFileGets、cupsFileOpen、cupsFilePrintf,和有关CGI变量的读写函数cgiGetVariable、cgiSetVariable和界面的显示函数cgiStartHTM如IP地址L(title)、cgiCopyTemplateLang(“error_ip.tmpl”)、cgiEndHTML()。有关文件的读写操作,可参照CUPS目录下的testfile.c文件。

2.3界面和提示语言汉化

CUPS支持多国语言版本,如果汉化,需要对界面标识、提示、按钮等全面进行汉化,工作量较大,需要修改doc/index.html,需要把templates语言版本挪到最外层,需要在locale/cups_zh.po修改或增加新的中英文对照信息。更详细的信息可参考CUPS运行后通过浏览器访问http://localhost:631/help下的Translating and Customizing CUPS文档。

2.4 CUPS配置与调试

编辑/etc/cups/cupsd.conf在Location选项中添加容许访问的网段。为简单起见,在Order allow,deny后直接输入Allow all即可。

编辑/etc/cups/mime.convs,找到application/octet-stream application/vnd.cups-raw 0-行,将其注释掉,否则pdf、doc等文件格式将不被支持,提示“Print file wasnot accepted(Unsupported formatapplication/octet-stream!)”错误。

另外,要将防火墙中对631端口的访问控制去掉,否则将提示打印服务器忙。

在CUPS调试过程中,如果将cupsd.conf中的loglev-el info改成loglevel debug,可以在var/log/cups/error_log中看到更多的输出信息,极大地方便了调试,也可借助网络抓包程序辅助调试。在确认打印机能够工作之前,暂不要通过网络方式驱动打印机,可用命令行的方式添加、使能并测试打印机是否工作正常。由于没有成熟的文档,过程比较艰辛。

CUPS启动后,可通过浏览器方式管理打印机。连接好打印机,进入web管理界面,找到“Add printer”。选择正确的驱动程序,如果所连接打印机的驱动程序不存在,则必须手工添加驱动程序。添加完成后,可以打印测试页看看打印机是否可以正常工作。

3客户端连接

3.1  Windows客户端

在添加打印机时,选择添加的打印机类型为“网络打印机”,在URL中输入http://printer_server_ip:631/printers/printer_name,其中printer_server_ip为CUPS打印服务器的IP地址,631为CUPS服务端口,printer_name为已添加的打印机的名称。如果提示URL错误,请修正后再试,最后提供Windows下相应的打印机驱动即可。如果出现连接异常,建议关闭XP的防火墙服务(尽管理论上不受其影响);也可以使用samba服务来共享打印机,这是最常规的做法,只需配置samba服务,将打印机共享。在客户端通过IP搜索,一般能够找到打印服务器。

3.2 Linux客户端

对于已联网并且安装了CUPS的Linux客户端来讲,能够自动检测到网络中采用CUPS管理的打印机。因此,只需要找到菜单(RedHat Enterprise Server)“系统→首选项→更多首选项→默认打印机”或(fedora)“桌面→首选项→更多首选项→默认打印机”,将弹出网络上所有已存在的打印机,选择其中的某一在线打印机作为默认打印机即可。如果Linux客户端没有安装CUPS,则需要手工去添加打印机。

结  语

本文设计并实现的打印服务器完全使用开源软件,扩展性强,只要能够找到Linux下的驱动程序源码,就能够轻松加入到打印服务器的支持列表中。给出的http打印方式相比samba而言有三个方面的优势,配置简单,使用安全,可以跨网段打印。打印服务器调试过程中的主要技术问题都已包含在本文中,经实际反复测试,打印效果良好,完全实用。


瑞达币购买
桂山秋竹_唐年桂2023年
桂北云雾图_唐年桂202

  • 扩展阅读
  • 上一个文章:
  • 【返回网站首页】 【返回无线】
  • 下一个文章:
  • 【字体: 】【】【发表评论】【加入收藏】【告诉好友】【打印此文
    文章 软件 电影 商品

    相关文章

    本站公告

    • 扫一扫,打赏给我们,谢谢!

      本站2016年12月16日起取消ruida.org.cn域名,该域名正式作废,该域名发布任何信息与本站无关。


      启用ruida.orghy928.net域名;

      瑞达网,瑞达科技网宣

    附页内镶内容
    健康养生 商场新品 股市K线、指标知识
     六种药酒配制法[11月7日]
     国公酒_散风祛湿,舒筋活络[3月8日]
     气血双补党参、麦冬、黄芪炖[11月29日]
     参桂再造丸_臂丛神经痛[11月29日]
     臂丛神经痛该怎样治疗[11月29日]
     舒筋络酊、百宝丹擦剂、参桂[11月29日]
     臂丛神经痛针灸治疗[11月29日]
     枳椇子_利水渗湿药[11月29日]
     三七、丹参、西洋参_颈椎病[8月17日]
     枸杞泡姜芽(嫩姜)的做法及功[5月20日]
     瑞达币购买
     桂山秋竹_唐年桂2023年新作品
     桂北云雾图_唐年桂2023年新作品
     广西2019年《高考指南》+《招生计
     金士科前置过滤器
     金牛前置过滤器
     USB口24系列编程器第二版含USB延
     液晶电视、液晶显示器图纸、维修
     彩电、显示器、DVD、EVD打印机等
     高清CRT彩电、显示器图纸刻录 4G
     [理财]各种短视频赚钱方法
     [会员]专业交易实战控制系统
     [理财]1分2分5分硬币回收价格表(20250123)
     [理财]1分2分5分硬币回收价格表(20230928)
     [理财]1分2分5分硬币回收价格表(20230624)
     [理财]2022 年新版1分2分5分硬币回收价格表…
     [理财]微信收款码如何开通商业版收信用卡费…
     [指标]R平方_基金指标
     [指标]标准差_基金指标
     [指标]平均回报_基金指标
    装修案例 网站建设 电器维修
     一般水电安装几个常用尺寸[1月29日]
     三相电表接法及度数的正确读…[5月8日]
     万能通用卧室房门锁更换步骤…[2月22日]
     乳胶漆的八大施工步骤及涂刷…[2月14日]
     旧墙翻新步骤及注意事项[2月14日]
     屋面防水施工工艺流程及注意…[1月16日]
     专利产品“防污吸气帽”新产…[1月8日]
     鲁班尺吉数对照表高清图片查…[10月29日]
     砂浆胶作用与危害[9月21日]
     4种处理水泥地面起砂方法[9月21日]
     网页html点击切换显示内容完[11月7日]
     动易SiteWeaver6.6网站管理系[7月31日]
     中国阴历农历JS支持 HTML网页[2月26日]
     java script error 容错处理[2月15日]
     几款还不错的网页特效显示日[2月14日]
     图片可以调大小的代码[12月14日]
     动易SW6.8网站系统改自适应支[11月20日]
     网站建设_套餐服务[12月4日]
     网站建设-费用明细[12月4日]
     不显示出来的代码[12月3日]
     联想 小新Air 14 2019笔记本…[6月15日]
     滚筒洗衣机脱水声音大原因及…[4月17日]
     智能电视不能开机强制恢复出…[1月16日]
     各大品牌智能电视机恢复出厂…[1月16日]
     洗衣机自己排水或不存水漏水…[6月15日]
     海尔冰箱出现-03还滴滴报警[5月29日]
     TCL电视通用教程安装教程[2月2日]
     TCL L43V7300A-3D液晶彩电出…[2月2日]
     先锋液晶电视LED-32B550无光…[1月17日]
     智能电视主板的应用与维修(…[1月11日]
    电器资料 下载 读书
     三个代码让电脑提速畅通秘籍[3月13日]
     视得安750D6对讲门铃工作原理…[9月13日]
     什么是量子芯片和光子芯片[5月14日]
     沃尔沃S90汽车遥控钥匙失灵的…[1月19日]
     LED显示屏瑞合信PLus单双色全…[12月22日]
     Windows 照片查看器无法显示…[8月6日]
     已经设置IE主页,但是打开还…[7月6日]
     如何调整空压机压力?空压机…[6月8日]
     剪映-视频编辑软件手机版使用…[5月28日]
     锂电池保护板作用及同口和分…[3月18日]
     [书籍]滕王阁序_原文_注释译文_白
     [书籍]《天工开物》明代宋应星初
     [电影]《抓娃娃》高清电影
     [联想]Lenovo S540-14API Compl 
     [书籍]《墨子》原文注释译文
     [LED条屏]瑞合信单双色/全彩控制系统
     [LED条屏]LED显示屏瑞合信手机APP6.
     [书籍]全本新注聊斋志异
     [书籍]广西2023年高考指南 招生计
     [书籍]个人防护手册(第二版)
     广西高考2024~2022年历史类([6月25日]
     凤阳花鼓[3月8日]
     《滕王阁序》[3月2日]
     卷一百二十八 艺文_杂记[2月24日]
     卷一百二十七 艺文_杂记[2月24日]
     卷一百二十六 艺文_国朝[2月24日]
     卷一百二十五 艺文_国朝[2月24日]
     卷一百二十四 艺文_五言排律[2月24日]
     卷一百二十三 艺文_历朝[2月24日]
     卷一百二十二 艺文_历朝[2月24日]
    珠宝玉器 在线电视台
     鸡血石与鸡血玉有什么区别[6月12日]
     鸡血玉[6月12日]
     鸡血石 (bloodstone)[6月12日]
     什么是莫桑石(Moissanite)[6月12日]
     可以戴钻石洗澡吗[1月22日]
     钻石如何保养才好呢?[1月22日]
     PT容易花的问题和钻戒保养问…[1月22日]
     切工 钻石的雕刻艺术[1月22日]
     如何保养好钻戒[1月22日]
     钻戒保养方法[1月22日]
     中央体育台
     中央新闻台
     宁夏卫视
     湖北卫视
     西藏卫视
     辽宁卫视
     河北卫视
     北京卫视
     政法频道
     农民频道
     湖南经视
     湖 南 台
     河南频道
     湖南卫视
     兵团卫视
     江苏卫视
     旅游卫视
     湖南都市
     七彩戏剧
     动漫秀场
     游戏风云
     法制天地
     魅力音乐
     新 娱 乐
     南 方 TV
     浙江卫视
     齐鲁频道
     山西影视
     东南卫视
     上海卫视
     贵州电视台
     重庆电视台
     山东卫视
     哪吒之魔童闹海《哪吒2》在线
     《抓娃娃》在线电影
     流浪地球2剧情介绍
     《万里归途》完整版
     《阿凡达2:水之道》耗资3.1
     2021港剧《梅艳芳》5集全.HD
     误杀2 -电影-完整版视频在线
     亲爱的/亲爱的小孩/打拐/家之
     《第一炉香》-电影-完整版视
     《扬名立万》-电影-完整版视
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论

    | 服务声明 | 充值中心| 华安五金电器 | 收费标准| 论坛| 留言| 实用查询| 会员中心| 下载帮助| 设为首页|

    技术支持:瑞达科技 即时交谈QQ:237013889 QQ群:13810759 E-Mail:237013889@qq.com
    非盈利网站,如有侵权,请来信来电告知,第一时间处理,谢谢!
    桂ICP备17008104号 华玉生活网网站统计
    tj