999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android的無線打印系統的設計與實現

2016-12-23 09:04:37王靈芝蘭善燦
長春師范大學學報 2016年12期
關鍵詞:嵌入式系統設計

王靈芝,蘭善燦

(閩南師范大學物理與信息工程學院,福建漳州 363000)

?

基于Android的無線打印系統的設計與實現

王靈芝,蘭善燦

(閩南師范大學物理與信息工程學院,福建漳州 363000)

本文以Android為平臺構建無線智能打印系統,系統設計包含基于Cortex-A9為控制核心的服務器和APP兩部分。移動終端通過WiFi將需要打印的文檔發送至服務器端,該服務器通過USB與打印機連接,從而實現無線智能打印。通過移植Ghostscript及Hpijs工具實現了對惠普Deskjet1050打印機的驅動。

Android;Cortex-A9;WiFi;USB;打印機

傳統的打印機需借助PC機及相應軟件進行驅動打印。隨著Android系統及WiFi熱點的普及,借助移動終端通過無線局域網的方式,擺脫傳統PC直接打印成為新的行業需求[1]。

本文設計了基于嵌入式技術的無線打印終端系統,包含基于Cortex-A9為核心的服務器和APP兩部分。打印機通過USB與服務器相連,實現對打印機的控制及數據傳送;手機、平板等基于Andorid系統的智能移動終端通過WiFi接入局域網,將需要打印的文檔發送至服務器。系統終端通過文本格式轉換工具將接收到的文件轉換成打印機識別的語言發送給打印機。該設計的實現為局域網上的所有用戶提供了方便快捷的共享打印方式,有效地提高了打印效率。

1 系統總體設計方案

打印機系統終端的設計以三星Exyson4412為核心控制平臺。該處理器為基于Cortex-A9的四核處理器,主頻可達1.4GHz。系統配備1GB雙通道DDR3,4GB固態硬盤EMMC存儲空間,可支持Linux 3.5或Android4.2的內核版本。采用S5M8767電源管理芯片為系統提供多種工作電壓。采用DM9621以太網控制芯片連接無線路由器接入局域網;使用芯片GM8285C實現RGB信號到LVDS信號的轉換;采用USB3503控制芯片與USB打印機相連;打印系統終端將接收的文件經上層應用執行格式轉換后發送打印命令至USB打印機執行打印。打印系統終端設計整體框圖如圖1所示。

2 基于Android嵌入式系統開發環境的搭建

Android嵌入式系統開發環境的搭建與標準的Linux開發環境相類似[2],包括交叉編譯環境、Linux 3.0.15內核的配置移植、Android 4.0.3系統的編譯移植以及Android文件系統的移植[3]。步驟如下:第一,使用交叉編譯工具鏈arm-linux-4.4.1作為交叉編譯工具;第二,對u-boot-2010.03版本的源碼進行編譯移植;第三,配置Linux 3.0.15內核,添加對USB打印機的支持;第四,對Android 4.0.3系統進行編譯移植生成system.img、ramdisk.img、userdata.img的鏡像文件;第五,對上述四個步驟編譯生成的uboot、Linux內核鏡像zImage及Android 4.0.3的鏡像文件ramdisk、system文件,完成系統開發環境搭建[4];第六,Android系統中使用的是自帶的精簡Toolbox工具,功能比較簡單,在Android底層開發的時候非常不便,需在Android下添加BusyBox對工具命令的支持。采用在Toolbox的基礎上新增BusyBox腳本內容的解決方案,可通過安裝BusyBox Pro工具箱自動完成腳本的添加[5]。

圖1 打印機系統終端設計框圖

3 Linux下打印機工作的實現

目前,業界標準的兩種打印機語言分別是Adobe公司的PostScript(PS)語言和惠普公司的PCL語言。在Linux中,PS語言主要用于打印的接口,打印文件時,應用程序會把相應的文件轉化成PS格式文件。系統終端打印機設備選型為惠普Deskjet1050噴墨打印機,該款打印機支持惠普打印機標準頁面描述語言PCL3。但是惠普打印機并不能夠直接識別PS文件,因此需使用文件過濾器進行轉換[6]。

Ghostscript是一套建基于Adobe、PostScript及可移植文檔格式(PDF)的頁面描述語言等編譯成的免費軟件,可用于文件格式轉換器,將打印系統終端需要打印的PDF及PS格式的文件轉換成打印機能夠支持的位圖文件。

惠普噴墨打印機驅動程序項目(Hpijs)是基于GNU自由軟件開發的打印機驅動程序,可以將RGB等位圖格式的文件內容轉換成惠普打印機識別的PCL語言。在本設計中采用Ghostscript+Hpijs方案最終實現對打印機語言的轉換,打印機驅動層次架構如圖2所示。

圖2 基于ARM的打印機驅動層次架構圖

3.1 Ghostscript 9.04的編譯移植

設計方案中采用的是Ghostscript 9.04版本的編譯腳本,該版本對文件的處理功能完善,編譯出的腳本內存相對于高版本要小,其腳本編譯后自帶字庫,為腳本工具的移植節省了內存空間。由于Android的文件系統沒有相應的層次結構標準,因此在移植的過程中需創建/tmp及/usr目錄,以下是gs腳本交叉編譯過程:

(1)下載Ghostscript 9.04源碼,并解壓:

#wget http://iweb.dl.sourceforge.net/project/ghostscript

/GPL%20Ghostscript/9.04/ghostscript-9.04.tar.gz

(2)分別復制更名保存為PC版本和ARM版本:

#cp ghostscript-9.04 ghostscript-9.04-arm -r && mv ghostscript-9.04 ghostscript-9.04-pc

(3)編譯PC版本:

#cd ghostscript-9.04-pc &&./configure && make XCFLAGS=-DHAVE_SYS_TIME_H=1

修改Makefile.in文件中代碼將STDLIBS=@PTHREAD_LIBS@ -lm

修改為STDLIBS=@PTHREAD_LIBS@ -static -lm,

#cd ../ ghostscript-9.04-arm && sed -i’387s/STDLIBS=@PTHREAD_LIBS@ -lm/STDLIBS=@PTHREAD_LIBS@ -static -lm/’ ./Makefile.in

(4)編譯Android版本:

手動建立tmp目錄:選用/data/misc/printer/tmp/目錄作為/tmp目錄,更改ghostscript-9.04-arm版本下/base/gp_unifs.c中的tmp/目錄。

調整/usr文件夾:在配置ghostscript時添加:--prefix=/system/,命令如下:

#./configure--host=arm-linux--prefix=/system/usr/--disable-fontconfig--disable-gtk--disable-cups

(5)復制PC版本工具:

復制/obj/aux/文件夾中genarch、genconf、echogs、mkromfs工具到ARM版本的/obj/aux/文件夾下。

#mkdir -p obj/aux/

#cp ../ghostscript-9.04-pc/obj/aux/genarch ../ghostscript-9.04-pc/obj/aux/genconf ../ghostscript-9.04-pc/obj/aux/echogs ../ghostscript-9.04-pc/obj/aux/mkromfs ./obj/aux/

(6)交叉編譯基于ARM的gs腳本:

#make XCFLAGS=-DHAVE_SYS_TIME_H=1

#DESTDIR=${PWD}/_install

#make install DESTDIR=${DESTDIR}

#rm -rf ${DESTDIR}/system/usr/share/ghostscript/9.04/doc

#rm -rf ${DESTDIR}/system/usr/share/ghostscript/9.04/examples

#cd ${DESTDIR}/system/usr/bin && rm -f !(gs) && cd-

#cd ${DESTDIR}/ && tar cvzf gs904.tar.gz system/

(7)將壓縮生成的gs904.tar.gz文件Push到Android系統根目錄下解壓,自動安裝完成gs腳本文件的移植。

3.2 Hpijs的編譯移植

移植方案采用Hpijs-2.1.4的源碼編譯。以下是Hpijs交叉編譯過程。

(1)下載Hpijs-2.1.4源碼并解壓;

(2)配置Hpijs,配置命令如下:

#./configure--host=arm-linux--target=arm-linux--build=i686-linux CC=arm-linux-gcc CXX=arm-linux-g++LD=arm-linux-ld RANLIB=arm-linux-ranlib AR=arm-linux-ar CXXFLAGS="-static-g-O2"--prefix=/system/LDFLAGS=-L../jpeg-8b/.libs

(3)編譯并安裝:

#DESTDIR=${PWD}/_install

#make && make install DESTDIR=$DESTDIR

#tar cvzf hpijs.tar.gz system/

(4)編譯并安裝:

將生成的hpijs.tar.gz壓縮文件Push到Android系統根目錄下,解壓自動安裝到目標板上,完成hpijs的編譯移植。

3.3 測試打印功能

(1)Android中創建設備節點:

在系統插入打印機后會在ueventd中自動創建設備節點/dev/usb/usb1-3.3(usb1-3.3設備名由device path指定)。為了獲取訪問該設備的權限,需修改/system/core/rootdir下的ueventd.rc文件指定權限,添加:/dev/usb/usb1-3.3 0666 system system.

使用gs腳本工具和hpijs軟件將/data目錄下的test.pdf文件轉換生成test.PCL3GUI格式的打印語言。

(2)將pdf格式文件通push到目標板的/data目錄下,進入/data目錄,在當前目錄下執行文件格式轉換命令:

#gs-sDEVICE=ijs-sIjsServer=hpijs-dIjsUseOutputFD-sDeviceManufacturer="HEWLETT-PACKARD"-sDeviceModel="deskjet 5550"-r300x300-dNOPAUSE-dSAFER-sstdout=%stderr-sOutputFile=%stdout/data/test.pdf-c quit>/data/test.PCL3GUI

(3)將上述轉換的test.PCL3GUI格式的文件通過命令:

#cat/data/test.PCL3GUI>/dev/usb/usb1-3.3將打印文件發送至設備節點,打印機設備接收到命令執行打印。

test.pdf

tiger.ps

tombstones

user

wifi

/data/test.pdf-c quit > /data/test.PCL3GUI

GPL Ghostscript 9.04 (2011-08-05)

Copyright (c) 2011 Artifex Software,Inc.All rights reserved.

This software comes with NO WARRANTY:see the file PUBLIC for detail.

Processing pages 1 through 1.

Page 1

Substituting font Times-Roman for TimesNewRomanPSMT.

Loading NimbusRomNo9L-Regu font from rom Resource/Font/nimbusRomNo9L-Regu... 2739620 1435700 185

8156 557464 3 done.

resource-cache

system

test.PCL3GUI

test.pdf

tiger.ps

tombstones

圖3 文件格式轉換過程

4 基于Android應用開發設計

應用程序是基于Android開發的,包括服務器端及客戶端程序。主要實現客戶端到服務器端的文件傳輸,其次服務器端將接收到的文件進行文件格式轉換后再將文件發送給打印機打印。客戶端與服務器端基于TCP協議通過Socket通信[7-9]。

客戶端APP自動搜索路徑“/storage/emulated/0/”下包含的打印文件,輸入服務器端IP后就可傳輸文件。服務器端APP主要實現接入網絡、轉換文件格式及執行打印。系統可支持的文件類型有.pdf、.txt、.xls、.doc、.ppt等。UI界面如圖4和圖5所示。

在Android應用層通過調用ProcessBuilder函數執行腳本命令,實現打印操作。具體實現核心代碼如下:

private final String shell11 = "gs -sDEVICE=ijs -sIjsServer=hpijs -dIjsUseOutputFD -sDeviceManufacturer="HP"-sDeviceModel="deskjet 5550" -r300x300 -dNOPAUSE -dSAFER -sstdout=%stderr -sOutputFile=- - < "; //執行文件轉換的命令

private final String shell12 = "/test.ps > /dev/usb/usb1-3.3";//發送執行打印的命令

private final String shell13 = "/test.pdf > /dev/usb/usb1-3.3"

......

public void startInternet(){

ProcessBuilder pb = new ProcessBuilder("/system/bin/sh");

out.println(netShell1);//執行操作命令

out.println(netShell2);

out.println(netShell3);

out.println("exit");

......

}

圖4 客戶端界面設計

圖5 服務器端界面設計

5 結語

本文詳細介紹了以Android為平臺構建的無線智能打印系統,對Cortex-A9為控制核心的服務器的硬件組成與軟件設計進行闡述。對惠普Deskjet1050打印機驅動的移植做了詳細的說明。最終實現了手機、平板等Android智能設備終端通過WiFi進行無線智能打印的功能。

[1]陳劍,陳華政.基于Android平臺的無線打印模塊設計[J].單片機與嵌入式系統應用,2013(8):67-69.

[2]韋東山.嵌入式Linux應用開發完全手冊[M].北京:人民郵電出版社,2008:29-30.

[3]王超.基于Cortex_A8的Android系統分析與移植[D].太原:太原理工大學,2014.

[4]趙峙岳.基于WiFi無線網絡的嵌入式打印終端的設計[D].廣州:華南理工大學,2011.

[5]王衛華.為機器人配把瑞士軍刀 解說安卓4.0安裝BusyBox[J].電腦迷,2012(13):54.

[6]李軍.基于ARM的嵌入式網絡打印適配器的研制[D].上海:上海交通大學,2007.

[7]陳文,郭一正.深入理解Android網絡編程[M].北京:機械工業出版社,2013:39-45.

[8]苗振興,馬幼鳴,周鳴爭.基于Android平臺的WiFi文件傳輸系統的設計[J].長江大學學報:自然科學版,2013(7):17-20.

[9]蔣敏,單家芳,孔軍.基于Socket的多平臺通信研究[J].計算機工程與應用,2005(36):135-141.

USB Printer System Terminal Design Based on Android

WANG Ling-zhi,LAN Shan-can

(Department of Physics and Electronic Information Engineering, Minnan Normal University, Zhangzhou Fujian 363000,China)

Based on Android platform, a wireless smart printing system is developed. The system consists of a Cortex-A9-based on server and an application software (APP). Through WiFi, the mobile terminal sends the documents to the server, which connects with a printer via a USB interface. Then the wireless smart print is realized. By transplanting the Ghostscript and Hpijs tools,HP Deskjet 1050 printer can be drived successfully.

Android; Cortex-A9; WiFi; USB; printer

2016-05-06

福建省中青年教師教育科研項目“基于對數微分法的多電容同步測量系統研究”(JA15319);閩南師范大學教改項目“基于物聯網的嵌入式系統課程群建設”(JG2015)。

王靈芝(1981- ),女,講師,碩士,從事物聯網、嵌入式系統研究。

TP334

A

2095-7602(2016)12-0039-05

猜你喜歡
嵌入式系統設計
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 青青青亚洲精品国产| 男人天堂亚洲天堂| 精品国产99久久| 亚洲视频黄| 久久一日本道色综合久久| 国产人人乐人人爱| 操美女免费网站| 亚洲A∨无码精品午夜在线观看| 亚洲欧州色色免费AV| 欧美精品v欧洲精品| 日韩精品一区二区三区大桥未久 | 国产精品免费电影| 国产欧美高清| 精品在线免费播放| 91在线视频福利| 在线国产资源| 丝袜美女被出水视频一区| 国产精品va免费视频| 精品人妻一区无码视频| 免费一级毛片完整版在线看| 亚洲欧美另类久久久精品播放的| 国产性爱网站| 久久综合五月| 97国产在线观看| 欧美不卡视频一区发布| 国产噜噜噜| 欧美啪啪一区| 极品国产一区二区三区| 性色一区| 97视频免费在线观看| 午夜三级在线| 国产高清在线观看91精品| 亚洲精品动漫| 91色国产在线| 国产不卡国语在线| 中文字幕 91| 日本在线国产| 国产成人综合日韩精品无码不卡| 日本一区二区三区精品AⅤ| 国产成人综合日韩精品无码首页| 亚洲色偷偷偷鲁综合| 波多野结衣AV无码久久一区| 91福利在线看| 亚洲天堂网在线播放| 毛片三级在线观看| 日韩精品专区免费无码aⅴ| 无码又爽又刺激的高潮视频| 成年人久久黄色网站| 91欧美亚洲国产五月天| 91久久夜色精品| 亚洲日本在线免费观看| 18黑白丝水手服自慰喷水网站| 国产精品永久久久久| 91精品国产福利| 一级高清毛片免费a级高清毛片| 国产成人h在线观看网站站| 亚洲第一色视频| 91精品国产91久久久久久三级| 国产精品成人第一区| 视频国产精品丝袜第一页| 91口爆吞精国产对白第三集 | 国产丝袜无码一区二区视频| 久久久亚洲国产美女国产盗摄| 精品亚洲欧美中文字幕在线看| 久久亚洲国产最新网站| 国产乱子精品一区二区在线观看| 国产资源站| 久久精品中文无码资源站| 欧洲极品无码一区二区三区| 天堂网亚洲综合在线| 亚洲综合色婷婷中文字幕| 九九视频在线免费观看| 免费人成网站在线观看欧美| 91午夜福利在线观看精品| 又粗又大又爽又紧免费视频| 一区二区欧美日韩高清免费| 国产麻豆91网在线看| 国产成人精品一区二区三区| 不卡无码网| 国产第一页免费浮力影院| 亚洲国产成人久久77| 精品一区二区三区四区五区|