嵌入式打印终端的系统架构
无线移动打印系统的架构图如图1所示,本系统采用C/S结构,PC机作为远程服务器,嵌入式打印终端作为客户端。嵌入式打印终端以S3C2440A处理器为核心,选用Linux操作系统,外接触摸屏,同时有良好的人机界面,它负责接收输入设备(扫描仪和键盘)的数据,并通过无线局域网与远程服务器完成数据的查询与交互,并将结果从打印机输出;远程服务器用于存放大型数据库,并通过无线网络接收无线移动打印终端发来的数据,完成数据的查询、更新、发送工作。
系统硬件
嵌入式打印终端硬件结构图如图2所示。该平台选用S3C2240A为处理器,它功能引脚丰富,包含了3个串口引脚,同时集成了丰富的外设控制寄存器,包括LCD控制器、USB设备寄存器等等,以方便外设的扩展。嵌入式打印终端的外设按照作用分类,主要分为两大模块:功能模块和系统调试与升级模块,功能模块主要是实现嵌入式打印终端的查询和打印功能,系统调试和升级模块主要方便系统的调试和以后系统的升级。
功能模块主要包含扫描仪、打印机、扩展键盘、WiFi无线设备、7英寸的触摸屏显示器和128M Nandflash。S3C2440A有三个串口,通常情况下,串口0用作整个系统的控制终端,我们选用串口1连接带RS-232串口的扫描仪,选用串口2连接带RS-232串口的微型打印机;扩展键盘,由GPIO引脚扩展而成,包含基本的数字键和确认键,主要是在扫描仪失效或者条形码不能扫描的时候使用;WiFi无线网卡一般为USB口,目前最流行、性价比最高的是TP-Link USB WiFi无线网卡,我们可以将WiFi无线网卡插在电路板的USB Host接口上;7英寸的触摸屏显示器主要用于显示,也可以通过触摸屏进行一部分选择和确认操作;128M Nandflash用于存储Linux操作系统和文件系统。
系统调试与升级模块主要由一个串行接口、一个RJ45的网络接口、一个USB接口组成,串口作为整个系统的控制终端,显示调试信息;RJ45网络接口可以运用NFS服务,进行在线系统调试;USB接口可以下载更新的程序,也可以对Nandflash的程序进行拷贝与备份。
系统软件
Linux驱动程序
嵌入式打印终端外接了输入输出设备,所以要编写输入设备和输出设备的驱动。编写设备驱动就是为具体硬件的file-operations结构编写各个函数(包括open、read、write、ioctl等),Linux内核中驱动程序种类齐全,我们可以在同类型驱动的基础上进行修改以符合具体的单板。
嵌入式打印终端与服务器之间的网络通信,主要是无线网卡与服务器端的无线路由之间的通信。Linux内核驱动丰富,包含了多种型号的USB无线网卡驱动,用户可以选择合适无线网卡型号。本嵌入式打印终端系统中采用Linux-2.6.32.2内核。为了加载无线网卡驱动,我们在内核所在的目录运行make menuconfig,进入内核的配置主菜单。进行如下选择:networking support→wireless→Generic IEEE 802.11 Networking Stack(mac80211),这样就选择了无线网卡的协议类型,然后退回到内核配置主菜单,选择device drivers,通过device drivers-->netword device support-->wireless LAN,选择Wireless LAN(IEEE 802.11)子项,并进入就可以看到已经配置了以芯片厂商为分类方式的常见的各种USB无线网卡类型,我们可以选择我们需要的USB无线网卡类型。我们重新编译内核,然后下载到程序存储芯片中重启,就可以在启动信息中看到无线网卡已被识别。通过正确配置无线网卡,就可以实现无线网卡与无线路由的无线连接了,连接信息如图3所示。如果无线路由连接网络,嵌入式打印终端通过无线网卡连接上网,那么它发挥作用的空间也就更大。
服务器网络通信的实现
服务器网络通信主要是实现对打印终端发出的信号进行侦听,如果打印终端有连接信号发出,则与之连接,然后按照终端的要求实现数据接收、查询以及发送,具体步骤如下。
(1)建立socket。分三步进行:首先,要定义服务器的端口和最大连接数;其次,填充服务器的IP地址和端口号;最后,建立一个TCPsocket,如下所示:
server=socket(AF_INET,SOCK_
STREAM,0);//定义为局域网,
套接字为流格式
if(server==INVALID_SOCKET)
//需要错误检查
{
printf(create server error!\n’);
exit(1);
}
(2)绑定IP,即绑定服务器的IP地址和端口号,以便接收打印终端的连接要求。
(3)监听打印终端的请求。如果打印终端无连接,则进入等待状态,即无限循环状态,如果有连接,则建立连接并执行accept。
(4)收发数据。收发数据也分为三个步骤,首先,接收打印终端发来的数据;然后,服务器根据接收的数据的关键字,在数据库中进行查询;最后将数据库中查询的结果发送到打印终端。
打印终端网络通信
打印终端应用程序的主要功能是:将条形码扫描仪等输入设备读取的数据,经过开发板的串口接收,然
后由无线网络传送到服务器,服务器接收并查询数据库,并将查询的结果返回到打印终端,由打印机打印出相应的结果。其中打印终端的网络部分的程序设计的具体步骤如下所示:
(1)建立socket,并进行错误检查,失败则返回;
(2)设定端口、连接方式、连接地址,并试图连接服务器;
(3)等待输入设备输入数据,如果没有数据输入,则一直等待;
(4)如果有数据输入且录入完毕,则发送给服务器;
(5)等待服务器返回数据;
(6)将返回的数据进行打印;
(7)关闭socket和相应的设备文件。
应用程序的开发
服务器端采用Windows Server 2003操作系统,并安装SQL server 2005数据库软件。使用Visual C++ 6.0开发服务器端应用软件[3]。服务器端接收到终端发送的查询指令后,解析后分析所要查询的内容,并通过SQL查询,根据需要查询的关键字搜索到相对的内容,编码后发送给相应终端。
嵌入式无线移动打印终端采用QT4.6[4-5]开发人机界面,显示查询结果。QT是一个跨平台的C++图形界面库,它有优良的跨平台特性,运用于多种操作系统,它有良好的封装机制使得它模块化程度非常高、可重用性非常好。同时,QT还有一个轻量级的跨平台集成开发环境Qt Creator,可以让首次接触QT开发框架的开发人员能迅速上手和操作,嵌入式无线打印终端人机界面在qvfb下的效果图如图4所示。
结语
与PC机无线打印终端相比,基于WiFi无线网络的嵌入式移动打印终端具有明显的优点,它价格便宜、功耗低、传输速度快、体积小、移动方便;选用Linux作为嵌入式操作系统,其设备驱动或新文件系统模块化,用户可根据需要动态加载,这样有利于支持新设备、新功能,方便系统的升级。
上一篇:世界移动通信大会 手机钱包受关注
下一篇:玩转ZigBee的捷径:选“模块”还是“芯片”?
推荐阅读最新更新时间:2024-05-07 16:15