項(xiàng)靖 趙陳萍
摘 ?要:隨著物聯(lián)網(wǎng)技術(shù)和移動(dòng)設(shè)備的快速發(fā)展,許多互聯(lián)網(wǎng)+產(chǎn)品走進(jìn)人們的生活。微信小程序并不需要用戶下載和安裝應(yīng)用程序,用戶只需要掃一掃即可打開。云打印系統(tǒng)能夠上傳用戶需要打印的文檔,選擇就近的打印點(diǎn)進(jìn)行打印,學(xué)生不必出學(xué)校就可以享受打印服務(wù)。相比于傳統(tǒng)的打印服務(wù),云打印不需要排隊(duì)等候,更加方便快捷。
關(guān)鍵詞:微信小程序;云打印系統(tǒng);物聯(lián)網(wǎng)
中圖分類號(hào):TP311 ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)志碼:A
1 系統(tǒng)簡(jiǎn)介
近年來,隨著云計(jì)算、物聯(lián)網(wǎng)、嵌入式等技術(shù)日趨成熟,以及移動(dòng)設(shè)備的快速發(fā)展,許多互聯(lián)網(wǎng)+產(chǎn)品走進(jìn)人們的生活,越來越多的產(chǎn)品向著無線化、網(wǎng)絡(luò)化、智能化的方向發(fā)展,基于物聯(lián)網(wǎng)技術(shù)的智能硬件從理念變?yōu)楝F(xiàn)實(shí)。
在學(xué)習(xí)工作和生活中,打印機(jī)是人們常使用的設(shè)備,而微信更是不可或缺的工具,兩者相互結(jié)合可以實(shí)現(xiàn)遠(yuǎn)程打印,其相較于傳統(tǒng)的打印流程更安全、快捷。
該文設(shè)計(jì)并開發(fā)了一種基于微信小程序的云打印系統(tǒng),用戶只需要上傳需要打印的文件,系統(tǒng)就可以自動(dòng)進(jìn)行打印服務(wù),最后只需要到指定的地方取件便可以完成一次服務(wù)。
1.1 主要研究?jī)?nèi)容
云打印系統(tǒng)旨在實(shí)現(xiàn)一個(gè)基于互聯(lián)網(wǎng)+的打印服務(wù)平臺(tái),其能夠讓打印更加智能化、便捷化。該文的主要研究?jī)?nèi)容包括云打印系統(tǒng)的設(shè)計(jì)、微信小程序的設(shè)計(jì)、研究阿里云服務(wù)器部署軟件和數(shù)據(jù)庫設(shè)計(jì)。
該文制定了云打印系統(tǒng)和微信小程序之間交互的解決方案,對(duì)用戶上傳的文件進(jìn)行合理地保存。同時(shí)專門設(shè)計(jì)了方案對(duì)用戶的登錄狀態(tài)進(jìn)行維護(hù)?;贘ava開發(fā)并使用MySQL作為數(shù)據(jù)庫,微信小程序采用微信開發(fā)者工具設(shè)計(jì)。
該文研究并解決了服務(wù)器和終端之間的通信問題,因?yàn)榻K端采用Wi-Fi接入互聯(lián)網(wǎng),無固定IP,服務(wù)器無法訪問,所以通信十分困難。
云打印系統(tǒng)的數(shù)據(jù)采用Socket連接發(fā)送,系統(tǒng)將打印數(shù)據(jù)封裝成包,然后發(fā)送到終端,終端再解析數(shù)據(jù)包,獲取需要傳輸?shù)奈募刂贰TP端口、賬號(hào)和密碼等信息[1]。終端傳輸完信息后再進(jìn)行打印。
終端采用PDFBox工具控制打印機(jī),Apache PDFBox是一個(gè)開源的Java庫,支持PDF文檔的開發(fā)和轉(zhuǎn)換[2]。使用這個(gè)庫可以開發(fā)創(chuàng)建、轉(zhuǎn)換和操作PDF文檔的Java程序。
1.2 技術(shù)創(chuàng)新之處
與其他類似的打印解決方案相比,該系統(tǒng)的創(chuàng)新之處有2個(gè)。1)提出利用微信小程序,通過小程序完成文檔的遠(yuǎn)程打印模式。2)采用云服務(wù)器來處理用戶上傳的打印資料,終端經(jīng)過Wi-Fi+FRP的方式來傳輸數(shù)據(jù)。
2 系統(tǒng)功能需求分析
該系統(tǒng)由打印機(jī)終端和云服務(wù)器組成。終端部分的主要功能包括接收云服務(wù)器數(shù)據(jù)和控制打印機(jī),完成經(jīng)無線網(wǎng)絡(luò)接入互聯(lián)網(wǎng)與云服務(wù)器進(jìn)行通信,以及對(duì)各種文檔、照片進(jìn)行處理和打印,云服務(wù)器的主要功能包括微信小程序設(shè)計(jì)和云打印服務(wù)設(shè)計(jì)。
2.1 軟件方面功能描述
2.1.1 微信小程序功能描述
用戶可通過小程序上傳文檔、照片等文件,并且能夠?yàn)g覽、操作已經(jīng)上傳的文檔、照片等文件。
用戶可打印已上傳的資料,查看打印狀態(tài)、瀏覽歷史訂單等信息。
2.1.2 云服務(wù)器功能描述
云服務(wù)器能處理微信小程序的業(yè)務(wù)信息,提供打印數(shù)據(jù)下發(fā)的云端打印服務(wù)。
2.2 硬件方面功能描述
可接收云服務(wù)器下發(fā)的打印任務(wù)和數(shù)據(jù),進(jìn)行打印作業(yè),返回打印結(jié)果并記錄打印操作。
3 系統(tǒng)總體方案
根據(jù)對(duì)系統(tǒng)功能的需求分析和相關(guān)技術(shù)研究,制定了系統(tǒng)的總體設(shè)計(jì)方案,其流程如圖1所示。
云打印平臺(tái)是為小程序和打印終端服務(wù)的一個(gè)系統(tǒng),由云服務(wù)器和云打印系統(tǒng)組成,系統(tǒng)要處理小程序發(fā)送的POST請(qǐng)求,處理用戶的業(yè)務(wù)。還能接收儲(chǔ)存用戶上傳的文件、圖片等數(shù)據(jù),并生成打印任務(wù),下發(fā)到打印終端。同時(shí)能夠分析打印終端的HTTP請(qǐng)求,判斷打印任務(wù)是否完成。
打印終端是用來完成云打印的設(shè)備,通過Wi-Fi連接互聯(lián)網(wǎng)與云服務(wù)器進(jìn)行通信,當(dāng)收到系統(tǒng)發(fā)送的打印命令時(shí),終端對(duì)數(shù)據(jù)進(jìn)行分析并執(zhí)行打印操作,完成打印工作后,將文件狀態(tài)返回給云服務(wù)器。
4 打印終端設(shè)計(jì)方案
打印終端是接收打印任務(wù)和處理打印任務(wù)的一個(gè)設(shè)備。云服務(wù)器發(fā)送數(shù)據(jù)到設(shè)備,該系統(tǒng)通過無線連接的方式來傳輸數(shù)據(jù)。目前無線網(wǎng)絡(luò)的覆蓋情況十分良好,為打印終端在實(shí)際應(yīng)用的過程中提供了良好的基礎(chǔ)。
該設(shè)計(jì)中采用Z3735F主板作為基礎(chǔ),微處理器采用的是Intel Atom Z3735F。該主板采用3 V直流電源供電,2G內(nèi)存,32GB存儲(chǔ)。
終端系統(tǒng)采用CentOS作為操作系統(tǒng),由于云服務(wù)器不能直接通過網(wǎng)絡(luò)訪問終端設(shè)備,因此需要內(nèi)網(wǎng)穿透工具,該系統(tǒng)使用FRP內(nèi)網(wǎng)穿透軟件,可以完成從公網(wǎng)到FRP(服務(wù)器)到終端的連接。打印端通過監(jiān)聽指定端口,獲取云服務(wù)器數(shù)據(jù),通過FRP設(shè)置指定端口接收數(shù)據(jù)。
5 云打印系統(tǒng)設(shè)計(jì)
5.1 用戶登錄設(shè)計(jì)
微信小程序并非傳統(tǒng)的Web網(wǎng)頁,不能保存收到的會(huì)話信息,這使得每次請(qǐng)求到后臺(tái)服務(wù)端都會(huì)創(chuàng)建一個(gè)新的會(huì)話ID,后端服務(wù)器就不會(huì)保存小程序的登錄狀態(tài)。解決方法是封裝自定義微信請(qǐng)求,在小程序端獲取會(huì)話信息時(shí),將其保存到本地,后續(xù)請(qǐng)求時(shí),再從本地取出,添加到header請(qǐng)求里。
在用戶打開小程序時(shí),會(huì)請(qǐng)求微信服務(wù)器返回獨(dú)有的驗(yàn)證數(shù)據(jù),再攜帶這個(gè)數(shù)據(jù)去請(qǐng)求云服務(wù)器,云服務(wù)器再請(qǐng)求微信服務(wù)器獲取用戶的ID(openid)和會(huì)話秘鑰(session key),生成用戶初步數(shù)據(jù)并存儲(chǔ)在數(shù)據(jù)庫中。openid是普通用戶的一個(gè)唯一標(biāo)識(shí),因此系統(tǒng)可以根據(jù)openid判斷用戶。
5.2 用戶上傳文件設(shè)計(jì)
將本地資源上傳到云服務(wù)器。頁面通過wx.chooseImage等接口獲取到一個(gè)本地資源的臨時(shí)文件路徑后,可以通過該接口將本地資源上傳到指定服務(wù)器中。發(fā)起一個(gè)HTTPS請(qǐng)求,其中Content-Type為multipart/form-data。小程序還可預(yù)覽上傳的圖片,實(shí)現(xiàn)刪除功能。
上傳文件后,每個(gè)文件會(huì)生成唯一的文件ID,用戶文件表的file_state字段用來記錄文件狀況,wait_order狀態(tài)說明文件已經(jīng)上傳,等待下單,同時(shí)也會(huì)生成socket_file表數(shù)據(jù),記錄文檔打印份數(shù)和打印范圍。
5.3 用戶文件傳輸設(shè)計(jì)
云服務(wù)器和終端設(shè)備之間的文件傳輸是通過Socket連接來實(shí)現(xiàn)的,使用FRP時(shí)需要在終端和云服務(wù)器安裝軟件,并配置相應(yīng)的端口。
設(shè)備啟動(dòng)時(shí),會(huì)請(qǐng)求并攜帶信息向服務(wù)器注冊(cè)該設(shè)備,該信息如圖2所示,device_port字段代表服務(wù)器訪問的端口號(hào),建立連接時(shí),可跟距用戶選擇的設(shè)備查詢Device表,獲取設(shè)備對(duì)應(yīng)的端口號(hào),建立Socket連接。
建立連接后,通過查詢用戶文件表中記錄的文件地址獲取文件,與socket_file表中的打印數(shù)據(jù)一起封窗成SocketFile對(duì)象,經(jīng)Java的I/O數(shù)據(jù)流通過網(wǎng)絡(luò)傳輸?shù)浇K端,終端和云服務(wù)器有著相同的類文件,序列化對(duì)象并調(diào)用打印服務(wù)。
5.4 設(shè)備注冊(cè)設(shè)計(jì)
設(shè)備每次啟動(dòng)時(shí)候都要更新數(shù)據(jù)庫的信息,保證用戶的發(fā)送數(shù)據(jù)都是向正確的設(shè)備發(fā)送的。終端設(shè)備根據(jù)自定義HTTP請(qǐng)求發(fā)送配置信息來發(fā)送數(shù)據(jù)。
6 結(jié)語
隨著互聯(lián)網(wǎng)時(shí)代的快速發(fā)展,云打印服務(wù)已逐漸成為社會(huì)發(fā)展的主要方向。該課題根據(jù)該校的一些基本現(xiàn)狀,以提升學(xué)生打印服務(wù)效率、降低打印成本為目的來設(shè)計(jì)云打印系統(tǒng),實(shí)現(xiàn)了以互聯(lián)網(wǎng)+為思想的創(chuàng)新創(chuàng)業(yè)目標(biāo)。
參考文獻(xiàn)
[1]玉亮.網(wǎng)絡(luò)編程1[EB/OL].(2018-08-23)[2020-05-30].https://blog.csdn.net/qq_32417289/article/details/81980239.
[2]Sky浪翻云.PDFBox簡(jiǎn)介[EB/OL].(2012-05-16)[2020-5-30].https://www.yiibai.com/pdfbox/pdfbox_overview.htm.