王永濤,王飛飛,郭 群
(平頂山學(xué)院 信息工程學(xué)院,河南 平頂山 467000)
隨著互聯(lián)網(wǎng)的快速發(fā)展,電商產(chǎn)業(yè)鏈快速興起,以至于物流行業(yè)的時(shí)效要求越來越高。物流與倉(cāng)儲(chǔ)是社會(huì)經(jīng)濟(jì)生活必不可少的行業(yè)[1],日常生活和社會(huì)發(fā)展都需要用物流來運(yùn)送物資,包括電商和實(shí)體經(jīng)濟(jì)都離不開物流來維持運(yùn)轉(zhuǎn)。這就對(duì)物流行業(yè)提出了更大的需求。結(jié)合現(xiàn)有的傳感器和圖像識(shí)別等技術(shù),采用貼近生活化的設(shè)計(jì)理念,本文設(shè)計(jì)了物流車輛進(jìn)出庫(kù)管理系統(tǒng),能夠?qū)崿F(xiàn)對(duì)門前的車輛進(jìn)行攔截;利用圖像識(shí)別技術(shù)對(duì)門前車輛的車牌號(hào)進(jìn)行識(shí)別[2],識(shí)別時(shí)通過門前地下的傳感器測(cè)量車輛的重量;然后將測(cè)得重量和車牌號(hào)上傳到后端服務(wù),后端服務(wù)查詢對(duì)比通行證正確且有效后,存儲(chǔ)相關(guān)數(shù)據(jù)記錄;最后返回允許放行的響應(yīng),樹莓派接到響應(yīng)后控制欄桿打開門禁,使車輛可以進(jìn)出。司機(jī)可以通過小程序登記信息申領(lǐng)通行證,管理員可以在管理端進(jìn)行數(shù)據(jù)管理。該系統(tǒng)的實(shí)現(xiàn)不僅提高了物流倉(cāng)儲(chǔ)處理效率,同時(shí)也降低了管理成本,提高了管理的精準(zhǔn)性。
本系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)司機(jī)用戶先通過小程序登記申領(lǐng)通行證,利用圖像識(shí)別技術(shù)對(duì)門前車輛的車牌號(hào)進(jìn)行識(shí)別;然后與數(shù)據(jù)庫(kù)信息進(jìn)行比對(duì)進(jìn)而自動(dòng)控制升降桿,同時(shí)門前的重力傳感器會(huì)采集車輛重量數(shù)據(jù)信息,將數(shù)據(jù)傳到后端服務(wù),存儲(chǔ)相關(guān)數(shù)據(jù)記錄[3],后臺(tái)服務(wù)管理可以對(duì)車輛信息進(jìn)行查詢的操作。系統(tǒng)的總體架構(gòu)如圖1所示。
圖1 系統(tǒng)總體架構(gòu)
系統(tǒng)總體可以分為用戶服務(wù)模塊、自動(dòng)識(shí)別控制模塊、數(shù)據(jù)存儲(chǔ)模塊、后臺(tái)服務(wù)管理模塊四個(gè)部分,司機(jī)通過用戶服務(wù)端登記信息申領(lǐng)通行證,自動(dòng)識(shí)別控制模塊通過攝像頭識(shí)別車牌號(hào)后自動(dòng)控制欄桿升降。數(shù)據(jù)存儲(chǔ)模塊存儲(chǔ)用戶登記的信息以及車輛信息,后臺(tái)管理系統(tǒng)實(shí)現(xiàn)對(duì)用戶和車輛信息的管理。具體功能設(shè)計(jì)如圖2所示。
圖2 系統(tǒng)功能設(shè)計(jì)
本設(shè)計(jì)用戶服務(wù)端通過微信小程序?qū)崿F(xiàn),采用React+Taro的技術(shù)框架[4]開發(fā),不同于原生小程序開發(fā)的是它可以借助React強(qiáng)大的功能和生態(tài)實(shí)現(xiàn)更便捷的開發(fā),多端部署減少了開發(fā)成本。使用Taro框架創(chuàng)建的小程序項(xiàng)目采用了工程化、模塊化的編程思想。該小程序主要實(shí)現(xiàn)了通行證的申請(qǐng)功能,申請(qǐng)證所需的信息有司機(jī)姓名、車牌號(hào)、手機(jī)號(hào)、性別、公司名、車輛標(biāo)準(zhǔn)載重、貨物名稱、生效起始時(shí)間、失效時(shí)間。用戶服務(wù)頁(yè)面如圖3所示。
圖3 用戶服務(wù)頁(yè)面
項(xiàng)目的構(gòu)建依賴于Nodejs環(huán)境,使用package.json文件管理項(xiàng)目來自npm的依賴程序,依賴程序分為開發(fā)環(huán)境和生產(chǎn)環(huán)境;還包括關(guān)于項(xiàng)目調(diào)試命令的配置、對(duì)瀏覽器版本兼容情況的配置。針對(duì)微信小程序的項(xiàng)目配置在project.config.json文件,同樣地針對(duì)其他小程序的配置也類似。在輸入完成信息后,點(diǎn)擊提交按鈕,先檢查登錄狀態(tài)是否有效,然后執(zhí)行表單參數(shù)檢驗(yàn)checkParams,通過參數(shù)檢驗(yàn)后調(diào)用申請(qǐng)通行證的接口addPermit,申請(qǐng)的結(jié)果會(huì)通過Toast組件進(jìn)行提示。在“我的”頁(yè)面中,可以看到登錄者名下的所有通行證,將通行證分為生效中、未生效、已過期三種狀態(tài)進(jìn)行展示,在頁(yè)面頂部可以看到各個(gè)車牌號(hào)的所有通行證。
自動(dòng)識(shí)別控制部分主要包括重量傳感器、抬桿、攝像頭三個(gè)設(shè)備。重量傳感器一秒采集一次數(shù)據(jù),然后與設(shè)定值對(duì)比。如果小于設(shè)定值認(rèn)為無(wú)車輛通過,本次檢查就會(huì)終止;當(dāng)大于設(shè)定值時(shí),認(rèn)為此時(shí)有車輛經(jīng)過,控制攝像頭模塊利用see函數(shù)[5]捕捉圖像數(shù)據(jù)并進(jìn)行圖像識(shí)別,判斷返回車牌數(shù)據(jù),進(jìn)而與數(shù)據(jù)庫(kù)比對(duì),如果是登記申領(lǐng)過的車牌號(hào),道閘打開,打開時(shí)間為10 s,之后則關(guān)閉道閘;并向后端服務(wù)發(fā)送車牌信息和重量信息存儲(chǔ)在數(shù)據(jù)庫(kù)中。自動(dòng)識(shí)別控制模塊工作流程如圖4所示。
圖4 自動(dòng)識(shí)別控制模塊工作流程
本系統(tǒng)的所有數(shù)據(jù)都存儲(chǔ)于MySQL數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)名稱為maizi。MySQL是開源的[6],該系統(tǒng)數(shù)據(jù)量較小,足夠支撐該系統(tǒng)的數(shù)據(jù)管理。重量傳感器采集的數(shù)據(jù)、用戶車輛信息數(shù)據(jù)和車輛同行記錄數(shù)據(jù)存放在不同的數(shù)據(jù)表中,方便對(duì)數(shù)據(jù)進(jìn)行更好的管理。全局ER圖如圖5所示。
圖5 物流車輛進(jìn)出庫(kù)管理系統(tǒng)全局ER圖
后臺(tái)管理系統(tǒng)主要實(shí)現(xiàn)對(duì)車輛信息的管理。使用Vue框架[7]實(shí)現(xiàn),UI部分采用了ant-design-vue,請(qǐng)求模塊使用Axios庫(kù),首頁(yè)的矩形樹圖使用Echarts,滾動(dòng)表格使用了data-view。后臺(tái)管理系統(tǒng)的開發(fā)使用了工程化的編程思想,有利于開發(fā)管理和后期維護(hù)。在構(gòu)建項(xiàng)目的過程中,在package.json文件中管理項(xiàng)目來自npm的依賴程序,依賴程序分為開發(fā)環(huán)境和生產(chǎn)環(huán)境;還包括關(guān)于項(xiàng)目調(diào)試命令的配置、對(duì)瀏覽器版本兼容情況的配置。管理系統(tǒng)的菜單欄包括首頁(yè)、通行證管理、進(jìn)出入信息管理三個(gè)頁(yè)面。后臺(tái)管理系統(tǒng)首頁(yè)如圖6所示。
圖6 后臺(tái)管理系統(tǒng)首頁(yè)
在首頁(yè)的 created生命周期中請(qǐng)求數(shù)據(jù),將數(shù)據(jù)整理成入庫(kù)記錄信息、出庫(kù)記錄信息、貨物增減情況信息,并將相關(guān)數(shù)據(jù)轉(zhuǎn)換成易讀的格式,有利于用戶體驗(yàn),這三部分?jǐn)?shù)據(jù)會(huì)渲染成三個(gè)輪播表,輪播表的配置為computed中的config、config2、config3,computed會(huì)自動(dòng)收集依賴并在更新時(shí)重新計(jì)算,將獲取的倉(cāng)庫(kù)儲(chǔ)量信息在initChart函數(shù)中運(yùn)用倉(cāng)庫(kù)信息初始化為矩形樹圖[8]。在通行證管理頁(yè)面,使用antd的table組件渲染表格,通過columns屬性對(duì)表格進(jìn)行配置,表格背的特殊樣式和元素通過scopedSlots屬性和插槽進(jìn)行定制。在mounted周期函數(shù)中加載數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行整理,在表格中可以通過handleSearch方法對(duì)通行證的車牌號(hào)進(jìn)行篩選。在進(jìn)出入記錄頁(yè)面,同樣使用antd的table組件渲染表格,在mounted周期中請(qǐng)求數(shù)據(jù),也可以通過車牌號(hào)篩選數(shù)據(jù)。頁(yè)面的渲染流程如圖7所示。
圖7 頁(yè)面的渲染流程
至此,物流車輛進(jìn)出庫(kù)管理系統(tǒng)的開發(fā)工作已經(jīng)基本完成,最后要對(duì)本平臺(tái)中的功能模塊進(jìn)行一系列測(cè)試,以保證功能的完整性和執(zhí)行的可靠性。功能測(cè)試[9-10]主要是測(cè)試本系統(tǒng)功能方面的完整性,根據(jù)測(cè)試后的結(jié)果,開發(fā)人員能判斷現(xiàn)有功能是否符合系統(tǒng)設(shè)計(jì)之初設(shè)定的功能,有沒有出現(xiàn)未預(yù)料到的結(jié)果。本章節(jié)中的測(cè)試,只測(cè)試系統(tǒng)中的部分重要功能,并且給出測(cè)試結(jié)果,其余的功能不再進(jìn)行測(cè)試。
申請(qǐng)通行證測(cè)試共5個(gè)用例,涵蓋了不同的時(shí)間段、不同的車輛信息。測(cè)試填寫的字段都為必填字段,申請(qǐng)日期選擇必須為當(dāng)天或未來日期,每個(gè)車牌號(hào)的申請(qǐng)區(qū)間不得重疊。申請(qǐng)都取得了預(yù)期目標(biāo)并正確地在“我的”頁(yè)面顯示出來。通行證申請(qǐng)測(cè)試用例見表1所列。
表1 通行證申請(qǐng)測(cè)試結(jié)果(2022-03-10)
重量傳感器的測(cè)試擁有5個(gè)用例,這5個(gè)用例包含了不同的重量。測(cè)試要求當(dāng)數(shù)值大于20時(shí)認(rèn)為有車輛,測(cè)量誤差不大于5%,測(cè)試結(jié)果都達(dá)到了預(yù)期目標(biāo)。具體測(cè)試結(jié)果見表2所列。
表2 重量傳感器測(cè)試結(jié)果(2022-03-10)
測(cè)試系統(tǒng)流程中的車牌識(shí)別和通行證檢查,依賴于申請(qǐng)通行證的測(cè)試用例,測(cè)試中所有的車輛均滿足重量傳感器數(shù)值大于20的條件,也就是所有測(cè)試用例都會(huì)至少進(jìn)入到車牌識(shí)別環(huán)節(jié),測(cè)試中受拍攝角度問題部分車牌未識(shí)別。本次測(cè)試結(jié)果見表3所列。
表3 車牌識(shí)別與通行證檢查測(cè)試結(jié)果(2022-03-10)
基于樹莓派的物流車輛進(jìn)出庫(kù)管理系統(tǒng)助力物流倉(cāng)儲(chǔ)實(shí)現(xiàn)更快的效率,能夠高效地管理車輛進(jìn)出庫(kù)秩序,降低倉(cāng)儲(chǔ)物流的運(yùn)營(yíng)成本。該系統(tǒng)不僅可以用在物流倉(cāng)儲(chǔ)中,還可以用在航空、火車、水運(yùn)等運(yùn)輸方式的轉(zhuǎn)場(chǎng)運(yùn)輸上,比如機(jī)場(chǎng)、港口等實(shí)際應(yīng)用中。同時(shí),在安全和功能方面還有需要增強(qiáng)的地方,在后臺(tái)管理系統(tǒng)中應(yīng)展示更詳細(xì)的數(shù)據(jù)以及美化樣式,從而提升用戶體驗(yàn)度。