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

基于Android的無(wú)線打印系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2016-12-23 09:04:37王靈芝蘭善燦
關(guān)鍵詞:嵌入式系統(tǒng)設(shè)計(jì)

王靈芝,蘭善燦

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

?

基于Android的無(wú)線打印系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

王靈芝,蘭善燦

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

本文以Android為平臺(tái)構(gòu)建無(wú)線智能打印系統(tǒng),系統(tǒng)設(shè)計(jì)包含基于Cortex-A9為控制核心的服務(wù)器和APP兩部分。移動(dòng)終端通過(guò)WiFi將需要打印的文檔發(fā)送至服務(wù)器端,該服務(wù)器通過(guò)USB與打印機(jī)連接,從而實(shí)現(xiàn)無(wú)線智能打印。通過(guò)移植Ghostscript及Hpijs工具實(shí)現(xiàn)了對(duì)惠普Deskjet1050打印機(jī)的驅(qū)動(dòng)。

Android;Cortex-A9;WiFi;USB;打印機(jī)

傳統(tǒng)的打印機(jī)需借助PC機(jī)及相應(yīng)軟件進(jìn)行驅(qū)動(dòng)打印。隨著Android系統(tǒng)及WiFi熱點(diǎn)的普及,借助移動(dòng)終端通過(guò)無(wú)線局域網(wǎng)的方式,擺脫傳統(tǒng)PC直接打印成為新的行業(yè)需求[1]。

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

1 系統(tǒng)總體設(shè)計(jì)方案

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

2 基于Android嵌入式系統(tǒng)開(kāi)發(fā)環(huán)境的搭建

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

圖1 打印機(jī)系統(tǒng)終端設(shè)計(jì)框圖

3 Linux下打印機(jī)工作的實(shí)現(xiàn)

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

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

惠普噴墨打印機(jī)驅(qū)動(dòng)程序項(xiàng)目(Hpijs)是基于GNU自由軟件開(kāi)發(fā)的打印機(jī)驅(qū)動(dòng)程序,可以將RGB等位圖格式的文件內(nèi)容轉(zhuǎn)換成惠普打印機(jī)識(shí)別的PCL語(yǔ)言。在本設(shè)計(jì)中采用Ghostscript+Hpijs方案最終實(shí)現(xiàn)對(duì)打印機(jī)語(yǔ)言的轉(zhuǎn)換,打印機(jī)驅(qū)動(dòng)層次架構(gòu)如圖2所示。

圖2 基于ARM的打印機(jī)驅(qū)動(dòng)層次架構(gòu)圖

3.1 Ghostscript 9.04的編譯移植

設(shè)計(jì)方案中采用的是Ghostscript 9.04版本的編譯腳本,該版本對(duì)文件的處理功能完善,編譯出的腳本內(nèi)存相對(duì)于高版本要小,其腳本編譯后自帶字庫(kù),為腳本工具的移植節(jié)省了內(nèi)存空間。由于Android的文件系統(tǒng)沒(méi)有相應(yīng)的層次結(jié)構(gòu)標(biāo)準(zhǔn),因此在移植的過(guò)程中需創(chuàng)建/tmp及/usr目錄,以下是gs腳本交叉編譯過(guò)程:

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

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

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

(2)分別復(fù)制更名保存為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版本:

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

調(diào)整/usr文件夾:在配置ghostscript時(shí)添加:--prefix=/system/,命令如下:

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

(5)復(fù)制PC版本工具:

復(fù)制/obj/aux/文件夾中g(shù)enarch、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系統(tǒng)根目錄下解壓,自動(dòng)安裝完成gs腳本文件的移植。

3.2 Hpijs的編譯移植

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

(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系統(tǒng)根目錄下,解壓自動(dòng)安裝到目標(biāo)板上,完成hpijs的編譯移植。

3.3 測(cè)試打印功能

(1)Android中創(chuàng)建設(shè)備節(jié)點(diǎn):

在系統(tǒng)插入打印機(jī)后會(huì)在ueventd中自動(dòng)創(chuàng)建設(shè)備節(jié)點(diǎn)/dev/usb/usb1-3.3(usb1-3.3設(shè)備名由device path指定)。為了獲取訪問(wèn)該設(shè)備的權(quán)限,需修改/system/core/rootdir下的ueventd.rc文件指定權(quán)限,添加:/dev/usb/usb1-3.3 0666 system system.

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

(2)將pdf格式文件通push到目標(biāo)板的/data目錄下,進(jìn)入/data目錄,在當(dāng)前目錄下執(zhí)行文件格式轉(zhuǎn)換命令:

#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)將上述轉(zhuǎn)換的test.PCL3GUI格式的文件通過(guò)命令:

#cat/data/test.PCL3GUI>/dev/usb/usb1-3.3將打印文件發(fā)送至設(shè)備節(jié)點(diǎn),打印機(jī)設(shè)備接收到命令執(zhí)行打印。

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 文件格式轉(zhuǎn)換過(guò)程

4 基于Android應(yīng)用開(kāi)發(fā)設(shè)計(jì)

應(yīng)用程序是基于Android開(kāi)發(fā)的,包括服務(wù)器端及客戶端程序。主要實(shí)現(xiàn)客戶端到服務(wù)器端的文件傳輸,其次服務(wù)器端將接收到的文件進(jìn)行文件格式轉(zhuǎn)換后再將文件發(fā)送給打印機(jī)打印。客戶端與服務(wù)器端基于TCP協(xié)議通過(guò)Socket通信[7-9]。

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

在Android應(yīng)用層通過(guò)調(diào)用ProcessBuilder函數(shù)執(zhí)行腳本命令,實(shí)現(xiàn)打印操作。具體實(shí)現(xiàn)核心代碼如下:

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

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

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

......

public void startInternet(){

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

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

out.println(netShell2);

out.println(netShell3);

out.println("exit");

......

}

圖4 客戶端界面設(shè)計(jì)

圖5 服務(wù)器端界面設(shè)計(jì)

5 結(jié)語(yǔ)

本文詳細(xì)介紹了以Android為平臺(tái)構(gòu)建的無(wú)線智能打印系統(tǒng),對(duì)Cortex-A9為控制核心的服務(wù)器的硬件組成與軟件設(shè)計(jì)進(jìn)行闡述。對(duì)惠普Deskjet1050打印機(jī)驅(qū)動(dòng)的移植做了詳細(xì)的說(shuō)明。最終實(shí)現(xiàn)了手機(jī)、平板等Android智能設(shè)備終端通過(guò)WiFi進(jìn)行無(wú)線智能打印的功能。

[1]陳劍,陳華政.基于Android平臺(tái)的無(wú)線打印模塊設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013(8):67-69.

[2]韋東山.嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008:29-30.

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

[4]趙峙岳.基于WiFi無(wú)線網(wǎng)絡(luò)的嵌入式打印終端的設(shè)計(jì)[D].廣州:華南理工大學(xué),2011.

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

[6]李軍.基于ARM的嵌入式網(wǎng)絡(luò)打印適配器的研制[D].上海:上海交通大學(xué),2007.

[7]陳文,郭一正.深入理解Android網(wǎng)絡(luò)編程[M].北京:機(jī)械工業(yè)出版社,2013:39-45.

[8]苗振興,馬幼鳴,周鳴爭(zhēng).基于Android平臺(tái)的WiFi文件傳輸系統(tǒng)的設(shè)計(jì)[J].長(zhǎng)江大學(xué)學(xué)報(bào):自然科學(xué)版,2013(7):17-20.

[9]蔣敏,單家芳,孔軍.基于Socket的多平臺(tái)通信研究[J].計(jì)算機(jī)工程與應(yīng)用,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

福建省中青年教師教育科研項(xiàng)目“基于對(duì)數(shù)微分法的多電容同步測(cè)量系統(tǒng)研究”(JA15319);閩南師范大學(xué)教改項(xiàng)目“基于物聯(lián)網(wǎng)的嵌入式系統(tǒng)課程群建設(shè)”(JG2015)。

王靈芝(1981- ),女,講師,碩士,從事物聯(lián)網(wǎng)、嵌入式系統(tǒng)研究。

TP334

A

2095-7602(2016)12-0039-05

猜你喜歡
嵌入式系統(tǒng)設(shè)計(jì)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
瞞天過(guò)海——仿生設(shè)計(jì)萌到家
搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
Altera加入嵌入式視覺(jué)聯(lián)盟
主站蜘蛛池模板: 国产日韩欧美中文| 国内精品视频在线| 亚洲精品桃花岛av在线| 亚洲欧美在线综合一区二区三区| 69av免费视频| 97国产在线观看| 日本三级黄在线观看| 国产女人综合久久精品视| 国产视频欧美| 亚洲无卡视频| 国产成人精品午夜视频'| 亚洲免费三区| 在线观看亚洲成人| a免费毛片在线播放| 国产高潮视频在线观看| 日韩一级毛一欧美一国产| 日韩无码视频网站| 亚洲精品久综合蜜| 91久久精品国产| 成人一级黄色毛片| 91精品aⅴ无码中文字字幕蜜桃 | 国产素人在线| 日韩精品一区二区深田咏美| 国产成人综合亚洲网址| 操美女免费网站| 国产视频大全| 国产高清在线丝袜精品一区| 亚洲第一中文字幕| 欧美日韩资源| 国产乱人伦AV在线A| 亚洲国产精品无码AV| 久久国产精品麻豆系列| 国产精品久线在线观看| 婷婷色中文| 国产99精品久久| 国产精品福利尤物youwu| av一区二区人妻无码| 精品人妻一区无码视频| 久久青草精品一区二区三区| 国产成人艳妇AA视频在线| 不卡无码h在线观看| 欧美成人综合在线| 亚洲午夜片| 色偷偷av男人的天堂不卡| 日韩毛片在线播放| 在线播放真实国产乱子伦| 国产一线在线| 高清大学生毛片一级| 亚洲bt欧美bt精品| 亚洲床戏一区| 四虎影视国产精品| 国产精品冒白浆免费视频| 亚洲一区波多野结衣二区三区| 国产精品久久精品| 欧美色亚洲| 2020久久国产综合精品swag| 熟妇丰满人妻av无码区| 日本成人精品视频| 国产精品久久久久久久久kt| 久久国产乱子| 亚洲国产综合精品一区| 色婷婷综合激情视频免费看| 午夜性刺激在线观看免费| 毛片卡一卡二| 在线观看国产网址你懂的| 无码区日韩专区免费系列 | 欧美一区精品| 中日韩一区二区三区中文免费视频| 国产精品蜜芽在线观看| 亚洲Av综合日韩精品久久久| 久久公开视频| 亚洲 欧美 中文 AⅤ在线视频| 国产理论精品| 一级成人a毛片免费播放| 四虎国产精品永久在线网址| 精品亚洲欧美中文字幕在线看| 精品少妇三级亚洲| 国产av无码日韩av无码网站| 国产成人91精品| 亚洲精品在线影院| 国产三级成人| 在线观看av永久|