基于ARM的多终端自助打印系统


这是以前做的一个创新项目。基于ARM的多终端自助打印系统。和仪器与电子学院的培松同学和计算机与控制工程学院的建斌同学一起做的。

最后产品可以完成微信客户端扫码打印。感觉构思不错。现在把开发过程记录一下。


我们平时打印的一般流程是这样的。

赶去打印店。在电脑上打开文档。然后打印。


这样存在一些缺点。

1.U盘很容易丢。

2.浪费PC机资源。

打印店里面。每个人需要打印的话。都要占用一个台式机。而打印机只有一台。

用台式机作为打印的终端未免太过奢侈。可以说除了打印程序所占用的那点内存和CPU之外。其他资源都浪费了。

3.边角零钱。

打印花的经常是1角2角的这种边角零钱。这种钱放在钱包里会感觉很不方便。于是考虑电子的支付方式。


这个系统的打印流程是这样的。

1.用户上传文档到自己的账户。

2.选择支付文档。

3.扫二维码打印。

上面的缺点取反就是这个系统的优点了。


具体架构是这样的:

ARM板通过USB线和打印机连接。

这里采用的ARM板是TQ2440。打印机是惠普的一款激光打印机HP_LaserJet_1020。

完成后的系统可以每个ARM板连接一台打印机。

ARM板还有一个功能就是动态显示二维码。


客户端和服务器网络连接。

这保证了文档可以从终端传到服务器上。

服务器的主要功能是实现账户管理。还有激活在ARM板上运行的打印后台进程。


大概整理一下这个数据流。

首先手机关注微信公众号。可以登录自己的个人账户。

可以上传文档到个人账户。

通过支付来获得打印权限。

扫描平台随机产生的二维码。就可以发送请求到服务器。

服务器处理请求。这包括检查权限等。(看你有没有付款等)。

服务器激活各ARM板上的后台进程。(这里的后台进程是Linux下的cupsd。打印管理程序。)

cupsd调用特定于ARCH的驱动(这里的ARCH是指不同的打印机架构。)

发送字符流到USB。

cupsd控制打印队列。


当然。如果觉得我说的不够形象。可以下载演示的视频。

part1:

part2:



ARM板上运行Linux。Linux下的打印机分为几大类。PostScript打印机和其他的。。PS语言是PostScript打印机和计算机交流的方式。应用层程序将生成的PostScript文档直接发送给打印机。

如果打印机是PostScript的。就能打了。有些打印机不能打。


按照一贯的计算机思想。可以在中间加一层。就是GhostScript、他将PostScript转换成比较低级的打印机能识别的格式。


driver程序(驱动)将转化好的打印文件。按照各种打印机的不同格式发送给打印机。是应用层程序与底层打印机硬件交互的媒介。


不同打印机映射到的驱动程序是不同的。


我们使用的是HP_LaserJet_1020。CUPS版本是1.4.8、不附带特定的PPD文件。

PostScript Printer Description file是描述打印功能的文件,包含页面。字体。的一些描述数据结构。,简称PPD文件。与driver相对应。

必须找到特定打印机的PPD文件。并安装到打印管程上。


一旦牵涉到多进程。各种stuff都变得不那么简单。为了让打印作业之间不冲突。就需要打印管程。

在UNIX-like系统上。用的最多的就是CUPS了。她接收要打印的文件。判断是否需要将其转换成Postscript。一般是通过文件类型来判断的。


判断GhostScript应使用什么样的driver处理此PostScript文件。一般通过PPD文件中相应的字段。把Ghostscript处理的结果输出到打印设备上。


CUPS和Ghostscript之间。还有一个层面。就是打印过滤程序foomatic-rip。是一个用Perl编写的脚本程序。

CUPS通过它来调用Ghostscript程序。从而把PostScript作业转化成PPD文件描述的打印机自身能识别的格式。


在网上找了很长时间。才先一篇介绍CUPS原理的。

关于CUPS的详细原理:http://www.linuxidc.com/Linux/2010-12/30698.htm


好了关于这个软硬架构介绍到此为止。下面开始搭建环境。


嵌入式宿主机OS是RHEL6.3。

交叉编译器是arm-linux-gcc-4.3.2。


宿主机网络设置。IP配置为192.168.0.107。

修改网卡配置文件。

[root@bogon ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
BOOTPROTO=dhcp
NM_CONTROLLED="yes"
ONBOOT="no"
TYPE="Ethernet"
UUID="bb46e64b-53d1-4229-8a36-8b53297b3601"
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=00:23:5A:DD:1E:57
PEERDNS=yes
PEERROUTES=yes
LAST_CONNECT=1442248415

将ONBOOT字段改成"yes"。


关闭NetworkManger。

[root@bogon ~]# service NetworkManager stop


重启网络服务。

[root@bogon ~]# /etc/init.d/network restart


关闭防火墙。

[root@bogon ~]# /etc/init.d/iptables stop


关闭SELinux。

[root@bogon ~]# setenforce 0


在宿主机上启动tftp服务。

安装tftp服务器:

[root@bogon Packages]# rpm -ivh tftp-server-0.49-7.el6.i686.rpm
[root@bogon Packages]# rpm -ivh tftp-0.49-7.el6.i686.rpm

修改配置文件:

# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often use

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值