背景技術(shù):
本發(fā)明的各種實(shí)施例涉及使能用戶(hù)設(shè)備瀏覽器和本地設(shè)備之間的通信。申請(qǐng)人已經(jīng)標(biāo)識(shí)出與使用本地打印機(jī)在用戶(hù)設(shè)備上打印來(lái)自瀏覽器的內(nèi)容相關(guān)聯(lián)的很多缺陷和問(wèn)題。通過(guò)所應(yīng)用的努力、創(chuàng)造力和創(chuàng)新,申請(qǐng)人通過(guò)開(kāi)發(fā)下面將詳細(xì)描述的本發(fā)明實(shí)施的解決方案解決了這些標(biāo)識(shí)出的問(wèn)題中的很多問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
因此,提供了一種方法、裝置和計(jì)算機(jī)程序產(chǎn)品,以使能被配置為在諸如移動(dòng)設(shè)備或個(gè)人計(jì)算機(jī)的用戶(hù)設(shè)備上操作的瀏覽器與諸如打印機(jī)的本地設(shè)備之間的通信。由在用戶(hù)設(shè)備上運(yùn)行的瀏覽器顯示的很多網(wǎng)站不能直接與本地網(wǎng)絡(luò)設(shè)備(諸如打印機(jī))交互。各種系統(tǒng)的web頁(yè)面開(kāi)發(fā)方可能想要使其web頁(yè)面的用戶(hù)能夠以流線型且安全的方式從用戶(hù)設(shè)備打印。用于直接從瀏覽器打印的當(dāng)前實(shí)現(xiàn)包括操作系統(tǒng)和/或?yàn)g覽器特定的方法。例如,
本文中提供的方法、計(jì)算機(jī)程序產(chǎn)品和裝置提供了一種使能操作于用戶(hù)設(shè)備上的瀏覽器和本地設(shè)備(諸如打印機(jī))之間的通信的流線型方法。本文中提供的示例實(shí)施例不依賴(lài)于瀏覽器類(lèi)型,也不依賴(lài)于操作系統(tǒng)。根據(jù)本文中提供的示例實(shí)施例,主機(jī)系統(tǒng)的開(kāi)發(fā)方可以集成應(yīng)用編程接口(api),使得由主機(jī)系統(tǒng)向在用戶(hù)設(shè)備上運(yùn)行的瀏覽器遞送的主機(jī)web應(yīng)用與用戶(hù)設(shè)備的已安裝的本地設(shè)備通信應(yīng)用通信。本地設(shè)備通信應(yīng)用又可以按照主機(jī)系統(tǒng)的指引來(lái)控制到其他本地設(shè)備的通信和/或打印。
提供了一種計(jì)算機(jī)程序產(chǎn)品,計(jì)算機(jī)程序產(chǎn)品被配置為在用戶(hù)設(shè)備上操作以使能本地設(shè)備和瀏覽器之間的通信,其中瀏覽器被配置為在用戶(hù)設(shè)備上操作,并且計(jì)算機(jī)程序產(chǎn)品被配置為:接收由瀏覽器生成的請(qǐng)求,確定請(qǐng)求包括用以經(jīng)由計(jì)算機(jī)程序產(chǎn)品傳送從瀏覽器傳輸?shù)臄?shù)據(jù)的請(qǐng)求,以及引起設(shè)備命令到本地設(shè)備的傳輸,其中設(shè)備命令基于從瀏覽器傳輸?shù)臄?shù)據(jù)和與本地設(shè)備相關(guān)的信息而被生成。
在一些示例中,計(jì)算機(jī)程序產(chǎn)品確定本地設(shè)備是默認(rèn)本地設(shè)備。計(jì)算機(jī)程序產(chǎn)品還被配置為:經(jīng)由瀏覽器提供可用本地設(shè)備的列表以用于在用戶(hù)設(shè)備的用戶(hù)接口上顯示,以及接收基于用戶(hù)經(jīng)由用戶(hù)接口從列表的選擇的本地設(shè)備選擇指示,其中本地設(shè)備基于本地設(shè)備選擇指示而被標(biāo)識(shí)。在一些示例中,計(jì)算機(jī)程序產(chǎn)品還被配置為驗(yàn)證本地設(shè)備相對(duì)于請(qǐng)求的主機(jī)web應(yīng)用的許可狀態(tài)。
計(jì)算機(jī)程序產(chǎn)品還被配置為引起用戶(hù)設(shè)備經(jīng)由瀏覽器來(lái)輸出與主機(jī)web應(yīng)用和本地設(shè)備相關(guān)的用戶(hù)許可提示,響應(yīng)于用戶(hù)許可提示經(jīng)由瀏覽器的輸出而接收授權(quán)指示,并且基于授權(quán)指示來(lái)更新與主機(jī)web應(yīng)用和本地設(shè)備相關(guān)的許可狀態(tài)。
計(jì)算機(jī)程序產(chǎn)品還包括被配置用于使能主機(jī)web應(yīng)用中的腳本的嵌入的本地設(shè)備通信應(yīng)用編程接口,其中確定請(qǐng)求包括用以傳送從瀏覽器傳輸?shù)臄?shù)據(jù)的請(qǐng)求包括執(zhí)行腳本,并且請(qǐng)求從瀏覽器的接收和設(shè)備命令到本地設(shè)備的傳輸響應(yīng)于腳本的執(zhí)行而發(fā)生。
在一些示例中,生成設(shè)備命令包括將超文本標(biāo)記語(yǔ)言(html)轉(zhuǎn)換成包含從html得出的內(nèi)容、樣式和位置信息的打印命令。在一些示例中,數(shù)據(jù)經(jīng)由瀏覽器執(zhí)行的異步j(luò)avascript調(diào)用而被接收。在一些示例中,本地設(shè)備是打印機(jī),并且向打印機(jī)傳輸?shù)脑O(shè)備命令是打印命令。在一些示例中,打印機(jī)由斑馬(zebra)專(zhuān)有語(yǔ)言控制。
在一些示例中,設(shè)備命令引起以下中至少一項(xiàng):本地設(shè)備向用戶(hù)設(shè)備返回本地設(shè)備配置信息,本地設(shè)備向用戶(hù)設(shè)備返回本地設(shè)備狀態(tài)信息,或者本地設(shè)備打印本地設(shè)備配置信息。在一些示例中,計(jì)算機(jī)程序產(chǎn)品被配置為從所選擇的本地設(shè)備接收本地設(shè)備響應(yīng)。
還提供了一種用于促進(jìn)數(shù)據(jù)從瀏覽器到本地設(shè)備的傳送的系統(tǒng),其中瀏覽器被配置為在用戶(hù)設(shè)備上操作,并且系統(tǒng)包括被配置為在用戶(hù)設(shè)備上操作的本地設(shè)備通信應(yīng)用,被配置為在主機(jī)系統(tǒng)上操作的主機(jī)web應(yīng)用;以及被配置為在主機(jī)系統(tǒng)上操作的本地設(shè)備通信應(yīng)用編程接口,其中本地設(shè)備通信應(yīng)用編程接口被配置用于與主機(jī)web應(yīng)用的通信,其中主機(jī)web應(yīng)用生成用于由瀏覽器顯示的數(shù)據(jù)并且還使瀏覽器能夠與本地設(shè)備通信應(yīng)用通信,并且其中本地設(shè)備通信應(yīng)用被配置為從瀏覽器接收數(shù)據(jù),將數(shù)據(jù)轉(zhuǎn)換成設(shè)備特定的格式,以及向本地設(shè)備傳輸轉(zhuǎn)換后的數(shù)據(jù)。
本地設(shè)備通信應(yīng)用還被配置為向?yàn)g覽器提供可用本地設(shè)備以用于顯示并且接收本地設(shè)備選擇指示,并且其中本地設(shè)備基于本地設(shè)備選擇指示而被標(biāo)識(shí)。在一些示例中,轉(zhuǎn)換數(shù)據(jù)包括將超文本標(biāo)記語(yǔ)言(html)轉(zhuǎn)換成包含從html得出的內(nèi)容、樣式和位置信息的打印命令。
在一些示例中,本地設(shè)備是打印機(jī),并且向打印機(jī)傳輸?shù)脑O(shè)備命令是打印命令。本地設(shè)備通信應(yīng)用還被配置為以設(shè)備特定的格式從本地設(shè)備接收本地設(shè)備響應(yīng),并且基于本地設(shè)備響應(yīng)來(lái)引起消息的提供以用于由瀏覽器顯示。本地設(shè)備通信應(yīng)用還被配置為驗(yàn)證本地設(shè)備相對(duì)于請(qǐng)求的主機(jī)web應(yīng)用的許可狀態(tài)。
在一些示例中,本地設(shè)備通信應(yīng)用還被配置為引起用戶(hù)設(shè)備經(jīng)由瀏覽器來(lái)輸出與主機(jī)web應(yīng)用和本地設(shè)備相關(guān)的用戶(hù)許可提示,響應(yīng)于用戶(hù)許可提示經(jīng)由瀏覽器的輸出而接收授權(quán)指示,并且基于授權(quán)指示來(lái)更新與主機(jī)web應(yīng)用和本地設(shè)備相關(guān)的許可狀態(tài)。
在一些示例中,數(shù)據(jù)經(jīng)由瀏覽器所執(zhí)行的異步j(luò)avascript調(diào)用從瀏覽器被接收。
還提供了一種用于促進(jìn)數(shù)據(jù)從瀏覽器到本地設(shè)備的傳送的計(jì)算機(jī)實(shí)現(xiàn)的方法,其中瀏覽器被配置為在用戶(hù)設(shè)備上操作,計(jì)算機(jī)實(shí)現(xiàn)的方法包括:接收由瀏覽器生成的請(qǐng)求,確定請(qǐng)求包括用以經(jīng)由計(jì)算機(jī)程序產(chǎn)品傳送從瀏覽器傳輸?shù)臄?shù)據(jù)的請(qǐng)求,以及引起設(shè)備命令到本地設(shè)備的傳輸,其中設(shè)備命令基于從瀏覽器傳輸?shù)臄?shù)據(jù)以及與本地設(shè)備相關(guān)的信息而被生成。
在一些示例中,根據(jù)權(quán)利要求21所述的計(jì)算機(jī)實(shí)現(xiàn)的方法還包括基于本地設(shè)備的類(lèi)型將從瀏覽器接收的數(shù)據(jù)轉(zhuǎn)換成設(shè)備特定的格式。
附圖說(shuō)明
圖1是根據(jù)示例實(shí)施例的系統(tǒng)的示意性表示;
圖2是根據(jù)示例實(shí)施例的用戶(hù)設(shè)備的示意性表示;
圖3是根據(jù)示例實(shí)施例的操作和數(shù)據(jù)的流程圖;
圖4是根據(jù)示例實(shí)施例的操作的流程圖。
圖5和圖6是根據(jù)示例實(shí)施例的用戶(hù)接口;
圖7是根據(jù)示例實(shí)施例的操作的流程圖;以及
圖8是根據(jù)示例實(shí)施例的由本地設(shè)備打印的示例標(biāo)簽。
具體實(shí)施方式
根據(jù)本文中提供的示例實(shí)施例,提供了一種方法、計(jì)算機(jī)程序產(chǎn)品和系統(tǒng),以使能被配置為在諸如移動(dòng)設(shè)備或個(gè)人計(jì)算機(jī)的用戶(hù)設(shè)備上操作的瀏覽器與諸如打印機(jī)的本地設(shè)備之間的通信。主機(jī)系統(tǒng)可以提供用于生成用于由瀏覽器顯示的數(shù)據(jù)的主機(jī)web應(yīng)用,并且還可以與本地設(shè)備通信應(yīng)用編程接口(api)集成以將代碼嵌入到主機(jī)web應(yīng)用中,使得在由瀏覽器執(zhí)行時(shí)使能瀏覽器與本地設(shè)備通信應(yīng)用之間的通信。本地設(shè)備通信應(yīng)用然后可以控制到本地設(shè)備的通信,諸如引起由瀏覽器呈現(xiàn)的數(shù)據(jù)在打印機(jī)上被打印。
如本文中使用的,“本地設(shè)備通信api”可以包括存儲(chǔ)在主機(jī)系統(tǒng)上的或者否則由主機(jī)系統(tǒng)可訪問(wèn)的計(jì)算機(jī)程序代碼(諸如其庫(kù)或集合),其被配置為使能瀏覽器和本地設(shè)備通信應(yīng)用之間的通信。
如本文中使用的,“本地設(shè)備通信應(yīng)用”是被配置用于在用戶(hù)設(shè)備上操作以按照與本地設(shè)備通信api相接的主機(jī)web應(yīng)用的指引來(lái)使能瀏覽器和本地設(shè)備之間的通信的應(yīng)用或app。
如本文中使用的,“腳本”可以包括被配置為由客戶(hù)端或?yàn)g覽器按照與本地設(shè)備通信api相接的主機(jī)web應(yīng)用的指示來(lái)執(zhí)行的任何計(jì)算機(jī)程序代碼,諸如javascript。
如本文中使用的,“設(shè)備請(qǐng)求”可以包括有關(guān)可用本地設(shè)備的請(qǐng)求信息或者要被傳輸?shù)奖镜卦O(shè)備的數(shù)據(jù)從瀏覽器到本地設(shè)備通信應(yīng)用的任何通信。
如本文中使用的,“設(shè)備命令”可以包括被配置為從本地設(shè)備通信應(yīng)用傳輸?shù)奖镜卦O(shè)備的任何通信,諸如計(jì)算機(jī)程序代碼。在一些示例中,設(shè)備命令可以是“設(shè)備特定的命令”,或者特別針對(duì)特定類(lèi)型的本地設(shè)備格式化的設(shè)備命令,并且可以?xún)H由該類(lèi)型的本地設(shè)備可解釋。設(shè)備特定的命令可以包括打印命令。
如本文中使用的,“數(shù)據(jù)”可以包括由瀏覽器提供以被傳輸?shù)奖镜卦O(shè)備以用于處理的任何數(shù)據(jù)。例如,數(shù)據(jù)可以包括定義要由本地打印機(jī)打印的內(nèi)容的計(jì)算機(jī)程序代碼。
如本文中使用的,“本地設(shè)備選擇指示”可以包括標(biāo)識(shí)要從用戶(hù)設(shè)備向其傳輸數(shù)據(jù)的特定本地設(shè)備的任何信息。例如,在僅一個(gè)本地設(shè)備可用的情況下,本地設(shè)備選擇指示可以是默認(rèn)的?;蛘撸镜卦O(shè)備選擇指示可以指示預(yù)配置的默認(rèn)本地設(shè)備。在一些示例中,用戶(hù)可以從可用本地設(shè)備的列表中選擇特定的本地設(shè)備。
如本文中使用的,“本地設(shè)備響應(yīng)”可以包括響應(yīng)于設(shè)備命令而從本地設(shè)備到用戶(hù)設(shè)備的通信。因此,本地設(shè)備響應(yīng)可以確認(rèn)設(shè)備命令的接收和/或處理的完成。
如本文中使用的,“許可狀態(tài)”可以包括指示主機(jī)web應(yīng)用和/或主機(jī)系統(tǒng)是否具有訪問(wèn)特定本地設(shè)備的許可的任何信息。許可狀態(tài)可以由本地設(shè)備通信應(yīng)用來(lái)維護(hù)和/或訪問(wèn)。
如本文中使用的,“用戶(hù)許可提示”可以包括向請(qǐng)求對(duì)于主機(jī)web應(yīng)用和/或主機(jī)系統(tǒng)訪問(wèn)本地設(shè)備的許可的用戶(hù)設(shè)備的用戶(hù)輸出的任何消息。用戶(hù)許可提示可以例如經(jīng)由瀏覽器被提供給用戶(hù)。
如本文中使用的,“授權(quán)指示”因此可以被認(rèn)為是指示對(duì)于主機(jī)web應(yīng)用和/或主機(jī)系統(tǒng)訪問(wèn)本地設(shè)備的許可被準(zhǔn)予的任何用戶(hù)輸入。可以基于可以經(jīng)由瀏覽器提供的授權(quán)指示來(lái)相應(yīng)地更新許可狀態(tài)。
圖1是用于使能用戶(hù)設(shè)備上的瀏覽器和本地設(shè)備之間的通信的示例系統(tǒng)100的示意性表示。用戶(hù)設(shè)備102可以包括諸如智能電話、平板計(jì)算機(jī)等任何移動(dòng)設(shè)備,并且與諸如個(gè)人計(jì)算機(jī)和膝上型計(jì)算機(jī)等其他計(jì)算設(shè)備相比,其特征可以是相對(duì)較輕的重量和較小的尺寸。因此,與更大或更重的計(jì)算設(shè)備相比,用戶(hù)設(shè)備102可以具有有限的存儲(chǔ)器和計(jì)算處理速度。雖然本文中提供的示例實(shí)施例在用戶(hù)設(shè)備102被實(shí)現(xiàn)為移動(dòng)設(shè)備的情況下特別有利,但是用戶(hù)設(shè)備102可以附加地或備選地在其他用戶(hù)設(shè)備(諸如個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)、和/或能夠運(yùn)行瀏覽器的任何設(shè)備)上實(shí)現(xiàn)。此外,示例實(shí)施例可以實(shí)現(xiàn)任何操作系統(tǒng)。
用戶(hù)設(shè)備102可以執(zhí)行本地安裝的應(yīng)用或“app”,諸如以通過(guò)網(wǎng)絡(luò)與在用戶(hù)設(shè)備102和/或其他設(shè)備上操作的其他應(yīng)用交互。這些app通常被設(shè)計(jì)為在用戶(hù)設(shè)備(諸如平板電腦或智能手機(jī))上執(zhí)行。例如,可以提供在用戶(hù)設(shè)備操作系統(tǒng)(諸如apple公司的
本地設(shè)備通信應(yīng)用104是在用戶(hù)設(shè)備102上操作的app,并且可以被配置為通過(guò)本地網(wǎng)絡(luò)(諸如本地網(wǎng)絡(luò)112)與在用戶(hù)設(shè)備102和/或外部設(shè)備上運(yùn)行的瀏覽器106通信。本地設(shè)備通信應(yīng)用104關(guān)于圖2被進(jìn)一步詳細(xì)描述。
瀏覽器106可以包括被配置為渲染用于在用戶(hù)設(shè)備102上顯示的內(nèi)容的任何應(yīng)用。瀏覽器106可以包括但不限于
系統(tǒng)100可以包括任何數(shù)目的主機(jī)系統(tǒng)108。主機(jī)系統(tǒng)108可以包括配置用于通過(guò)本地網(wǎng)絡(luò)112向用戶(hù)設(shè)備102提供諸如主機(jī)web應(yīng)用107的web應(yīng)用的任何計(jì)算設(shè)備、網(wǎng)絡(luò)、服務(wù)器等。主機(jī)系統(tǒng)108可以通過(guò)網(wǎng)絡(luò)114(諸如通過(guò)因特網(wǎng))與用戶(hù)設(shè)備102通信。特別地,主機(jī)系統(tǒng)108可以經(jīng)由網(wǎng)絡(luò)114提供主機(jī)web應(yīng)用107,用于由瀏覽器106顯示。
主機(jī)web應(yīng)用107可以與本地設(shè)備通信api109集成。本地設(shè)備通信api109可以包括存儲(chǔ)在主機(jī)系統(tǒng)108上或者否則由主機(jī)系統(tǒng)108可訪問(wèn)的、被配置為使能瀏覽器106和本地設(shè)備通信應(yīng)用104之間的通信的計(jì)算機(jī)程序代碼,諸如其庫(kù)或集合。例如,本地設(shè)備通信api109可以存儲(chǔ)在存儲(chǔ)設(shè)備上,類(lèi)似于本文中描述的存儲(chǔ)器204的。根據(jù)示例實(shí)施例,本地設(shè)備通信api109在由主機(jī)web應(yīng)用107實(shí)現(xiàn)時(shí)使能瀏覽器106與本地設(shè)備通信應(yīng)用104之間的通信。因此,本地設(shè)備通信api109使得主機(jī)系統(tǒng)108的開(kāi)發(fā)方能夠容易地向主機(jī)web應(yīng)用107中并入部件,使得一旦由瀏覽器106執(zhí)行,則與本地設(shè)備通信應(yīng)用104接口,使得由主機(jī)web應(yīng)用107生成的內(nèi)容可以經(jīng)由本地設(shè)備通信應(yīng)用104被傳輸?shù)奖镜卦O(shè)備,如下文中進(jìn)一步詳細(xì)描述的。在一些示例中,本地設(shè)備通信api109可以在主機(jī)系統(tǒng)108上實(shí)現(xiàn),或者可以在諸如第三方服務(wù)器或附加主機(jī)系統(tǒng)108的遠(yuǎn)程設(shè)備上訪問(wèn)。在這點(diǎn)上,主機(jī)系統(tǒng)108可以實(shí)現(xiàn)為分布式系統(tǒng)或網(wǎng)絡(luò),并且可以包括類(lèi)似于本文中描述的處理電路201的處理電路。主機(jī)系統(tǒng)108可以將本地設(shè)備通信api109使能的web應(yīng)用、內(nèi)容和功能提供給任何數(shù)目的用戶(hù)設(shè)備102。
系統(tǒng)100可以附加地包括任何數(shù)目的本地設(shè)備110。本地設(shè)備110可以包括通過(guò)本地網(wǎng)絡(luò)112與用戶(hù)設(shè)備102通信的任何外部設(shè)備。示例本地設(shè)備110可以包括但不限于打印機(jī)、掃描儀、計(jì)算設(shè)備、用戶(hù)設(shè)備等。本地設(shè)備通信應(yīng)用104使能用戶(hù)設(shè)備102和本地設(shè)備110之間的通信。
因此,本地網(wǎng)絡(luò)112可以包括被配置為諸如通過(guò)直接連接或無(wú)線通信與用戶(hù)設(shè)備102通信的任何數(shù)目的本地設(shè)備110。例如,本地網(wǎng)絡(luò)112可以被實(shí)現(xiàn)為局域網(wǎng)(lan),并且可以通過(guò)諸如通用串行總線(usb)、串行端口和/或并行端口的直接連接來(lái)促進(jìn)設(shè)備之間的通信。本地網(wǎng)絡(luò)112可以附加地或備選地被配置為使能通過(guò)zigbee、有源近場(chǎng)通信(nfc)和/或其他無(wú)線協(xié)議的通信。
在一些示例中,網(wǎng)絡(luò)112和114可以是相同的網(wǎng)絡(luò),或者本地網(wǎng)絡(luò)112和/或114可以包括彼此的部分。然而,在一些實(shí)施例中,主機(jī)系統(tǒng)108可以通過(guò)網(wǎng)絡(luò)114與用戶(hù)設(shè)備102通信,但不與本地設(shè)備110通信。因此,本地設(shè)備110可能不一定通過(guò)因特網(wǎng)或網(wǎng)絡(luò)114可用,而是通過(guò)本地網(wǎng)絡(luò)112(其可以被實(shí)現(xiàn)為lan、直接連接等,如上所述)與用戶(hù)設(shè)備102通信。在一些實(shí)施例中,網(wǎng)絡(luò)114可以包括因特網(wǎng)。
圖2是根據(jù)示例實(shí)施例的示例用戶(hù)設(shè)備102的示意性表示。在一些實(shí)施例中,在用戶(hù)設(shè)備102上操作的處理電路201可以被實(shí)施為或包括電路芯片,其包括處理器202、存儲(chǔ)器204、輸入/輸出電路206、通信電路208、本地設(shè)備通信應(yīng)用104和/或?yàn)g覽器106中的任一個(gè)。本地設(shè)備通信應(yīng)用104還可以包括本地設(shè)備配置電路210、本地設(shè)備服務(wù)器電路212和/或本地設(shè)備驅(qū)動(dòng)器電路214中的任何一個(gè),并且在一些實(shí)施例中可以在用戶(hù)設(shè)備102的存儲(chǔ)器204和處理器202上實(shí)現(xiàn)。處理電路201可以被實(shí)施為(例如,利用硬件、軟件、或硬件和軟件的組合)被配置為執(zhí)行本文中描述的操作的電路芯片(例如,集成電路芯片)。電路芯片可以構(gòu)成用于執(zhí)行用于提供本文中描述的功能的一個(gè)或多個(gè)操作的裝置。
處理器202可以執(zhí)行上面介紹并且在下文中更詳細(xì)地描述的處理功能中的一些或全部。存儲(chǔ)器204可以用于存儲(chǔ)諸如本地設(shè)備110的配置的數(shù)據(jù)以及要被傳輸?shù)奖镜卦O(shè)備110的數(shù)據(jù)。在執(zhí)行各種操作的同時(shí),處理器202可以根據(jù)需要存儲(chǔ)和訪問(wèn)該數(shù)據(jù)。
處理器202可以以很多不同的方式來(lái)實(shí)施。例如,處理器202可以被實(shí)施為各種處理裝置,諸如以下中的一個(gè)或多個(gè):微處理器或其他處理元件、協(xié)處理器、控制器、或者包括例如諸如asic(專(zhuān)用集成電路)、fpga(現(xiàn)場(chǎng)可編程門(mén)陣列)等的集成電路的各種其它計(jì)算或處理裝置。盡管被示出為單個(gè)處理器,但是應(yīng)當(dāng)理解,處理器202可以包括多個(gè)處理器。多個(gè)處理器可以彼此操作性通信,并且可以被共同地配置為執(zhí)行本文中描述的本地設(shè)備通信應(yīng)用104和/或用戶(hù)設(shè)備102的一個(gè)或多個(gè)功能。多個(gè)處理器可以在單個(gè)計(jì)算設(shè)備上實(shí)施或跨多個(gè)計(jì)算設(shè)備而分布。在一些示例實(shí)施例中,處理器202可以被配置為執(zhí)行存儲(chǔ)在存儲(chǔ)器204中或者否則處理器202可訪問(wèn)的指令。因此,無(wú)論是由硬件還是由硬件和軟件的組合來(lái)配置,處理器202可以表示能夠執(zhí)行根據(jù)本發(fā)明的實(shí)施例的操作同時(shí)能夠相應(yīng)地被配置的(例如,物理地實(shí)施于電路中—處理電路201的形式)的實(shí)體。因此,例如,當(dāng)處理器202被實(shí)施為asic、fpga等時(shí),處理器202可以是用于進(jìn)行本文中描述的操作的特別配置的硬件。備選地,作為另一示例,當(dāng)處理器202被實(shí)施為軟件指令的執(zhí)行器時(shí),指令可以特別地配置處理器202以執(zhí)行本文中描述的一個(gè)或多個(gè)操作。
在一些示例實(shí)施例中,存儲(chǔ)器204可以包括一個(gè)或多個(gè)非暫態(tài)存儲(chǔ)器設(shè)備,例如諸如可以固定或可移除的易失性和/或非易失性存儲(chǔ)器。在這點(diǎn)上,存儲(chǔ)器204可以包括非暫態(tài)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。應(yīng)當(dāng)理解,雖然存儲(chǔ)器204被示出為單個(gè)存儲(chǔ)器,但是存儲(chǔ)器204可以包括被配置為存儲(chǔ)信息、數(shù)據(jù)、應(yīng)用、指令等以用于使用戶(hù)設(shè)備102能夠執(zhí)行根據(jù)一個(gè)或多個(gè)示例實(shí)施例的各種功能的多個(gè)存儲(chǔ)器。例如,存儲(chǔ)器204可以被配置為存儲(chǔ)與檢測(cè)到的任何本地設(shè)備相關(guān)的許可和序列信息。存儲(chǔ)器204可以附加地被配置為緩沖輸入數(shù)據(jù)以用于由處理器202處理。附加地或備選地,存儲(chǔ)器204可以被配置為存儲(chǔ)用于由處理器202執(zhí)行的指令。作為另一備選,存儲(chǔ)器204可以包括可以存儲(chǔ)各種文件、內(nèi)容或數(shù)據(jù)的一個(gè)或多個(gè)數(shù)據(jù)庫(kù)。在存儲(chǔ)器204的內(nèi)容中,諸如本地設(shè)備通信應(yīng)用104和/或?yàn)g覽器106的應(yīng)用可以被存儲(chǔ)用于由處理器202執(zhí)行以執(zhí)行本文中描述的功能。
本地設(shè)備通信應(yīng)用104可以包括本地設(shè)備配置電路210、本地設(shè)備服務(wù)器電路212和/或本地設(shè)備驅(qū)動(dòng)器電路214。電路210、212和/或214每個(gè)可以包括被配置為執(zhí)行下文中描述的功能的相應(yīng)的和/或共享的硬件,并且經(jīng)由網(wǎng)絡(luò)接口與用戶(hù)設(shè)備102的各個(gè)電路和部件通信。電路210、212和/或214可以利用諸如處理器202的處理電路來(lái)執(zhí)行這樣的動(dòng)作。然而,還應(yīng)當(dāng)理解,在一些實(shí)施例中,電路210、212和/或214中的任何一個(gè)可以包括單獨(dú)的處理器、特別配置的現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)、或應(yīng)用特定的接口電路(asic)以執(zhí)行各種相應(yīng)功能,如下面進(jìn)一步詳細(xì)描述的。因此,電路210、212和/或214使用由用于實(shí)現(xiàn)這些功能的硬件或軟件配置的裝置的硬件部件來(lái)實(shí)現(xiàn)。
本地設(shè)備配置電路212可以使能本地設(shè)備110的配置以用于與用戶(hù)設(shè)備102或更具體地與本地設(shè)備通信應(yīng)用104通信。本地設(shè)備配置電路212可以被配置為針對(duì)本地設(shè)備110掃描網(wǎng)絡(luò)212,并且維護(hù)許可狀態(tài)信息,主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108可以針對(duì)許可狀態(tài)信息訪問(wèn)特定本地設(shè)備110,諸如通過(guò)本地設(shè)備110的序列號(hào)。在這點(diǎn)上,存儲(chǔ)器204可以存儲(chǔ)序列號(hào)和指示諸如“授權(quán)”或“未授權(quán)”的狀態(tài)的相應(yīng)指示符。在一些示例中,可以存儲(chǔ)授權(quán)的本地設(shè)備的列表,并且本地設(shè)備序列號(hào)不存在可以指示本地設(shè)備許可狀態(tài)是“未授權(quán)”。
在這點(diǎn)上,本地設(shè)備配置電路212可以包括或生成用戶(hù)接口,以用于提供用戶(hù)許可提示,用于提示用戶(hù)準(zhǔn)予或拒絕由主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108的域?qū)μ囟ū镜卦O(shè)備110的訪問(wèn)。可以響應(yīng)于本地設(shè)備通信應(yīng)用104的安裝或者響應(yīng)于來(lái)自瀏覽器106和/或本地設(shè)備服務(wù)器電路212的請(qǐng)求來(lái)進(jìn)行配置,如下面描述的。作為另一示例,本地設(shè)備通信應(yīng)用104可以提示用戶(hù)允許本地設(shè)備通信應(yīng)用104向主機(jī)108提供本地設(shè)備110的列表。附加地或備選地,偏好可以存儲(chǔ)在存儲(chǔ)器204中,使得在將來(lái)可以在沒(méi)有用戶(hù)明確地批準(zhǔn)信息的傳送的情況下提供本地設(shè)備110的列表。然后,主機(jī)108可以將本地設(shè)備110提供給瀏覽器106用于顯示,和/或主機(jī)108可以將打印指引到所指示的本地設(shè)備110中的任何一個(gè)。在一些示例中,如果用戶(hù)拒絕允許主機(jī)108訪問(wèn)本地設(shè)備110的提示,則可以提供錯(cuò)誤消息,諸如通過(guò)在瀏覽器106中的顯示,提醒用戶(hù)訪問(wèn)被拒絕。
通常,本地設(shè)備服務(wù)器電路214可以通過(guò)本地套接字例如監(jiān)聽(tīng)由瀏覽器106生成并且被傳輸?shù)蕉丝?100的請(qǐng)求。當(dāng)做出對(duì)于本地設(shè)備的請(qǐng)求時(shí),本地設(shè)備服務(wù)器電路214與本地設(shè)備配置電路212通信以指示默認(rèn)設(shè)備或?yàn)g覽器106可用的本地設(shè)備,并且經(jīng)由本地設(shè)備驅(qū)動(dòng)器電路214將設(shè)備命令轉(zhuǎn)發(fā)到期望的本地設(shè)備110。
通常,本地設(shè)備驅(qū)動(dòng)器電路214被配置用于處理來(lái)自本地設(shè)備服務(wù)器電路214的指令,以將數(shù)據(jù)轉(zhuǎn)換成與特定本地設(shè)備110兼容的設(shè)備特定的格式,并且引起數(shù)據(jù)和/或設(shè)備命令到本地設(shè)備110的傳輸。本地設(shè)備驅(qū)動(dòng)器電路214還可以被配置為從本地設(shè)備110接收響應(yīng)并且將設(shè)備響應(yīng)傳送到本地設(shè)備服務(wù)器電路214和/或?yàn)g覽器106。
在一些實(shí)施例中,用戶(hù)設(shè)備102可以包括輸入/輸出電路206,其繼而可以與處理器202通信以向用戶(hù)提供輸出并且在一些實(shí)施例中接收用戶(hù)輸入的指示。例如,輸入/輸出電路206可以用于經(jīng)由瀏覽器106顯示web應(yīng)用,接收關(guān)于許可的本地設(shè)備的輸入等。輸入/輸出電路206可以包括用戶(hù)接口,并且可以包括顯示器、web用戶(hù)接口、移動(dòng)應(yīng)用等。在一些實(shí)施例中,輸入/輸出電路206還可以包括鍵盤(pán)、鼠標(biāo)、操縱桿、觸摸屏、觸摸區(qū)域、軟鍵、麥克風(fēng)、揚(yáng)聲器或其他輸入/輸出機(jī)構(gòu)。處理器和/或包括處理器的輸入/輸出電路206可以被配置為通過(guò)存儲(chǔ)在處理器可訪問(wèn)的存儲(chǔ)器(例如,存儲(chǔ)器204等)上的計(jì)算機(jī)程序指令(例如,軟件和/或固件)來(lái)控制一個(gè)或多個(gè)用戶(hù)接口元件的一個(gè)或多個(gè)功能。
通信電路208可以包括用于使能通過(guò)網(wǎng)絡(luò)的通信的一個(gè)或多個(gè)接口機(jī)構(gòu)。在一些情況下,通信電路208可以是任何裝置,諸如在被配置為從和/或向與處理電路201通信的網(wǎng)絡(luò)和/或任何其他設(shè)備或模塊接收數(shù)據(jù)和/或傳輸數(shù)據(jù)的硬件、或者硬件和軟件的組合中實(shí)施的設(shè)備或電路。作為示例,通信電路208可以被配置為使(例如,具有本地設(shè)備驅(qū)動(dòng)器電路214的)本地設(shè)備通信應(yīng)用104能夠與本地設(shè)備110通信。在一些實(shí)施例中,通信電路208還被配置為使能用戶(hù)設(shè)備102和主機(jī)系統(tǒng)108之間的通信,以提供諸如web應(yīng)用內(nèi)容和代碼的主機(jī)web應(yīng)用107,用于由瀏覽器106顯示和/或處理。因此,通信電路208可以例如包括用于使能經(jīng)由網(wǎng)絡(luò)112、114等的通信的支持硬件和/或軟件。
圖3是根據(jù)示例實(shí)施例的操作的示例流程圖。如指示符302所示,用戶(hù)設(shè)備102的用戶(hù)使用瀏覽器106訪問(wèn)由主機(jī)web應(yīng)用107提供的web頁(yè)面。在操作306,主機(jī)系統(tǒng)108和/或主機(jī)web應(yīng)用107調(diào)用本地設(shè)備通信api109以將腳本嵌入到響應(yīng)中以傳輸?shù)綖g覽器。腳本可以包括被配置為由客戶(hù)端或?yàn)g覽器106執(zhí)行的任何計(jì)算機(jī)程序代碼,諸如javascript。響應(yīng)可以包括附加內(nèi)容或計(jì)算機(jī)程序代碼,諸如由主機(jī)系統(tǒng)108和/或主機(jī)web應(yīng)用107生成以由瀏覽器106處理和/或顯示的。
在操作310,瀏覽器處理來(lái)自主機(jī)web應(yīng)用107和/或本地設(shè)備通信本地設(shè)備通信api109的響應(yīng),并且渲染內(nèi)容和/或圖像以用于在用戶(hù)設(shè)備102的瀏覽器中顯示。在這點(diǎn)上,除了由本地設(shè)備通信api109提供的計(jì)算機(jī)程序代碼和/或腳本之外,瀏覽器顯示的內(nèi)容可以包括由主機(jī)web應(yīng)用107獨(dú)立于本地設(shè)備通信api109生成的內(nèi)容。在一些示例,瀏覽器106對(duì)腳本的執(zhí)行使區(qū)分能夠在請(qǐng)求之間做出,使得意圖用于本地設(shè)備通信應(yīng)用104的請(qǐng)求被傳輸?shù)奖镜卦O(shè)備通信應(yīng)用104,如下所述。
此外,由主機(jī)web應(yīng)用107提供的內(nèi)容可以獨(dú)立于來(lái)自對(duì)本地設(shè)備通信應(yīng)用104的異步調(diào)用的響應(yīng)而被渲染。由瀏覽器106處理的腳本可以包括對(duì)請(qǐng)求可用的本地設(shè)備110的本地設(shè)備通信應(yīng)用104(例如,對(duì)本地設(shè)備服務(wù)器電路212)的異步j(luò)avascript調(diào)用。這樣的請(qǐng)求可以被認(rèn)為是設(shè)備請(qǐng)求。設(shè)備請(qǐng)求可以包括到本地設(shè)備通信應(yīng)用104的請(qǐng)求可用本地設(shè)備和/或指示要被傳輸?shù)奖镜卦O(shè)備110的數(shù)據(jù)和/或請(qǐng)求的任何通信。在一些示例中,設(shè)備請(qǐng)求可以被自動(dòng)生成和傳輸而沒(méi)有進(jìn)一步的用戶(hù)交互。在一些示例中,用戶(hù)可以指示發(fā)起到本地設(shè)備110的通信的期望,并且設(shè)備請(qǐng)求可以響應(yīng)于用戶(hù)輸入而被生成和傳輸。在一些示例中,不需要用戶(hù)輸入。
如操作314所示,本地設(shè)備通信應(yīng)用104可以包括用于接收和處理請(qǐng)求的裝置,諸如本地設(shè)備配置電路210。
在一些示例中,本地設(shè)備通信應(yīng)用104識(shí)別出配置了默認(rèn)本地設(shè)備,并且轉(zhuǎn)發(fā)請(qǐng)求和/或數(shù)據(jù)。
在一些示例中,響應(yīng)于接收到由瀏覽器生成的請(qǐng)求,掃描可用和/或允許的設(shè)備的網(wǎng)絡(luò)(例如,本地網(wǎng)絡(luò)112),諸如局域網(wǎng)和/或本地機(jī)器。例如,本地設(shè)備通信應(yīng)用104可以標(biāo)識(shí)直接連接到用戶(hù)設(shè)備102的本地設(shè)備或者通過(guò)網(wǎng)絡(luò)可用的那些本地設(shè)備。因此,本地設(shè)備通信應(yīng)用104可以提供諸如打印機(jī)、傳真機(jī)等可用本地設(shè)備110的序列號(hào)、設(shè)備類(lèi)型和/或其他標(biāo)識(shí)信息。在下文中諸如關(guān)于圖4進(jìn)一步詳細(xì)地描述用于由本地設(shè)備通信應(yīng)用104使用的關(guān)于本地設(shè)備的配置的附加功能。在一些示例中,本地設(shè)備可以是默認(rèn)的,并且其他可用本地設(shè)備可能不一定被提供給瀏覽器。
在一些示例中,如操作318所示,瀏覽器106從本地設(shè)備通信應(yīng)用104接收本地設(shè)備信息,并且按照由主機(jī)web應(yīng)用107和/或本地設(shè)備通信api109經(jīng)由web應(yīng)用所指引的,在瀏覽器中顯示與設(shè)備相關(guān)的信息。例如參見(jiàn)圖6。提供給瀏覽器的響應(yīng)可以是javascript對(duì)象表示法(json)或可擴(kuò)展標(biāo)記語(yǔ)言(xml)的格式。因此,由于通信的異步性質(zhì),例如,異步j(luò)avascript和xml(ajax)和/或異步j(luò)avascript和json(ajaj),本地設(shè)備信息可以顯示在web頁(yè)面上,而不中斷其他內(nèi)容,或者不刷新其他內(nèi)容。
在一些實(shí)施例中,用戶(hù)可以選擇由瀏覽器呈現(xiàn)的多個(gè)本地設(shè)備中的特定本地設(shè)備110。在一些示例中,用戶(hù)可以選擇“打印”或被配置為觸發(fā)對(duì)本地設(shè)備通信應(yīng)用104的請(qǐng)求的另一接口部件。對(duì)本地設(shè)備通信應(yīng)用104做出的請(qǐng)求可以包括本地設(shè)備選擇指示。本地設(shè)備選擇指示可以包括標(biāo)識(shí)要向其傳輸數(shù)據(jù)的特定本地設(shè)備110的任何信息。例如,請(qǐng)求可以包括由用戶(hù)選擇的本地打印機(jī)的標(biāo)識(shí)符、和要打印的數(shù)據(jù)(例如,html、圖像等)。在一些示例中,可以不包括本地設(shè)備選擇指示,并且取而代之,可以諸如由本地設(shè)備通信應(yīng)用104來(lái)標(biāo)識(shí)默認(rèn)本地設(shè)備。
如操作322所示,本地設(shè)備通信應(yīng)用104可以包括將數(shù)據(jù)轉(zhuǎn)換成為本地設(shè)備110指定的設(shè)備特定的格式并且將數(shù)據(jù)傳輸?shù)奖镜卦O(shè)備110的裝置,諸如本地設(shè)備驅(qū)動(dòng)器電路210、處理器202等。在這點(diǎn)上,本地設(shè)備驅(qū)動(dòng)器電路214可以標(biāo)識(shí)與特定本地設(shè)備110兼容的設(shè)備命令和/或數(shù)據(jù)類(lèi)型,諸如選擇的本地設(shè)備或默認(rèn)本地設(shè)備。
例如,本地設(shè)備110可以被標(biāo)識(shí)為由諸如打印機(jī)控制語(yǔ)言斑馬編程語(yǔ)言(zpl)等專(zhuān)有語(yǔ)言控制的設(shè)備。
例如,題為“methodandapparatusforprintinghtmlcontent”的美國(guó)專(zhuān)利no.8,717,285描述了一種用于將html轉(zhuǎn)換成打印機(jī)控制語(yǔ)言的方法、裝置和計(jì)算機(jī)程序產(chǎn)品,并且該專(zhuān)利通過(guò)引用整體并入本文。因此,html可以被轉(zhuǎn)換成可以由本地設(shè)備110解釋和處理的專(zhuān)有和/或過(guò)程語(yǔ)言。
更具體地,本地設(shè)備驅(qū)動(dòng)器電路214可以將指定要打印的內(nèi)容的接收到的html轉(zhuǎn)換成可擴(kuò)展超文本標(biāo)記語(yǔ)言(xhtml),并且基于可擴(kuò)展樣式表語(yǔ)言(xsl)模板生成樣式信息。本地設(shè)備驅(qū)動(dòng)器電路214可以提取放置信息,并且根據(jù)xhtml和樣式信息生成包含內(nèi)容的打印機(jī)命令,使得打印機(jī)命令在本地設(shè)備110上的執(zhí)行導(dǎo)致由html指定的樣式和在從html得出的位置的內(nèi)容的光柵化。在這點(diǎn)上,打印機(jī)命令可以包括“位置信息”,其包括本地設(shè)備110根據(jù)其來(lái)解釋內(nèi)容相對(duì)于要在其上打印內(nèi)容的介質(zhì)的預(yù)期定位或放置的任何信息或設(shè)備命令。zpl中通過(guò)將數(shù)據(jù)轉(zhuǎn)換成設(shè)備特定的語(yǔ)言zpl而生成的示例打印機(jī)命令被提供如下。zpl命令包含放置信息、樣式信息和從數(shù)據(jù)提取的內(nèi)容,其在一些示例中可以以html來(lái)提供。^xa^ci28^pw639^ft528,75^a@r,150,150,e:myrdreg.ttf^fdzebra^fs^ft639,0^a@r,-37,37,e:myrdreg.ttf^fd^fs^ft430,75^a@r,83,83,e:myrdreg.ttf^fdcustomapplicationsgroup^fs^ft114,75^by2,3.0^b3r,n,250,n,n^fd*zebracustomapplicationsgroup*^-fs^xz
作為另一示例,本地設(shè)備通信應(yīng)用104可以將由瀏覽器106提供的諸如便攜式文檔格式(pdf)、pcl(點(diǎn)云庫(kù))、postscript等的頁(yè)面描述語(yǔ)言轉(zhuǎn)換成zpl。然后可以將以pdf、pcl和/或postscript顯示的內(nèi)容打印在zpl特定的設(shè)備上。
因此,app104和/或本地設(shè)備驅(qū)動(dòng)器電路214可以被預(yù)配置為轉(zhuǎn)換諸如html、pdf、pcl、postscript等一種格式的數(shù)據(jù),并且將數(shù)據(jù)轉(zhuǎn)換成諸如上述zpl命令的過(guò)程命令。一旦安裝在用戶(hù)設(shè)備102上,用戶(hù)設(shè)備102然后可以被配置為將經(jīng)由瀏覽器106提供的數(shù)據(jù)轉(zhuǎn)換成設(shè)備特定的格式,而不進(jìn)一步定制或開(kāi)發(fā)主機(jī)web應(yīng)用107。
在這點(diǎn)上,本地設(shè)備通信應(yīng)用104、或更具體地本地設(shè)備驅(qū)動(dòng)器電路214可以包括設(shè)備驅(qū)動(dòng)器,或者否則可以被配置為與在用戶(hù)設(shè)備102上操作的設(shè)備驅(qū)動(dòng)器通信。一旦本地設(shè)備通信應(yīng)用104已經(jīng)將從瀏覽器106接收的數(shù)據(jù)轉(zhuǎn)換成與本地設(shè)備110兼容的格式,本地設(shè)備通信應(yīng)用104可以發(fā)起設(shè)備特定的命令和/或數(shù)據(jù)到本地設(shè)備110的傳送。
在一些實(shí)施例中,本地設(shè)備通信應(yīng)用104可以從瀏覽器接收為本地設(shè)備格式化的數(shù)據(jù),并且可能不一定將數(shù)據(jù)轉(zhuǎn)換成另一格式。例如,本地設(shè)備通信應(yīng)用104可以接收zpl格式的命令。例如,^hh是用于從諸如本地設(shè)備110的打印機(jī)請(qǐng)求打印機(jī)配置的zpl命令,并且~hs是用于請(qǐng)求打印機(jī)狀態(tài)信息的zpl命令。因此,本地設(shè)備110可以如下面關(guān)于操作330所描述地,并且如圖8所示地,還如下文所描述地進(jìn)行響應(yīng)。
如操作326所示,本地設(shè)備110可以從用戶(hù)設(shè)備102接收設(shè)備命令。設(shè)備命令然后可以由本地設(shè)備110處理,并且可以包括從瀏覽器106轉(zhuǎn)換成設(shè)備特定的格式的數(shù)據(jù)。例如,在本地設(shè)備110是打印機(jī)的實(shí)施例中,本地設(shè)備110可以按照本地設(shè)備通信應(yīng)用104所指引的打印由用戶(hù)設(shè)備傳輸?shù)臄?shù)據(jù)。因此,打印的內(nèi)容可以類(lèi)似于html或由瀏覽器106顯示的其他內(nèi)容。在這樣的示例中,用于打印機(jī)的設(shè)備特定的命令可以被認(rèn)為是“打印命令”。在一些示例中,設(shè)備特定的格式的設(shè)備命令和/或打印命令可以使用專(zhuān)有語(yǔ)言,諸如zpl。
在一些示例中,如操作330所示,用戶(hù)設(shè)備102可以包括用于接收并且處理來(lái)自本地設(shè)備110的本地設(shè)備響應(yīng)的裝置,諸如本地設(shè)備通信應(yīng)用104、本地設(shè)備驅(qū)動(dòng)器電路214、處理器202、通信電路208等。在這點(diǎn)上,本地設(shè)備響應(yīng)可以包括從本地設(shè)備110傳輸?shù)接脩?hù)設(shè)備102的通信。因此,本地設(shè)備響應(yīng)可以確認(rèn)設(shè)備命令的接收和/或處理的完成。例如,本地設(shè)備110可以被配置為向本地設(shè)備驅(qū)動(dòng)器電路214傳送指示打印作業(yè)完成的本地設(shè)備響應(yīng),并且本地設(shè)備驅(qū)動(dòng)器電路214可以被配置為處理由本地設(shè)備100提供的本地設(shè)備響應(yīng),其可以包括設(shè)備特定的代碼,包括確認(rèn)和/或錯(cuò)誤消息。本地設(shè)備驅(qū)動(dòng)器電路214可以處理本地設(shè)備響應(yīng),使得附加通信可以被傳輸?shù)綖g覽器106,諸如為了向用戶(hù)顯示消息的目的。因此,本地設(shè)備驅(qū)動(dòng)器電路214和/或本地設(shè)備通信應(yīng)用104可以引起消息的提供用于由瀏覽器106顯示。在一些示例中,在沒(méi)有來(lái)自本地設(shè)備110的本地設(shè)備響應(yīng)的情況下經(jīng)過(guò)一段時(shí)間之后,本地設(shè)備驅(qū)動(dòng)器電路214可以生成響應(yīng),以指示缺乏來(lái)自本地設(shè)備110的響應(yīng)。
作為另一示例,諸如響應(yīng)于上述^hh命令,本地設(shè)備110可以將本地設(shè)備狀態(tài)信息(諸如打印機(jī)配置信息)返回給用戶(hù)設(shè)備120。打印機(jī)配置信息可以包括與本地設(shè)備110的當(dāng)前狀態(tài)、部件、硬件等相關(guān)聯(lián)的任何設(shè)置或配置信息。例如,打印機(jī)配置信息可以指示墨色、打印模式、媒體類(lèi)型、傳感器類(lèi)型、固件、存儲(chǔ)器卡等。
作為又一示例,諸如響應(yīng)于上述^hs命令,本地設(shè)備110可以將本地設(shè)備狀態(tài)信息(諸如打印機(jī)狀態(tài)信息)返回給用戶(hù)設(shè)備120。因此,本地設(shè)備響應(yīng)可以包括打印機(jī)狀態(tài)信息,其包括但不限于暫停標(biāo)志、溫度指示符、接收緩沖器中的格式數(shù)目、和/或標(biāo)簽長(zhǎng)度。打印機(jī)狀態(tài)信息可以附加地或備選地包括錯(cuò)誤狀態(tài)信息,其包括但不限于損壞的ram標(biāo)志、出紙標(biāo)志、和/或緩沖器滿標(biāo)志。
如操作334所示,瀏覽器106可以被配置為從本地設(shè)備通信應(yīng)用104(例如,本地設(shè)備驅(qū)動(dòng)器電路214)接收響應(yīng)。響應(yīng)可以是諸如xml和/或json的格式,使得由瀏覽器106運(yùn)行的腳本可以處理響應(yīng)并且顯示消息而不干擾由ajax和/或ajaj框架提供的其他內(nèi)容。例如,瀏覽器106可以向用戶(hù)顯示打印作業(yè)已經(jīng)完成,和/或提供諸如本地設(shè)備110的故障的錯(cuò)誤消息以對(duì)設(shè)備命令進(jìn)行響應(yīng)。在一些示例中,瀏覽器106可以顯示從本地設(shè)備110接收的數(shù)據(jù),例如本地設(shè)備配置信息和/或本地設(shè)備狀態(tài)信息。
在一些示例中,還可以將在用戶(hù)設(shè)備102上從本地設(shè)備110接收的數(shù)據(jù)(諸如本地設(shè)備配置信息和/或本地設(shè)備狀態(tài)信息)返回給主機(jī)系統(tǒng)108。主機(jī)web應(yīng)用107因此可以在其處理中利用該信息。例如,可以基于由本地設(shè)備110返回的標(biāo)簽長(zhǎng)度來(lái)對(duì)所生成的標(biāo)簽做出調(diào)整。
提供以上描述和在圖3中所示的操作以示出根據(jù)示例實(shí)施例的系統(tǒng)100的各個(gè)部件之間的示例操作和通信。圖4是示出用于與本地設(shè)備通信應(yīng)用104(諸如,與本地設(shè)備配置電路210)通信的本地設(shè)備通信應(yīng)用104和本地設(shè)備110的配置的流程圖。
如操作402所示,瀏覽器106從諸如主機(jī)系統(tǒng)108的服務(wù)器的服務(wù)器和/或從主機(jī)web應(yīng)用107請(qǐng)求web頁(yè)面。如操作406所示,從主機(jī)系統(tǒng)108提供并且由瀏覽器106執(zhí)行的javascript從本地設(shè)備通信應(yīng)用104請(qǐng)求可用打印機(jī)(或其他本地設(shè)備)。如操作410和414所示,如果本地設(shè)備通信應(yīng)用104未被檢測(cè)到或不可用,則可以利用用于安裝app的指令來(lái)提示用戶(hù),諸如借助于用戶(hù)設(shè)備102上的附加應(yīng)用。例如,用戶(hù)可以從googleplaytm或其他類(lèi)似的app商店下載應(yīng)用。圖5是在未安裝本地設(shè)備通信應(yīng)用104的情況下由瀏覽器106生成的示例接口。內(nèi)容501可以包括由主機(jī)系統(tǒng)108提供要由瀏覽器106顯示的任何內(nèi)容,并且可以包括例如由主機(jī)web應(yīng)用107生成的用戶(hù)可能希望在本地打印機(jī)上打印的條形碼標(biāo)簽(未示出)。由于本地設(shè)備通信應(yīng)用104不可用于提供本地設(shè)備110,所以下拉菜單(dropdown)502可能看起來(lái)是空的。消息503向用戶(hù)指示本地設(shè)備通信應(yīng)用104不存在并且應(yīng)該被下載。鏈路504提供訪問(wèn)用戶(hù)設(shè)備102的app商店的鏈接,使得用戶(hù)可以下載本地設(shè)備通信應(yīng)用104。在一些示例中,可以在app商店中默認(rèn)并且選擇本地設(shè)備通信應(yīng)用104以便于安裝。
返回圖4,在本地設(shè)備通信應(yīng)用104在用戶(hù)設(shè)備102(或本地設(shè)備通信應(yīng)用104的安裝之后)被安裝和檢測(cè)的情況下,如操作418所示,本地設(shè)備通信應(yīng)用104可以提供打印機(jī)或其他本地設(shè)備100的列表,如以上關(guān)于操作314所描述的。在操作422,javascript選擇打印機(jī)并且將數(shù)據(jù)傳輸?shù)奖镜卦O(shè)備通信應(yīng)用104。換言之,從瀏覽器106啟動(dòng)的javascript呼叫向本地設(shè)備通信應(yīng)用104指示所選擇的打印機(jī)或本地設(shè)備110。在一些示例中,所選擇的本地設(shè)備110可以由用戶(hù)選擇,或者在一些示例中,例如在僅一個(gè)本地設(shè)備110可用或者本地設(shè)備在位置設(shè)備通信應(yīng)用104中被設(shè)置為默認(rèn)本地設(shè)備的情況下,選擇可以默認(rèn)為默認(rèn)本地設(shè)備110而沒(méi)有來(lái)自用戶(hù)的輸入。圖6是在安裝本地設(shè)備通信應(yīng)用104的情況下由瀏覽器106生成的示例接口。在這點(diǎn)上,圖6的接口可以是在安裝本地設(shè)備通信應(yīng)用104之后的圖5的接口的更新版本。在該示例中,可用本地設(shè)備110被填充到下拉菜單502中,使得用戶(hù)可以選擇打印機(jī),隨后部件510啟動(dòng)諸如內(nèi)容501的數(shù)據(jù)到所選擇的打印機(jī)(例如,本地設(shè)備110)的傳送。圖7提供了關(guān)于本地設(shè)備選擇指示的甚至更多細(xì)節(jié),并且在下文中進(jìn)一步詳細(xì)描述。
返回圖4,如操作426所示,本地設(shè)備通信應(yīng)用104可以確定原始web服務(wù)器域(例如,主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108)是否相對(duì)于每個(gè)可用本地設(shè)備110具有許可狀態(tài)和/或是否要針對(duì)本地設(shè)備110而掃描本地網(wǎng)絡(luò)112和/或用戶(hù)設(shè)備102。在這點(diǎn)上,許可狀態(tài)可以包括指示主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108是否具有訪問(wèn)特定本地設(shè)備100的許可的任何信息。本地設(shè)備通信應(yīng)用104(諸如具有本地設(shè)備配置電路210)可以維護(hù)這樣的通信從其中被許可的許可的域、主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108的列表。在一些示例中,一旦被許可,主機(jī)系統(tǒng)108可以通過(guò)瀏覽器106訪問(wèn)任何本地設(shè)備110,而無(wú)需對(duì)用戶(hù)的附加查詢(xún)。附加地或備選地,可以與主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108相關(guān)聯(lián)地存儲(chǔ)本地設(shè)備110序列號(hào)等,指示特定域、主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108是否可以啟動(dòng)對(duì)于指定的本地設(shè)備110的請(qǐng)求(經(jīng)由對(duì)由主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108提供的頁(yè)面進(jìn)行渲染的瀏覽器106)。
例如,如果用戶(hù)設(shè)備102的用戶(hù)在先前會(huì)話中或者通過(guò)本地設(shè)備通信應(yīng)用104的初始配置已經(jīng)提供了對(duì)于特定的主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108訪問(wèn)本地設(shè)備110的許可,則在操作430,可以向所選擇的本地設(shè)備110(例如打印機(jī))發(fā)送設(shè)備命令和/或數(shù)據(jù),如以上關(guān)于操作322和326所述。在一些示例中,如果許可還沒(méi)有被準(zhǔn)予,如操作434所示,可以提示用戶(hù)設(shè)備102的用戶(hù)確認(rèn)請(qǐng)求的主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108可以與本地設(shè)備110通信。在這點(diǎn)上,被輸出到請(qǐng)求對(duì)主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108訪問(wèn)本地設(shè)備110的許可的用戶(hù)設(shè)備的用戶(hù)的任何消息可以被認(rèn)為是用戶(hù)許可提示。一旦授權(quán)指示由用戶(hù)做出并且被提供給本地設(shè)備通信應(yīng)用104,則與本地設(shè)備110的通信可以如操作438和430所示進(jìn)行。因此,授權(quán)指示可以被認(rèn)為是指示對(duì)主機(jī)web應(yīng)用107和/或主機(jī)系統(tǒng)108訪問(wèn)本地設(shè)備110的許可被準(zhǔn)予的任何用戶(hù)輸入。
在一些示例中,用戶(hù)可以不批準(zhǔn)主機(jī)系統(tǒng)108(經(jīng)由瀏覽器106)的與本地設(shè)備110通信的請(qǐng)求。在這樣的示例中,如操作424所示,本地設(shè)備通信應(yīng)用104不進(jìn)行向本地設(shè)備110發(fā)送數(shù)據(jù)。這樣的功能可以提供附加安全性,使得由瀏覽器106執(zhí)行并且被傳輸?shù)奖镜卦O(shè)備通信應(yīng)用104的惡意代碼在沒(méi)有用戶(hù)特別地許可原始域或主機(jī)系統(tǒng)108訪問(wèn)本地設(shè)備110的情況下不能控制本地設(shè)備110。
圖7是可以由本地設(shè)備通信應(yīng)用104執(zhí)行的操作的示例流程圖。如操作702所示,瀏覽器從應(yīng)用(例如,本地設(shè)備通信應(yīng)用104)請(qǐng)求默認(rèn)本地設(shè)備,諸如打印機(jī)。因此,本地設(shè)備通信應(yīng)用104諸如通過(guò)在本地端口上監(jiān)聽(tīng)請(qǐng)求來(lái)接收該請(qǐng)求。如操作704所示,本地設(shè)備通信應(yīng)用104確定是否存在設(shè)置的默認(rèn)本地設(shè)備。如果存在諸如在存儲(chǔ)器204上的默認(rèn)本地設(shè)備,則本地設(shè)備通信應(yīng)用104確定由瀏覽器106提供給默認(rèn)本地設(shè)備的相關(guān)聯(lián)命令可以被發(fā)送。
在一些實(shí)施例中,如操作708所示,瀏覽器106的用戶(hù)仍然可以指示使用與默認(rèn)本地設(shè)備不同的本地設(shè)備。在這種情況下,或者當(dāng)未設(shè)置默認(rèn)本地設(shè)備時(shí),本地設(shè)備通信應(yīng)用104可以針對(duì)可用本地設(shè)備掃描網(wǎng)絡(luò),如操作710所示。因此,瀏覽器106可以向用戶(hù)顯示本地設(shè)備,因此用戶(hù)可以進(jìn)行選擇,如操作712所示。在操作714,選擇本地設(shè)備,同時(shí),用戶(hù)在操作716有機(jī)會(huì)改變所選擇的本地設(shè)備。在一些示例中,在操作718中,用戶(hù)還可以向所選擇的本地設(shè)備指示要由本地設(shè)備通信應(yīng)用104處理的命令,諸如打印由瀏覽器提供的指定數(shù)據(jù)。如操作720所示,用戶(hù)可以繼續(xù)以向相同的所選擇的設(shè)備發(fā)送數(shù)據(jù),或者也可以在操作716有機(jī)會(huì)改變所選擇的本地設(shè)備。
圖8是可以由本地設(shè)備110響應(yīng)于本地設(shè)備通信應(yīng)用104向本地設(shè)備110傳輸命令來(lái)打印的示例標(biāo)簽800。在該示例中,本地設(shè)備110將打印機(jī)配置信息打印到標(biāo)簽。作為另一示例,本地設(shè)備110可以將數(shù)據(jù)返回給用戶(hù)設(shè)備102(例如,經(jīng)由本地設(shè)備通信應(yīng)用104),并且數(shù)據(jù)可以由瀏覽器106顯示。作為另一示例,數(shù)據(jù)可以從本地設(shè)備110傳輸?shù)街鳈C(jī)系統(tǒng)180。
本文中提供的實(shí)施例有利地提供了對(duì)用于從用戶(hù)設(shè)備102打印內(nèi)容的方法的改進(jìn)。示例實(shí)施例使用戶(hù)能夠在運(yùn)行中快速地安裝本地設(shè)備通信應(yīng)用104,而無(wú)需搜索和安裝設(shè)備特定的驅(qū)動(dòng)程序。此外,示例實(shí)施例與各種瀏覽器類(lèi)型和操作系統(tǒng)兼容,因?yàn)樗鼈兛梢岳锚?dú)立于瀏覽器且獨(dú)立于操作系統(tǒng)的方法(諸如ajax和/或ajaj)來(lái)實(shí)現(xiàn)。另一方面,例如,利用
此外,在一些實(shí)施例中,本地設(shè)備通信api109使主機(jī)系統(tǒng)108的開(kāi)發(fā)方能夠定制web應(yīng)用(諸如主機(jī)web應(yīng)用107)以向用戶(hù)設(shè)備102的用戶(hù)供應(yīng)期望的解決方案,而不需要進(jìn)一步定制設(shè)備驅(qū)動(dòng)器等。在示例實(shí)施例中,可以基于諸如html的標(biāo)準(zhǔn)協(xié)議利用本地設(shè)備通信應(yīng)用104直接在用戶(hù)設(shè)備102上生成設(shè)備特定的命令,諸如專(zhuān)有語(yǔ)言的那些。因此,實(shí)施例減少了主機(jī)系統(tǒng)108在定制單獨(dú)的解決方案時(shí)對(duì)專(zhuān)有設(shè)備控制軟件的依賴(lài)性。因此,主機(jī)系統(tǒng)108的開(kāi)發(fā)方可以繼續(xù)增強(qiáng)web應(yīng)用,同時(shí)保持與本地設(shè)備通信應(yīng)用104的兼容性以及在本地設(shè)備110上的打印能力。
如上所述并且基于本公開(kāi)將理解,本發(fā)明的實(shí)施例可以被配置為計(jì)算機(jī)實(shí)現(xiàn)的方法、用戶(hù)設(shè)備、web服務(wù)器等。因此,實(shí)施例可以包括完全包括硬件或軟件和硬件的任何組合的各種裝置。此外,實(shí)施例可以采用至少一個(gè)非暫時(shí)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品的形式,該存儲(chǔ)介質(zhì)具有在存儲(chǔ)介質(zhì)中實(shí)施的計(jì)算機(jī)可讀程序指令(例如,計(jì)算機(jī)軟件)。可以使用任何合適的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),包括非暫態(tài)硬盤(pán)、cd-rom、閃存、光存儲(chǔ)設(shè)備或磁存儲(chǔ)設(shè)備。
以上參考方法、裝置、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品的框圖和流程圖描述了本發(fā)明的實(shí)施例。應(yīng)當(dāng)理解,電路圖和處理流程圖的每個(gè)框、以及電路圖和處理流程圖中的框的組合可以通過(guò)包括計(jì)算機(jī)程序指令的各種裝置來(lái)實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以被加載到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置(諸如處理器202、本地設(shè)備通信應(yīng)用104(例如,電路210、212和/或214))上以產(chǎn)生機(jī)器,使得計(jì)算機(jī)程序產(chǎn)品包括在計(jì)算機(jī)或者其他可編程數(shù)據(jù)處理裝置上執(zhí)行的指令以創(chuàng)建用于實(shí)現(xiàn)在一個(gè)或多個(gè)流程圖框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令還可以存儲(chǔ)在可以指引計(jì)算機(jī)或其他可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(例如,存儲(chǔ)器204)中,使得存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中的指令能夠產(chǎn)生包括用于實(shí)現(xiàn)本文中討論的功能的計(jì)算機(jī)可讀指令的制品。計(jì)算機(jī)程序指令還可以被加載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,以引起一系列操作步驟在計(jì)算機(jī)或其他可編程設(shè)備上被執(zhí)行以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過(guò)程,使得在計(jì)算機(jī)或其他可編程裝置上執(zhí)行的指令能夠提供用于實(shí)現(xiàn)本文中討論的功能的步驟。
因此,框圖和流程示圖的框支持用于執(zhí)行指定功能的裝置的組合、用于執(zhí)行指定功能的步驟的組合、和用于執(zhí)行指定功能的程序指令裝置。還將理解,電路圖和處理流程圖的每個(gè)框、以及電路圖和處理流程圖中的框的組合可以由執(zhí)行指定功能或步驟的專(zhuān)用的基于硬件的計(jì)算機(jī)系統(tǒng)、或者專(zhuān)用硬件和計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
得益于前述描述和相關(guān)聯(lián)的附圖中呈現(xiàn)的這些教導(dǎo)的本發(fā)明的這些實(shí)施例所屬領(lǐng)域的技術(shù)人員將會(huì)想到本文中闡述的本發(fā)明的很多修改和其它實(shí)施例。因此,應(yīng)當(dāng)理解,本發(fā)明的實(shí)施例不限于所公開(kāi)的特定實(shí)施例,并且修改和其他實(shí)施例旨在被包括在所附權(quán)利要求的范圍內(nèi)。雖然本文中采用具體術(shù)語(yǔ),但是它們僅在一般性和描述性意義上使用,而不是出于限制目的。