?

基于Android系統的數字電路實驗設計

2019-07-16 11:55婁津銘楊華睿王洵清林兆陽
電子技術與軟件工程 2019年8期
關鍵詞:數字電路數組后臺

婁津銘 楊華?!⊥蹁濉×终钻?/p>

摘要:本文以Android系統為基礎,介紹了線上實現數字電路實驗功能的系統整體設計,以APP的形式在移動端為用戶提供數字電路實驗服務。系統主要提供面包板,邏輯原件,電阻,處理器等電子原件供用戶進行自由操作,通過與服務器交互查看實驗輸出,為國內高校數字電路實驗室資源問題提供在線解決方案。

[關鍵詞]數字電路在線實驗Android系統

1引言

在數字電路實驗領域,國內已有部分高校推出在線實驗解決方案或產品,但大部分都是基于特定軟件開發并在特定系統上運行的,并在實驗室內部局域網才能啟動,不能大量發行并推廣?,F有在線實驗產品的服務器端主要為教師設計,用于上傳實驗要求,批閱學生報告以及提供實驗時的監控和指導??蛻舳酥饕獮閷W生設計,用于實驗知識學習,實驗模擬操作,并配備了模擬實驗面板、示波器以及完備的實驗報告編輯器,讓學生在實驗時采集圖像數據并和實驗報告一起提交服務器端。這類產品虛擬實驗系統結構更加完整,但其搭建條件基于實驗室內部的設置,所以產品的獨立性不高,可推廣性不強。

本項目研究之初,項目組討論了關于實際試驗的局限條件分析,基于國內各高校實際實驗時間的限制,實驗器材的損壞、器材的準備時間、外部條件對于器材的影響等一系列要素的考慮,計劃設計以移動端手機APP為載體的在線數字電路實驗系統,創建虛擬實驗面板,通過移動端和服務器端的交互來完成在線數字電路搭建、查看輸出等一系列功能。在這過程中,完全平臺化的虛擬實驗教學一方面了滿足虛擬實驗教學的便利性,另一方面滿足虛擬實驗的可操作性。

2系統設計

2.1服務器端

2.1.1數字電路實現原理

虛擬實驗后臺設計主要是使用JAVA語言對前端發送來的信息進行分析,提取關鍵信息,根據前端的指令運行相對應的后臺程序,最終得出虛擬實驗的實驗結果,在傳輸回前端。

前端傳輸向后臺的數據主要由器件類型和孔的位置兩部分組成。器件類型使用ID來表示。前端與后臺使用同一張對應表,前端選中拖動一個器件后,向后臺傳輸相應的ID,后臺收到ID后,根據對應關系可知前端使用的是哪個器件,在根據相應的代碼塊進行運算,對二維數組的數值進行讀取,計算,修改,保存??椎奈恢脛t由一對二維坐標表示,當器件放置到面包板上時,前端將器件所放置的位置變為輸入點的二維坐標,輸出點的二維坐標等參數傳輸到后臺,這些二維坐標與后臺二維數組一一對應,后臺獲得坐標后,對輸入坐標的相應位置的數值進行讀取,將其值賦給后臺程序中的一些變量,在根據器件ID,進行所對應的操作計算,最后將計算的結果賦值給輸出坐標所對應的二維數組的位置,從而改變了二維數組的值。

由于前端與后臺的連接是放置一個器件后,傳輸一次請求,所以后臺必須能保存本次操作后二維數組的結果,并在下個器件放置時調用本次保存下來的二維數組,在本次操作后的二維數組的基礎上進行讀取,修改。所以本系統設計采取了JAVAweb編程中的HttpSession對象。當前端開始一個新的實驗的時候,放置第一個器件后,后臺JAVA程序創建一個新的HttPSession對象,并從前端發來的http請求中獲取session,并賦值給新建的HttpSession。并初始化二維數組,并根據第一個放置的器件的ID與位置對這個二維數組進行第一次計算,修改。然后將此二維數組作為一個屬性保存在這個新建的HttpSession對象中。這樣即完成了第一個器件的操作。此時的HttpSession對象中保存著一個關于這次虛擬實驗的的二維數組的屬性。這個二維數組已經根據第一個放置的器件進行了修改。隨后,當放置第二個器件時,前端向后臺傳輸參數時,后臺從前端發來的http請求中獲得session,后臺發現這個session不是新的session,說明這不是第一次通話,所以后臺程序從之前的HTTPSession對象中獲取二維數組這一屬性,并根據前端發來的器件數據對這個二維數組進行計算,修改,保存。

2.1.2虛擬面包板設計

為測試后臺程序思路的可行性,服務器端創建了一個虛擬的面包板來測試后臺功能。

Python擁有強大的庫函數,使建立面包板的GUI變得十分方便。所以我們使用Python語言來創建測試用的面包板GUI。系統使用了Python自帶的tkinter包,來創建了面包板GUI,圖1中面包板及相當于前端的面包板,有一個二維數組與面包板的點相對應,就像后臺程序中的二維數組與前端面包板相對應一樣。當我們電機左側的器件后將其放置到右側面包板上后,程序根據我們的操作執行相應的函數,修改二維數組對應點的值。根據測試結果,使用二維數組來實現虛擬實驗的方式是可行的。

2.1.3APP交互

將后臺JAVA程序部署在服務器中,封裝打包成為專門接受APP的http請求API接口。APP的http請求主要為3類:清除電路,修改電路及測試輸出。當服務器接受到前端傳來的http請求后,解析讀取http請求中的信息及數據,根據不同請求類型并調用后臺程序。

當http請求為清除所有電路時,服務器清除當前內部電路并開始等待下一次請求。

當http請求為修改電路,即刪除某一電路元件時,服務器根據特征ID及嵌入時間查詢最新插入的電路元件,予以刪除并開始等待下一次請求。

當http請求為測試輸出時,服務器調用內部模擬電源,啟動電路并記錄LED元件亮暗情況,得出結果。服務器將LED元件的特征ID及亮暗情況打包進http響應中,通過網絡傳回APP用于接收服務器請求的API以供APP解析。

2.2虛擬實驗室移動端設計

2.2.1初始UI設置

移動端基于安卓系統進行開發。實驗界面采用xml布局文件所需的標簽語言進行初始設置,父布局種類選用相對布局。父布局中央為實驗用面包板,數字電路元件,如AND,OR,NOR門等采取可拖拽Button控件擺放在面包板兩側。用戶可執行命令包括重新設計,開始執行和刪除原件,以固定位置Button控件形式并列擺放于面包板及電路元件下側。

2.2.2動態執行

動態執行過程通過綁定屏幕監聽器實現電路元件件拖拽效果。屏幕監聽器會實時跟蹤用戶手指的位置并更新當前位置下數字電路元件所有孔在面包板坐標系下的坐標。每當用戶按住一個電路元件并開始滑動,監聽器便通知系統生成一個對應電路元件對象并賦予其一個特征ID,特征ID第一位為電路元件的種類序列,后幾位為隨機非重復序列。當用戶在拖動電路元件時,監聽器的孔孔匹配方法會實時計算在面包板坐標系下電路元件孔與所有面包板孔的距離,并根據電路元件的形狀,孔與孔之間的距離確定面包板上最適合電路元件嵌入的16個孔,實時鎖定電路元件在面包板上的位置。結束拖動后,動態執行時系統生成的監聽器對象會以“電子元件孔序列一面包板孔序列”兩兩一組的2*16二維數組記錄電路元件在面包板上的位置,作為關鍵數據發給服務器。

2.2.3服務器交互

每當用戶結束一次滑動,監聽器都會將得到的2*16數組與電子元件的特征ID。拖動過程結束后,APP進入服務器交互進程,采用http接口通訊,通過http請求向服務器發送電子元件的序列號以及包含了電子元件位置信息的2*16數組。服務器接收http請求,解析json數據包獲得對應的電路元件特征ID及其對應2*16位置數組,在服務器內面包板加載元件并保存。

當用戶點擊“重新設計”時,APP進入清除進程,清除電路板上的所有電路元件并向服務器發送實驗終止http請求。服務器接收請求并清除內部已搭建全部電路,等待下次http請求。

當用戶點擊“刪除元件”時,屏幕監聽器監聽用戶手指的點擊事件。當用戶點擊面包板上的某個電路元件時,屏幕監聽器會獲取當前元件的特征ID,通知系統清除該元件并將包含特征ID的刪除元件http請求發送給服務器。服務器接收刪除請求,查詢內部面包板上特征ID與http請求中特征ID一致的電路元件并予以刪除。

3結語

本系統設計以在線電路實驗為出發點,采取APP為載體的形式實現在線搭建數字電路并檢測輸出功能,為當前各大高校提供在線電路實驗解決方案。在移動端最重要的部分是實現模擬面包板的動態執行,面包板孔的信息包括ID序列號以及(x,y)形式的坐標,數字電路元件有自己的ID并以大小為16的一維序列數組形式保存其16個孔的位置信息,動態執行時系統為電路元件賦予特征ID,結束拖動后監聽器對象會以2*16的二維數組形式記錄電路元件在面包板上的位置,并連同電路元件特征ID一同以http請求形式發送給服務器。

在服務器端動態接收過程中,服務器首先接收http請求,解析json數據包獲得對應的電路元件特征ID及其對應2*16位置數組,并在內部面包板加載元件并予以保存。后臺JAVA程序部署在服務器中,同時為APP開放專門接受APP的http請求API接口,解析讀取http請求中的信息及數據,并調用后臺程序。當用戶點擊刪除或重構功能時,服務器響應相應請求改變或清除內部電路。當用戶點擊查看輸出功能時,服務器內部模擬接入電源過程并測試輸出,得出結果,即LED亮暗情況后,將結果打包進http響應中,通過網絡傳回前端。同時在這一部分的設計中,為測試后臺程序思路的可行性,我們創建了一個虛擬的面包板來測試后臺相關功能。

參考文獻

[1]J, Butime, R. Besiga, A. Bwonyo,V. Nakanwagi, T. Togboa and A.Katumba,“Design of Online DigitalElectronics Laboratories Based on theNIELVIS II platform”,InternationalJournal of Interactive MobileTechnologies

[2] Muchlas,M. Andang Nov ianta, An Online Lab for Digital ElectronicsCourse Using Information Techno logySupports”,International Conferenceon Science in Information Technology2015

[3]張新朝,李夢雪,云教育平臺虛擬實驗室構建[J/0L].軟件導刊,2019.

[4]曹曉燕,模擬仿真技術在電子電工實驗中的運用[J].電子技術與軟件工程,2019(04):94.

猜你喜歡
數字電路數組后臺
JAVA稀疏矩陣算法
JAVA玩轉數學之二維數組排序
基于數字電路的定時器的設計
MATLAB在數字電路教學中的應用
基于數字電路的密碼鎖設計與實現
后臺暗戀
數字電路實驗的設計分析
Excel數組公式在林業多條件求和中的應用
前臺、后臺精彩花絮停不了
尋找勾股數組的歷程
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合