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