摘要:針對基于PC機的打印終端在實際運用中的許多不足提出了一種基于WiFi無線局域網技術的嵌入式移動打印終端設計方案。奪方案采用33C2440A為微處理器,以Linux為嵌入式操作系統,擴展了觸摸屏、掃描儀、打印機等豐富的外設,可以提供查詢、打印等多種功能;移植了WiFi無線網卡,克服了有線限制,可以無線移動;擁有USB等多種接口,方便系統的調試與升級。
關鍵詞:WiFi;打印終端;Linux;nini2440
引言
目前,國內外大多數打印終端是以固定設備的方式為用戶提供數據錄入和打印服務,設備投資較大,并存在安裝、使用不方便等缺陷。嵌入式無線打印終端可以很好地克服以上的缺點,它融入了無線網絡的新技術,可以通過掃描儀、鍵盤和打印機來輸入輸出數據,同時通過WiFi無線網絡,與遠程服務器的數據庫進行數據交互,能滿足超市的收銀系統、圖書館的借還書系統、火車站的售票系統等系統的基本功能的需求;同時隨著打印終端運用的越來越廣泛,它也會為流動性比較疆的應用場合提供方便,例如節假日期間,在旅游區、火車站、電影院等增加臨時售票點、在營業廳和各種消費場所的移動打印查詢終端以及在倉庫配送管理中的應用等等。

嵌入式打印終端的系統架構
無線移動打印系統的架構圖如圖1所示,本系統采用c/s結構,PC機作為遠程服務器,嵌入式打印終端作為客戶端。嵌入式打印終端以S3C2440A處理器為核心,選用Linux操作系統,外接觸摸屏,同時有良好的人機界面,它負責接收輸入設備(掃描儀和鍵盤)的數據,并通過無線局域網與遠程服務器完成數據的查詢與交互,并將結果從打印機輸出;遠程服務器用于存放大型數據庫,并通過無線網絡接收無線移動打印終端發來的數據,完成數據的查詢、更新、發送工作。
系統硬件
嵌入式打印終端硬件結構圖如圖2所示。該平臺選用S3C2240A為處理器,它功能引腳豐富,包含了3個串口引腳,同時集成了豐富的外設控制寄存器,包括LCD控制器、USB設備寄存器等等。以方便外設的擴展。嵌入式打印終端的外設按照作用分類,主要分為兩大模塊:功能模塊和系統調試與升級模塊,功能模塊主要是實現嵌入式打印終端的查詢和打印功能,系統調試和升級模塊主要方便系統的調試和以后系統的升級。
功能模塊主要包含掃描儀、打印機、擴展鍵盤、WiFi無線設備、7英寸的觸摸屏顯示器和128MNandflash。S3C2440A有三個串口,通常情況下,串口0用作整個系統的控制終端,我們選用串口1連接帶Rs-232串口的掃描儀,選用串D2連接帶KS-232串口的微型打印機:擴展鍵盤,由GPIO引腳擴展而成,包含基本的數字鍵和確認鍵,主要是在掃描儀失效或者條形碼不能掃描的時候使用:WiFi無線網卡一般為USB口,目前最流行、性價比最高的是TP-LinkUSB WiFi無線網卡,我們可以將wiFi無線網卡插在電路板的USB Host接口上:7英寸的觸摸屏顯示器主要用于顯示,也可以通過觸摸屏進行一部分選擇和確認操作:128M Nandflash用于存儲Linux操作系統和文件系統。
系統調試與升級模塊主要由一個串行接口、一個RJ45的網絡接口、一個USB接口組成,串口作為整個系統的控制終端,顯示調試信息;RJ45網絡接口可以運用NFS服務,進行在線系統調試:USB接口可以下載更新的程序,也可以對Nandflash的程序進行拷貝與備份。

系統軟件
Linox驅動程序
嵌入式打印終端外接了輸入輸出設備,所以要編寫輸入設備和輸出設備的驅動。編寫設備驅動就是為具體硬件的file-operations結構編寫各個函數(包括open、read、write、ioctl等),Linux內核中驅動程序種類齊全,我們可以在同類型驅動的基礎上進行修改以符合具體的單板。
無線網卡的移植
嵌入式打印終端與服務器之間的網絡通信,主要是無線網卡與服務器端的無線路由之間的通信。Linux內核驅動豐富,包含了多種型號的USB無線網卡驅動,用戶可以選擇合適無線網卡型號。本嵌入式打印終端系統中采用Linux-2.6.32.2內核。為了加載無線網卡驅動,我們在內核所在的目錄運行make menuconfig,進入內核的配置主菜單。進行如下選擇:networkingsupport-wireless-Generic IEEE 802.11Networking Stack(mac80211),這樣就選擇了無線網卡的協議類型,然后退回到內核配置主菜單,選擇devicedrivers,通過device drivers->networddevice support-wireless LAN,選擇Wireless LAN(IEEE 802.11)子項,并進入就可以看到已經配置了以芯片廠商為分類方式的常見的各種USB無線網卡類型,我們可以選擇我們需要的USB無線網卡類型。我們重新編譯內核,然后下載到程序存儲芯片中重啟,就可以在啟動信息中看到無線網卡已被識別。通過正確配置無線網卡,就可以實現無線網卡與無線路由的無線連接了,連接信息如圖3所示。如果無線路由連接網絡,嵌入式打印終端通過無線網卡連接上網,那么它發揮作用的空間也就更大。
服務器網絡通信的實現
服務器網絡通信主要是實現對打印終端發出的信號進行偵聽,如果打印終端有連接信號發出,則與之連接,然后按照終端的要求實現數據接收、查詢以及發送,具體步驟如下。
(1)建立socket。分三步進行:首先,要定義服務器的端口和最大連接數;其次,填充服務器的IP地址和端口號;最后,建立一個TCPsocket,如下所示:

server=socket(AF_INET,SOCK_
STREAM,O);//定義為局域網,
套接字為流格式
if(server==INVALID_SOCKET)
//需要錯誤檢查
{
prinff(create server error!\’);
exit(1);
}
(2)綁定IP,即綁定服務器的IP地址和端口號,以便接收打印終端的連接要求。
(3)監聽打印終端的請求。如果打印終端無連接,則進入等待狀態,即無限循環狀態,如果有連接,則建立連接并執行accept。
(4)收發數據。收發數據也分為三個步驟,首先,接收打印終端發來的數據;然后,服務器根據接收的數據的關鍵字,在數據庫中進行查詢;最后將數據庫中查詢的結果發送到打印終端。
打印終端網絡通信
打印終端應用程序的主要功能是:將條形碼掃描儀等輸入設備讀取的數據,經過開發板的串口接收,然后由無線網絡傳送到服務器,服務器接收并查詢數據庫,并將查詢的結果返回到打印終端,由打印機打印出相應的結果。其中打印終端的網絡部分的程序設計的具體步驟如下所示:
(1)建立socket,并進行錯誤檢查,失敗則返回;
(2)設定端口、連接方式、連接地址,并試圖連接服務器;
(3)等待輸入設備輸入數據,如果沒有數據輸入,則一直等待;
(4)如果有數據輸入且錄入完畢,則發送給服務器;
(5)等待服務器返回數據;
(6)將返回的數據進行打印;
(7)關閉socket和相應的設備文件。
應用程序的開發
服務器端采用Windows Server2003操作系統,并安裝SQL server2005數據庫軟件。使用Visual c++6_0開發服務器端應用軟件。服務器端接收到終端發送的查詢指令后,解析后分析所要查詢的內容,并通過SQL查詢,根據需要查詢的關鍵字搜索到相對的內容,編碼后發送給相應終端。
嵌入式無線移動打印終端采用QT4.6開發人機界面,顯示查詢結果。QT是一個跨平臺的c++圖形界面庫,它有優良的跨平臺特性,運用于多種操作系統,它有良好的封裝機制使得它模塊化程度非常高、可重用性非常好。同時,QT還有一個輕量級的跨平臺集成開發環境Qt Creator,可以讓首次接觸QT開發框架的開發人員能迅速上手和操作,嵌入式無線打印終端人機界面在qvfb下的效果圖如圖4所示。
結語
與PC機無線打印終端相比,基于WiFi無線網絡的嵌入式移動打印終端具有明顯的優點,它價格便宜、功耗低、傳輸速度快、體積小、移動方便:選用Linux作為嵌入式操作系統,其設備驅動或新文件系統模塊化,用戶可根據需要動態加載,這樣有利于支持新設備、新功能,方便系統的升級。