




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第一章引言1.1課題背景伴隨著網(wǎng)絡(luò)信息技術(shù)的快速發(fā)展與革新,自動售貨柜向著網(wǎng)絡(luò)化、智能化方向不斷的發(fā)展,通過使用成熟的網(wǎng)絡(luò)信息技術(shù)和網(wǎng)絡(luò)互聯(lián)設(shè)備[5],我們可以將許多臺自動售貨柜聯(lián)網(wǎng),在互聯(lián)網(wǎng)上遠(yuǎn)程對自動售貨柜進(jìn)行集中的管理和監(jiān)控,使自動售貨柜的經(jīng)營變得更加信息化、網(wǎng)絡(luò)化、智能化,實(shí)現(xiàn)了對自動售貨柜遠(yuǎn)程控制、售賣貨物的信息的查詢和反饋、故障和警報(bào)信息等處理,不僅節(jié)省了人力資源降低了管理的成本,還提升了管理效率。充分地發(fā)揮了網(wǎng)絡(luò)的優(yōu)勢,并使用它來創(chuàng)造更大的經(jīng)濟(jì)效益。其中,自動售貨柜在八九十年代的美國、日本和歐洲,自動售貨柜已經(jīng)應(yīng)用于食品、飲料、快餐、香煙、公交、地鐵、郵票、報(bào)紙,以及個(gè)人衛(wèi)生用品等各個(gè)方面。作為一種先進(jìn)前衛(wèi)的商業(yè)零售模式,自動售貨柜已在全世界近50個(gè)經(jīng)濟(jì)較發(fā)達(dá)的國家得到了迅速的發(fā)展和擴(kuò)張。雖然自動售貨柜在我國的起步較晚,一直到了上世紀(jì)90年代才在廣東、上海開始慢慢出現(xiàn),及其主要分別從日本、韓國等國家進(jìn)口。到了現(xiàn)在,自動售貨柜的在我國的發(fā)展已達(dá)到了數(shù)萬臺,其主要分布在北京、上海、廣州、深圳以及我國沿海地區(qū)。由于自動售貨柜的快捷靈活和24小時(shí)晝夜不斷服務(wù),深受當(dāng)?shù)厝嗣竦臍g迎與喜愛。在繁華的商業(yè)街道、地鐵和車站甚至都出現(xiàn)過集體排隊(duì)購買的現(xiàn)象。在中國,自動售貨柜具有廣泛的發(fā)展和應(yīng)用前途。但是由于我國目前的經(jīng)濟(jì)情況和美國、日本和歐洲發(fā)達(dá)國家相比還有很大一段的距離,我國現(xiàn)在的城市人口大約4億多人,假如按照按平均500人就有一臺自動售貨柜的話,那么,中國的自動售貨柜的潛在需求市場就要高達(dá)80萬臺。據(jù)相關(guān)資料的證,在天津,一臺自動售貨柜每天銷售額平均為200元左右,而在大連平均為280元左右。如以每臺自動售貨柜每天銷售額以200元來計(jì)算,全年通過自動售貨柜銷售額就可達(dá)到600億元之多。自動售貨柜的新穎的銷售模式、巨大的市場潛力、商品的物美價(jià)廉等優(yōu)點(diǎn),都側(cè)面說明了其擁有十分廣闊發(fā)展前景。1.2國內(nèi)外研究狀況以目前的情況來說國內(nèi)外傳統(tǒng)的自動售貨柜大部分都是基于單片機(jī)或者ARM7等結(jié)構(gòu)相對來說比較簡單的系統(tǒng),不能夠進(jìn)行聯(lián)網(wǎng),而全新型的智能自動售貨柜通過對4G網(wǎng)絡(luò)、WiFi網(wǎng)絡(luò)、FPGA的深入研究與應(yīng)用,快速實(shí)現(xiàn)了自動售貨柜網(wǎng)絡(luò)化、智能化,[1]以及通過利用中心計(jì)算機(jī)來進(jìn)行統(tǒng)一集中的遠(yuǎn)程管理,并且能夠與支付寶微信等第三方工具網(wǎng)關(guān)直接進(jìn)行支付[2]。1.3課題目的本設(shè)計(jì)目的在一開發(fā)一種低成本,智能化,適應(yīng)多個(gè)不同的網(wǎng)絡(luò)環(huán)境和遠(yuǎn)程控制為一體的智能售貨柜。結(jié)合自動售貨柜的發(fā)展趨勢,本系統(tǒng)有以下幾種優(yōu)點(diǎn):(1)聯(lián)網(wǎng)優(yōu)點(diǎn)即自動售貨柜可以在wifi和4G網(wǎng)絡(luò)倆者中根據(jù)在不同環(huán)境下選擇不同的聯(lián)網(wǎng)方式。(2)零售優(yōu)勢目前的超市人滿為患,效率地下,而智能售貨柜可以全天24小時(shí)自助服務(wù),避免排隊(duì)帶來的擁堵情況。(3)支付優(yōu)勢傳統(tǒng)的售貨柜還在用紙幣硬幣進(jìn)行支付,操作相當(dāng)繁瑣,找零也及其不方便,而智能自動售貨柜可以用微信或支付寶進(jìn)行第三方工具網(wǎng)關(guān)快速進(jìn)行支付。第二章系統(tǒng)設(shè)計(jì)的總體方案2.1功能分析及說明本課題包含了自動售貨柜、云端服務(wù)器和手機(jī)支付這三大部分,其中智能售貨柜通過wifi和4G運(yùn)營商網(wǎng)絡(luò)的形式和云端服務(wù)器進(jìn)行通信,一方面當(dāng)有客戶用手機(jī)進(jìn)行掃碼購物時(shí),要監(jiān)聽并響應(yīng)云端服務(wù)器的請求,進(jìn)行開關(guān)門的動作,另一方面還要解析數(shù)據(jù)完成本地存儲,當(dāng)柜機(jī)遇到關(guān)門或者報(bào)警時(shí),還要上發(fā)數(shù)據(jù)到云端服務(wù)器,總體框架如圖2-1。2-12.2研究內(nèi)容本課題研究內(nèi)容包含了4G和wifi模塊的聯(lián)網(wǎng)選擇和使用,對使用到的http協(xié)議、https保密協(xié)議及其通信機(jī)制的研究,以及基于json格式的數(shù)據(jù)收發(fā)流程的實(shí)現(xiàn)。對自動售貨柜的遠(yuǎn)程控制系統(tǒng),即對于http服務(wù)器的研究與搭建,對工作內(nèi)容所需的開發(fā)環(huán)境的搭建、對整個(gè)系統(tǒng)功能測試環(huán)境的搭建和功能的測試。第三章硬件選型3.1NanopiNEO開發(fā)板NanoPiNEO是友善之臂公司為現(xiàn)在流行的物聯(lián)網(wǎng)應(yīng)用而設(shè)計(jì)的一款高性能低功耗的小體積嵌入式產(chǎn)品。其著名架構(gòu)Cortex-A7四核處理能力完全能覆蓋小型超低功耗嵌入式產(chǎn)品的各方面應(yīng)用,完全可以替代高端的STM32產(chǎn)品系列,同時(shí)還兼具上位機(jī)的處理能力可謂集大成之作。在內(nèi)存方面也延續(xù)友善之臂用料扎實(shí)的特點(diǎn)采用的是三星的256/512內(nèi)存記憶顆粒。雖然這款產(chǎn)品只有40X40mm毫秒的大小,但卻是麻雀雖小五臟俱全。USB接口,以太網(wǎng)口,還有串口以及具有無限擴(kuò)展能力的GPIO針腳可謂功能齊全。因其超小的身材,和超強(qiáng)的軟硬件擴(kuò)展能力,使得NEO非常適合制作有趣的項(xiàng)目,以及物聯(lián)網(wǎng)方面的應(yīng)用。此開發(fā)板具有超強(qiáng)的拓展能力,其USB接口可以外接4G模塊和wifi模塊,以便自動售貨柜在不同環(huán)境下聯(lián)網(wǎng)方式的選擇。3.2EC20的4G模塊EC20模塊是一款專門為M2M和IoT應(yīng)用而設(shè)計(jì)的LTECat4無線通信模塊,其采用LTE3GPPRel.11技術(shù)能夠?qū)崿F(xiàn)3G網(wǎng)絡(luò)與4G網(wǎng)絡(luò)之間的無縫隙切換。EC20核心電路接口由SIM卡接口、各狀態(tài)信號接口以及通信接口等等組成。EC20支持接收分集技術(shù),在終端設(shè)備上安裝2個(gè)不同的蜂窩天線,從而實(shí)現(xiàn)優(yōu)質(zhì)可靠的無線連接。因?yàn)榭紤]到偏遠(yuǎn)地區(qū)沒有wifi覆蓋的情況下柜機(jī)聯(lián)網(wǎng)與云端服務(wù)器進(jìn)行通訊,所以選擇了EC204G模塊是合適的。3.3Wifi模塊RTL8192CU產(chǎn)品是一款低功耗,高線性輸出功率,符合IEEE802.11b/g/n支持IEEE802.11i安全協(xié)議,以及IEEE802.1le標(biāo)準(zhǔn)服務(wù)質(zhì)量的300MUSB無線網(wǎng)卡,可以與其它符合該標(biāo)準(zhǔn)的無線設(shè)備互相聯(lián)通,支持最新的64/128位WEP數(shù)據(jù)加密,支持WPA-PSK/WPA2-PSK,WPA/WPA2安全機(jī)制,無線傳輸速率高達(dá)300M,兩發(fā)兩收(2T2R),可適應(yīng)不同的工作環(huán)境,使臺式機(jī)或筆記本計(jì)算機(jī)用戶以及其它需要實(shí)現(xiàn)無線聯(lián)網(wǎng)的設(shè)備方便地接入無線網(wǎng)絡(luò)??紤]到在wifi覆蓋的區(qū)域使用wifi模塊和云端服務(wù)器進(jìn)行通訊有降低成本的優(yōu)點(diǎn),所以選擇了此模塊。第四章通信模塊的應(yīng)用設(shè)計(jì)本章搭建了開發(fā)環(huán)境,進(jìn)行了4G模塊EC20在Liunx下驅(qū)動移植和測試,并測試了wifi模塊的功能,證明了4G或wifi進(jìn)行聯(lián)網(wǎng)通訊的可行性。4.1搭建開發(fā)環(huán)境本系統(tǒng)針對MCU搭建了FriendlyCore的開發(fā)環(huán)境,他是屬于Linux系統(tǒng)的,并且是基于Ubuntucore所構(gòu)建的系統(tǒng),還兼容了Ubuntu的系統(tǒng)軟件[6]。具體的方法如下面所述:先事先下載好固件,將TF卡插入讀取器,用電源適配器給開發(fā)板通電連接上電腦,在Windows下可以使用燒寫工具Win32DiskImager這個(gè)軟件進(jìn)行固件的燒寫,之后在軟件上面選擇好TF卡的位置,選擇要燒寫的固件,點(diǎn)擊Write按鈕進(jìn)行燒寫,如下圖4-1:
圖4-1燒寫完成之后如圖4-2所示:
圖4-2最后,將TF卡插入板子上的SD卡接口,使用USB轉(zhuǎn)串口工具將板子的Debug串口和筆記本電腦上的的USB接口進(jìn)行連接,打開串口終端xhell軟件,將開發(fā)板通電進(jìn)入系統(tǒng)。4.24G模塊的移植應(yīng)用4.2.1添加EC20設(shè)備的PID和VID首先檢查好自己的內(nèi)核版本,并且去查找可用的內(nèi)核版本,選擇和系統(tǒng)相匹配的,之后再然后安裝[3],打開再進(jìn)行解壓,之后添加設(shè)備的PID和VID在[KERNEL]/drivers/usb/serial/option.c中,具體代碼如下:staticconststructusb_device_idoption_ids[]={{USB_DEVICE(ox05C6,ox9215)},/*QuectelEC20*/之后還需要注釋掉原來內(nèi)核文件中已經(jīng)存在EC20的USB驅(qū)動,防止有沖突。[KERNEL]/drivers/usb/serial/qcserial.c{USB_DEVICE(0xO5c6,Ox9215)},[KERNEL]/drivers/net/usb/qmi_wwan.c{ONI_GOBI_DEVICE(OxO5c6,Ox9215)},4.2.2添加零包處理因?yàn)閁SB協(xié)議的原因,還需要添加零包處理,具體的代碼如下:structusb_device_descriptor*desc=&serial->dev->descriptor;urb->transfer_flags=URB_ZERO_PACKET;if(desc->idvendor==cpu_to_le16(0x05C6)&&desc->idProduct==cpu_to_le16(?x9215))urb->transfer_flags=URB_ZERO_PACKET;if(desc->idvendor==cpu_to_le16(Ox2C7C))urb->transfer_flags=URB_ZERO_PACKET;]4.2.3阻止模塊接口被用作USB串行設(shè)備因?yàn)槲沂褂玫氖荊obiNet撥號,所以還需要防止這些模塊接口被用來作USB串行設(shè)備[9],具體代碼如下:if(serial->dev->descriptor.idVendor==cpu_to_le16(0x05C6)&&serial->dev->descriptor.idProduct==cpu_to_le16(?x9215)&&serial->interface->cur_altsetting->desc.bInterfaceNumber>=4)return-ENODEV;4.2.4睡眠重啟因?yàn)楫?dāng)MCU進(jìn)入暫?;蛘咝菝吣J降臅r(shí)侯,會有一些的USB主機(jī)控制器和USB集線器將會失去電源或者重新進(jìn)行了設(shè)置,且當(dāng)MCU退出這倆種模式之后,它們不能夠恢復(fù)USB設(shè)備,所以我要添加以下語句啟動重新設(shè)置恢復(fù)這個(gè)過程[4],具體代碼如下:staticstructusb_serial_driveroption_1port_device={#ifdefCONFIG_PM.suspend=usb_wan_Suspend,.resume=usb_wWan_resume,#if1.reset_resume=usb_bwan_resume,};4.2.5修改內(nèi)核配置Makemenuconfig,選擇并且確認(rèn)以下的幾個(gè)選項(xiàng):DeviceDrivers-〉USBSupport-〉USBSerialConvertersupport-〉USBdriverforGSMandCDMAmodems
選擇為MDeviceDrivers-〉Networkdevicesupport-〉USBNetworkAdapters-〉GobiUSBNetdriverforQuectelmodule
選擇為M編譯完成了之后,把kerne了運(yùn)行起來了之后,在設(shè)備的目錄下就能看到了ttyUSB*設(shè)備了,此時(shí)說明了USBSerial的驅(qū)動已經(jīng)完成。4.2.6添加GobiNet驅(qū)動并測試先將4G模塊的源碼放到Kernel中,GoniNet源碼中的Makefile,直接將源碼中的后綴文件.c和.h復(fù)制拷貝到上面說講的目錄中。makemenuconfig再進(jìn)行添加Makefile文件中的目標(biāo)和依賴。在【KERNEL】/drivers/net/usb/Makefile文件中添加以下幾行代碼:obj-y+=GobiNet.oGobiNet-objs:=GobiUSBNet.oQMIDevice.oQMI.o將編譯后的映像在板子上跑起來看到設(shè)備下多了一個(gè)qcqmil:說明GobiNet驅(qū)動已經(jīng)開始發(fā)生效果了。輸入命令編譯并且安裝quectel-CM到/usr/bin/目錄下面,之后創(chuàng)建udhcpcscript,輸入quectel-CM&開始進(jìn)行啟動撥號,完成了之后ping一個(gè)百度的域名試試看,發(fā)現(xiàn)已經(jīng)不斷跳出返回的延遲信息,表示已經(jīng)在工作了[8],如下圖4-2-6所示:圖4-2-64.3wifi模塊的應(yīng)用我所使用的是RTL8192CU這款的USBwifi,因?yàn)椴僮飨到y(tǒng)自帶了無限網(wǎng)卡驅(qū)動,所以使用以下幾個(gè)命令就可以連接上wifi[7]。(1)打開Wi-Fi$nmclirwifion(2)$nmclidevwifi掃描附近的Wi-Fi熱點(diǎn),如下圖4-3-1所示:圖4-3-1(3)$nmclidevwifi連接到指定的Wi-Fi,如"123"$nmclidevwificonnect"123"password"12345678",如下圖4-3-2所示:圖4-3-2第五章網(wǎng)絡(luò)通信技術(shù)的實(shí)現(xiàn)
本章介紹了http傳送協(xié)議,還引入了https保密協(xié)議保證自動收售貨柜數(shù)據(jù)傳輸?shù)陌踩院蜋C(jī)密性,以及柜機(jī)與遠(yuǎn)程服務(wù)器通信內(nèi)容,libevent的服務(wù)偵,curl的數(shù)據(jù)上發(fā)和frp技術(shù)。5.1http協(xié)議上位機(jī)與用戶服務(wù)器之前的通信協(xié)議包括了HTTP協(xié)議,上位機(jī)與用戶服務(wù)器端需要遵守HTTP協(xié)議并使用它去確保在通訊過程中完成了安全、精準(zhǔn)的通訊。它的特點(diǎn)如下所示:1、支持客戶/服務(wù)器模式。支持基本認(rèn)證和安全認(rèn)證。2、簡單快速:客戶向服務(wù)器請求服務(wù)時(shí),只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP協(xié)議簡單,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快。3、靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記。4、HTTP0.9和1.0使用非持續(xù)連接:限制每次連接只處理一個(gè)請求,服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。HTTP1.1使用持續(xù)連接:不必為每個(gè)web對象創(chuàng)建一個(gè)新的連接,一個(gè)連接可以傳送多個(gè)對象,采用這種方式可以節(jié)省傳輸時(shí)間。5、無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大。5.2https保密協(xié)議HTTPS協(xié)議是由HTTP加上
TLS/SSL
協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,主要通過數(shù)字證書、加密算法、非對稱密鑰等技術(shù)完成互聯(lián)網(wǎng)數(shù)據(jù)傳輸加密,實(shí)現(xiàn)互聯(lián)網(wǎng)傳輸安全保護(hù)。5.3柜機(jī)與遠(yuǎn)程服務(wù)器的通信內(nèi)容目前,網(wǎng)絡(luò)連接模式主要有兩種模式,分別是B/S模式(瀏覽器/服務(wù)器模式)和C/S模式(客戶端/服務(wù)器模式)。我使用的是C/S模式,C/S結(jié)構(gòu)的優(yōu)點(diǎn)是很多工作可以在客戶端處理后再提交給服務(wù)器,能充分發(fā)揮客戶端的處理能力。其中數(shù)據(jù)的處理運(yùn)行在服務(wù)器端。在C/S體系結(jié)構(gòu)中,數(shù)據(jù)應(yīng)用包括客戶端應(yīng)用程序(前臺程序)和數(shù)據(jù)庫服務(wù)器程序(后臺程序)這兩個(gè)部分。其中,數(shù)據(jù)庫服務(wù)器端程序也叫做應(yīng)用服務(wù)器[10]。假如服務(wù)器程序被開啟,那么服務(wù)器端就處于等待客戶端程序發(fā)送請求的狀態(tài)。當(dāng)有客戶在柜機(jī)進(jìn)行掃碼時(shí),客戶端通過wifi或者4G網(wǎng)絡(luò)并向服務(wù)器端發(fā)送數(shù)據(jù)的請求。當(dāng)服務(wù)器端收到此請求時(shí),就會操作相關(guān)程序,并返回相關(guān)的結(jié)果,主要有以下五種情況:服務(wù)器發(fā)送接口給無人貨架指令,打開柜門。服務(wù)器發(fā)送接口給無人貨架指令,關(guān)閉柜門。貨架發(fā)送給服務(wù)器指令,拿回/放回貨物。貨架發(fā)送給服務(wù)器指令,遇到故障報(bào)警。貨架發(fā)送給服務(wù)器指令,關(guān)閉柜門。服務(wù)器發(fā)送接口給無人貨架:參數(shù)名柜機(jī)狀態(tài)類型說明openid打開柜門string微信或支付寶自動生成的openidopenid關(guān)閉柜門string開門時(shí),傳入的openid貨架發(fā)送給服務(wù)器:參數(shù)名柜機(jī)狀態(tài)類型說明openid關(guān)閉柜門string開門時(shí),傳入的openidlevel拿回/放回貨物int哪一層重量發(fā)生變化weightint變化的重量typestring放回商品/取走商品alarm報(bào)警string報(bào)警上發(fā)返回參數(shù):返回參數(shù)名類型說明codeint執(zhí)行狀態(tài)(0表示獲取失敗,1表示獲取成功5.4柜機(jī)與遠(yuǎn)程服務(wù)器數(shù)據(jù)收發(fā)的設(shè)計(jì)5.4.1libevent和curl的移植(1)libevent的移植從官網(wǎng)上下載合適的版本,用tar命令解壓,之后使用./configure進(jìn)行配置,之后在用make命令編譯,makeinstall進(jìn)行安裝。curl移植從官網(wǎng)上http://curl.se/dowmload/中下載合適的版本,用tar命令解壓,之后使用./configure進(jìn)行配置,之后在用make命令編譯,makeinstall進(jìn)行安裝。5.4.2libevent柜機(jī)的服務(wù)偵聽、Libevent網(wǎng)絡(luò)庫的特點(diǎn)是量級輕、性能高,它的優(yōu)點(diǎn)是響應(yīng)能力迅速、編程接口簡單、效率高,可以擴(kuò)展的方式高,可以反復(fù)使用的性能高。它是在編寫優(yōu)秀網(wǎng)絡(luò)服務(wù)器的時(shí)候必須預(yù)備的模式[13]。利用libevent構(gòu)建Web服務(wù)對客戶端的數(shù)據(jù)請求進(jìn)行響應(yīng)的整個(gè)過程主要包括如下幾個(gè)步驟:(1)初始化:初始化API以及相關(guān)的環(huán)境。之后再設(shè)置好服務(wù)器的ip地址和監(jiān)聽端口。創(chuàng)建http服務(wù):在event_base上新建一個(gè)evhttp,將這個(gè)evhttp綁定到監(jiān)聽的ip和端口號。(3)設(shè)置http回調(diào)函數(shù):使用evhttp_set_gencb設(shè)置httpsever的處理請求的回調(diào)函數(shù)。(4)啟動httpsever:等待請求進(jìn)入事件循環(huán)。具體代碼如下:event_init();//創(chuàng)建一個(gè)http服務(wù)器結(jié)構(gòu):httpd=evhttp_start(httpd_option_listen,httpd_option_port);evhttp_set_timeout(httpd,httpd_option_timeout);//指定generic回調(diào)evhttp_set_gencb(httpd,httpd_handler,空);//循環(huán)處理eventsevent_dispatch();evhttp_free(httpd);}5.4.3curl柜機(jī)數(shù)據(jù)上發(fā)客戶端采用curl語言來進(jìn)行實(shí)現(xiàn),做一些邏輯判斷,檢查輸入信息是否合法,如果合法,將合法的信息通過HTTP協(xié)議,以字符串的形式傳送到服務(wù)器端來做進(jìn)一步處理[15]。通信步驟如下面所示:(1)curl通過網(wǎng)絡(luò)連接向服務(wù)器端發(fā)出來自客戶端的http請求;(2)依照相應(yīng)的請求類型,服務(wù)器端會從數(shù)據(jù)中抽取所需要的數(shù)據(jù),然后將其封裝成SQL語句,最后,向數(shù)據(jù)庫發(fā)出SQL語句的查詢命令。(3)在服務(wù)器端程序從請求的數(shù)據(jù)中抽象數(shù)據(jù)并進(jìn)行封裝的過程中,有一部分的數(shù)據(jù)是以json的形式返回給客戶端。(4)客戶端程序獲取來自服務(wù)器端的返回?cái)?shù)據(jù)之后,將對其進(jìn)行一系列的數(shù)據(jù)處理。其中實(shí)現(xiàn)代碼為:向服務(wù)器發(fā)送http請求向服務(wù)器發(fā)送請求,等待服務(wù)器的響應(yīng)res=curl_easy_perform(curl);if(res!=CURLE_OK){return1;}curl_easy_cleanup(curl);解析服務(wù)器返回的json字符串cJSON*root;root=cJSON_Parse(responseData.data);cJSON*result=cJSON_GetObjectItem(root,"result");if(result&&strcmp(result->valuestring,"ok")==0){printf("data:%s\n",responseData.data);return0;5.4.4json數(shù)據(jù)格式的解包打包我這里所使用的json數(shù)據(jù)處理工具是NSJSONSerialization[12],這是一款非常好用簡單的的json解析與生成的工具,它不僅僅只是提供了json數(shù)據(jù)封包、還有提供了Json數(shù)據(jù)解包[11]。具體流程如下圖5-4-4所示:圖5-4-45.5frp技術(shù)frp是一個(gè)高性能的反向代理應(yīng)用,它可以簡單輕松的進(jìn)行內(nèi)網(wǎng)穿透,對外網(wǎng)提供各式各樣服務(wù),支持多種協(xié)議類型,因?yàn)樵贫朔?wù)器和自動售貨柜處在兩個(gè)不同網(wǎng)絡(luò)環(huán)境,所以當(dāng)他們想要互相訪問的時(shí)候,這個(gè)時(shí)候外網(wǎng)的云端服務(wù)器無法單方面的訪問內(nèi)網(wǎng)的自動售貨柜,所以這時(shí)候要用到內(nèi)網(wǎng)穿透技術(shù)。5.5.1服務(wù)端(1)用tar命令解壓好壓縮包tar-zxvffrp_0.22.0_linux_arm.tar.gz(2)cd命令進(jìn)入解壓之后的文件夾cdfrp_0.22.0_linux_arm.tar.gz(3)因?yàn)槭褂猛饩W(wǎng)的云端服務(wù)器作為服務(wù)端,可以刪掉不用的客戶端文件,使用rm指令刪除。rm-ffrpcrm-ffrpc.ini(4)接下來用vi修改服務(wù)器的配置文件。vifrps.ini(5)[common]部分是必須要有的配置,其中bind_port可以自行進(jìn)行設(shè)定的frp服務(wù)端端口,vhost_http_port也是可以自行設(shè)定的http訪問端口。[common]bind_port=7000vhost_http_port=8080(6)保存好上面的幾個(gè)配置之后,啟動frp服務(wù)端./frps-c./frps.ini5.5.2客戶端(1)客戶端和服務(wù)端得到操作方法和過程是一樣的tar-zxvffrp_0.22.0_linux_arm.tar.gzcdfrp_0.24.1_linux_amd64rm-ffrpsrm-ffrps.inivifrpc.ini(2)客戶端的配置[common]server_addr=server_port=7000[ssh]type=tcplocal_ip=local_port=22remote_port=6000[nas]type=httplocal_port=5000custom_domains=[web]type=httplocal_port=80custom_domains=上面客戶端配置和服務(wù)端是相互對應(yīng)的。保存配置,運(yùn)行frp客戶端。./frpc-c./frpc.ini第六章測試與結(jié)果6.1啟動服務(wù)端進(jìn)入已經(jīng)編寫好的http_server目錄,寫Makefile,然后make,make之后生成了server文件,執(zhí)行文件:./server,啟動了服務(wù)之后,就如下圖6-1所示:圖6-16.2啟動客戶端進(jìn)入已經(jīng)編寫好的libcurl/login/這個(gè)目錄,執(zhí)行:g++login.cppcJSON.cpp-ologin-lcurl,進(jìn)行了編譯,生成login文件之后,使用啟動客戶端的命令./login,客戶端運(yùn)行結(jié)果如下圖6-2所示:圖6-2而服務(wù)端響應(yīng)結(jié)果,如下圖6-3所示:圖6-3第七章總結(jié)與展望7.1總結(jié)本課題對自動售貨柜的研究的現(xiàn)狀,對售貨柜的開關(guān)門、報(bào)警和售貨柜的遠(yuǎn)程通訊進(jìn)行了研究,設(shè)計(jì)了一種通過無線WiFi信號和4G運(yùn)營商通信的基于ARM和嵌入式http服務(wù)器的新型自動售貨柜,經(jīng)過不斷的測試達(dá)到了我的初步預(yù)期。本文我的主要工作有以下幾個(gè)方面:(1)分析了本課題的研究背景和意義,對售貨柜的通信、嵌入式http服務(wù)器進(jìn)行了充分的了解。(2)根據(jù)本課題研發(fā)的售貨柜的幾種特點(diǎn),完成了各個(gè)模塊以及其相關(guān)功能的了解,明白了自動售貨柜的運(yùn)行原理是什么樣子的。(3)規(guī)定的自動售貨柜進(jìn)行通信的通信方法和通信協(xié)議,對自動售貨柜進(jìn)行了通信軟件設(shè)計(jì)。(4)對ARM板子的熟悉和4G模塊相
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 蔬菜五化降本增效健康栽培技術(shù)
- CPMM考試準(zhǔn)備必讀試題及答案
- 遺傳規(guī)律的應(yīng)用與影響試題及答案
- CPSM考試變化與試題答案更新
- 餐飲美學(xué)基礎(chǔ) 課件 4.3休閑餐飲自然美學(xué)
- 生態(tài)系統(tǒng)中的物質(zhì)循環(huán)試題及答案
- 遺傳和環(huán)境對性狀表現(xiàn)的影響試題及答案
- 2024年CPSM考試核心復(fù)習(xí)試題及答案
- CPSM考試復(fù)習(xí)中的情緒管理及試題及答案
- SCMP考試2024年財(cái)務(wù)合理規(guī)劃的知識與試題及答案
- 2025年全國國家版圖知識競賽(中小學(xué)組)題庫及答案
- 課件-DeepSeek從入門到精通
- 2025年度國家鐵路局安全技術(shù)中心面向社會公開招聘工作人員5人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 律師事務(wù)所保密制度
- DL-T5394-2021電力工程地下金屬構(gòu)筑物防腐技術(shù)導(dǎo)則
- 小學(xué)生手抄報(bào)模板數(shù)學(xué)小報(bào)
- JJF 1211-2008 激光粒度分析儀校準(zhǔn)規(guī)范-(高清現(xiàn)行)
- 獨(dú)居老人計(jì)劃書
- 農(nóng)業(yè)信息技術(shù)與信息管理系統(tǒng)第六章地理信息系統(tǒng)課件1
- 靜物產(chǎn)品攝影PPT課件(PPT 50頁)
- 麗聲北極星分級繪本第一級下The King's Yu Player教學(xué)設(shè)計(jì)
評論
0/150
提交評論