項靖 趙陳萍


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