陳銳
前言
物聯網概念如火如荼,前景廣闊,產業鏈龐大,加之在人工智能的助推下,融合應用于各行各業:智能車聯、智慧物流、智能交通、智能家居等,各種科幻超前的虛擬仿真和虛擬現實場景,讓人嘆為觀止。在中職物聯網專業課程建設中,也要充分發揮虛擬仿真實驗平臺軟件的優勢,創新人才培養模式,提升人才培養的質量和成效。
現代化商業,樓宇經濟作為集聚現代服務業與制造業企業總部的高級經濟形態,吸引了不少大都市的“目光”,這也是北上廣深等大城市越來越重視樓宇經濟發展情況的重要原因之一。隨著物聯網應用的普及,智慧樓宇概念孕育而生。所謂智慧樓宇是將建筑、通信、計算機和控制等各方面的先進科技相互融合,合理集成為最優化的整體,是大型現代化的物聯網綜合體。
在物聯網程序設計課程建設中,如果要設計一款智慧樓宇實體硬件實訓平臺,一定是體積龐大,造價不菲,同時后期使用和維護的成本之大也是可想而知。這樣的課程建設,很難讓課程真正得到推廣和實施,使得課程的可持續性和可用性大打折扣,特別是對一些相對貧窮落后、師資力量相對薄弱的地方更是不可行,哪怕是多個學生共同使用一套設備,也會給課程的開展和實施帶來諸多麻煩。
設計一款可編程控制的虛擬仿真智慧樓宇實驗平臺軟件,可以讓每一臺運行了該軟件的學生電腦都成為一套完整的實訓設備,讓每一位學生都能擁有完全屬于自己的設備來完成學習任務。而且軟件的故障率相比于硬件,幾乎可以忽略不計,就算出問題,最多也是關閉軟件,重新運行即可,使用和維護的成本幾乎為零,可以完全實現學生與設備1∶1的比例,這是實體硬件設備無法比擬的優勢。電腦之間是聯網的,那么虛擬仿真軟件之間也是聯網的,電腦互聯支撐軟件互聯,實現多個仿真智慧樓宇之間的互聯互通,形成龐大的慧樓宇群,為學生提供了彼此之間可以相互合作編程的實驗平臺,能完成更多更復雜的編程控制實驗。虛擬仿真軟件主要具有以下特點:
趣味性:界面友好、操作簡單、變枯燥為神奇、迅速提高學生的學習興趣。
互動性:完全模擬實際實驗環境,互動性強。
實用性:緊貼教學大綱、完全服務于實驗課的學習。
探究性:實現讓學生積極參與、樂于探究、勇于實驗、勤于思考。
可靠性:軟件的穩定性只取決于電腦,而硬件設備的穩定性還會受到信號干擾、電壓不穩定、溫濕度等諸多外部環境因素的影響,更容易損耗和損壞。
科學性:實現科學合理的真實模擬,實現虛擬實驗“零誤差”。
安全性:軟件相比硬件,不存在誤操作導致的燒傷、電傷、火災、實體設備損壞等安全性問題。
虛擬仿真軟件是現代科技的一大創新,它能夠幫助人們在虛擬環境中模擬真實的場景,以達到學習、測試和研究的目的。隨著信息化時代的到來,虛擬仿真軟件已經成為教育領域中的一種新型教學手段,虛擬仿真軟件的應用已經成為教學模式的一種創新,能為教育質量的提升做出重要貢獻。
一、為何要基于http協議
網絡通信最常用的就是利用Socket接口實現在不同計算機之間傳輸數據,另一種就是利用http協議。Socket是一種標準的API(應用程序接口),可用在不同的計算機之間傳輸數據,它支持TCP/UDP等多種網絡協議。專業級的網絡通信程序開發都會用到Socket。隨著人工智能和物聯網通識課的普及,計算機軟件編程課越來越受到學生和家長的青睞,市面上相繼推出了很多針對初學者和中小學生的圖形化編程、積木式編程軟件,Google的AppInventor就是最典型的代表,這些圖形化編程工具大部分都不直接提供Socket模塊,而是提供使用更為簡單的基于http協議的post或者get方法實現與服務器之間的數據通信。http協議是超文本傳輸協議,是互聯網上應用最為廣泛的一種網絡協議。智慧樓虛擬仿真軟件主要是面向學生,面向初學者,面向教學的,所以必須要能支持適應面更廣,使用更為簡單的http協議。
二、為何要可編程控制
實體智慧樓宇是由多套物聯網終端硬件模塊和軟件共同組成的物聯網系統。這些終端硬件模塊一定是有編程接口的,這樣軟件才能監控和控制設備,智慧樓宇虛擬仿真軟件仿真的是實體智慧樓宇的功能,通過電腦圖形圖像和動畫進行綜合數字多媒體展示,所以這些展示也必須是編程可控的,因此,也要為仿真軟件設置編程接口。從軟件開發的角度講,就是將智慧樓宇虛擬仿真軟件設計為一個信息服務器端,當服務器端接收到不同http信息的時候,能夠做出不同的響應,展示不同的圖像或動畫,模擬設備的運轉。學生編程控制虛擬仿真軟件就像控制真實硬件設備一樣,真正起到訓練學生編程技能的作用。
三、信息服務端的設計思路
1.信息服務器端的開發實際就是Socket服務器端的開發,在智慧樓宇虛擬仿真軟件中啟動Socket服務器端的偵聽,監聽客戶端發送過來的信息,根據不同的信息做出不同的響應,這些信息其實就是在仿真軟件上定義的編程接口。例如:在仿真軟件上定義編程接口“0301SD”,其中0301是房間號,表示3層的01號房間,S為打開動作,D為燈設備標記。當仿真軟件收到“0301SD”的信息時,就會將0301房間變成亮燈圖片。
啟動Socket服務器端偵聽,需要指定ip地址+端口,這個地址一般是ip4地址,如:192.168.100.1。需要特備注意的是服務器的ip地址是有多個的,而不僅僅只有一個,有ip4的也有ip6的,如果偵聽直接就指定默認的ip地址,則有可能會是ip6地址,這樣就會造成客戶端連接不上服務器,也就無法給服務器發送信息。所以服務器端在指定偵聽的ip地址之前,需要先將所有的ip地址全部掃描一遍,找出ip4地址,然后再進行指定。根據ip4地址的特點“點分4個十進制數”,編程思路是,使用循環語句將服務器的每一個ip地址先轉換成字符串,然后用“.”字符分割字符串,如果分割后得到的數組長度為4,說明是ip4地址,即可退出循環。在實際編程中,可以編寫一個自定義函數,專門用于獲取服務器的第一個可用ip4地址。當有了ip4地址,便可在程序啟動事件中啟動Socket服務器偵聽。
2.當客戶端向服務器發起連接請求時,Socket服務器偵聽將會通過accept方法接受連接,并生成一個新的對應于此次連接的套接字,該套接字負責與某個客戶端進行通信,即接收客戶端發送過來的信息,以及向客戶端發送信息。不同的客戶端連接到服務器,服務器都會生成專門的套接字與之進行通訊,是一一對應的關系。在實際編程中,可新添加一個全局列表,專業用于保存新生成的連接套接字,當某個客戶端斷開與服務器的連接時,與之對應的連接套接字也將從列表中刪除,列中將一直保存與所有的在線客戶端連接的套接字。理論上Socket服務器端偵聽可以接受和響應無限個客戶端的連接,但在實際使用中,虛擬仿真軟件往往是運行在一臺普通的pc電腦上(例如:學生電腦機房的電腦),它并不具備像真正的服務器一樣擁有海量信息數據的處理能力,因此,為了保證虛擬仿真軟件能穩定可靠地運行在普通常用的pc電腦上,不會因為大量的客戶端鏈接請求而造成軟件的崩潰,需要設置連接上限。假設連接上限為20,那么,當Socket服務器偵聽到有新的客戶端連接請求時,在使用accept方法接受連接之前,首先要判斷用于保存連接套接字的全局列表的長度是否小于20,如果是,說明當前已經連接到服務器的客戶端不足20個,可以接受該連接請求,否則,就放棄該連接請求。
3.由于客戶端發送給服務器的是http信息,而http信息是有固定格式的,當服務器接收到客戶端發送過來的信息時,需要對信息進行處理,才能獲得具體的命令字符。例如:客戶端向服務器發出請求“http://192.168.100.1:10000/0301SD”,其中0301SD是命令字符,那么服務器接收到的信息如下:
其中很大部分都是http協議的格式字符,里面只有第一行的“GET/0301SD HTTP/1.1”是有用的信息,表示客戶端通過GET方法向服務器發送信息。http協議有兩種方法向服務器發送信息,一種是GET方法,一種是POST方法,如果第一行的信息是“POST/0301SD HTTP/1.1”,則說明客戶端是通過POST方法向服務器發送信息。無論服務器接收到客戶端發送過來的http信息中的第一行是“GET/0301SD HTTP/1.1”還是“POST/0301SD HTTP/1.1”,都有一個共同的特點,就是GET或者POST、/0301SD、HTTP/1.1這三段字符串之間是用空格字符隔開的,其中0301SD是客戶端發送來的命令字符,要將其準確地取出,可以把空格作為分割字符,使用字符串分割函數split對服務器接收到的http信息進行分割,從而得到一個字符串列表,列表的第二個元素就是“/0301SD”。然后再用字符串截取函數對“/0301SD”進行處理,將“/”字符去掉,得到準確地命令字符“0301SD”。根據獲取的命令字符,虛擬仿真軟件將會啟動或停止模擬設備運作的動畫,實現編程可控,同時根據客戶端的需求,向客戶端發送虛擬仿真軟件上模擬設備的狀態信息。
以上是基于http協議的可編程控制智慧樓宇虛擬仿真實驗平臺軟件的設計思路,也適用于其他可編程控制的虛擬仿真軟件的設計,例如:智慧物流、智能家居、智慧農業、智能停車場等,只要改變虛擬仿真軟件中設備運作的模擬動畫即可。
智慧樓宇虛擬仿真平臺軟件最好是設計成可以選擇性組裝的。假如有20個基礎模塊,可以根據學習任務的不同,選擇需要的模塊,組裝成不同的系統。例如:設計簡單的智能安防系統,可以在房屋中選裝煙霧傳感器、火傳感器、水傳感器。煙和火傳感器可以控制警報,水傳感器可以控制窗戶的開關等,這樣可以讓軟件更具靈活性和可擴展性。
[本文是2023年廣東省中小學教育科學規劃重點課題“融合網聯化虛擬仿真技術的物聯網程序設計項目課程開發的實踐性研究”(編號:2023ZQJK018)的階段性研究成果。]
責任編輯 魏家堅