陳國周 詹素華 陳為群
摘要:微信平臺為程序開發(fā)者提供了強大的開發(fā)工具,適合用來開發(fā)移動互聯(lián)的邊坡穩(wěn)定計算程序。本文介紹了微信平臺在移動端程序開發(fā)方面的優(yōu)勢,給出邊坡工程移動端程序開發(fā)的流程圖以及詳細步驟,包括圖形實時顯示方法、計算模塊的代碼編寫、微信小程序的預覽及發(fā)布流程,最后形成了程序掃描碼,讀者直接用微信掃碼可以進行邊坡穩(wěn)定計算。
關(guān)鍵詞:邊坡工程;計算程序;微信平臺;微信小程序;移動端軟件;程序開發(fā)
中圖分類號:TU43 文獻標識碼:A 文章編號:1007-9416(2019)04-0189-03
0 引言
滑坡在我國是常見的地質(zhì)災害,因此邊坡工程是巖土工程中經(jīng)常遇到的工程類型,很多較成熟的商業(yè)軟件都提供了這方面的計算模塊,如FLAC、Plaxis、Geostudio、理正巖土、同濟啟明星、MIDAS等,這些軟件可以完成較為復雜的邊坡工程設(shè)計[1,2]。也有一些研究人員使用各種程序語言開發(fā)了相關(guān)的計算軟件[3-5]。隨著移動互聯(lián)時代的來臨,用戶需要更加方便快捷的計算工具,如果能使用隨身攜帶的手機移動端來計算,將是個很方便的方法。黃宏偉預測,利用云計算技術(shù),巖土工程專業(yè)計算分析軟件將由產(chǎn)品模式轉(zhuǎn)變?yōu)榉漳J?,這樣更易于推廣,能更好地滿足客戶需求[6]。楊敏認為,在未來基于網(wǎng)絡(luò)的社會中,軟件的服務將有一個重要特征:軟件產(chǎn)品與服務融為一體,例如在線計算、查詢,直接通過網(wǎng)絡(luò)實現(xiàn)該功能,即軟件本身就是以服務的形式存在[7]。崔年治認為在軟件開發(fā)方面,應該以共享數(shù)據(jù)為連接紐帶,把移動技術(shù)、云存儲、云計算、BIM、物聯(lián)網(wǎng)等各種新技術(shù)充分貫通,集成應用,可節(jié)約出大量的時間去提高設(shè)計的質(zhì)量[8]。
筆者認為在移動互聯(lián)時代,巖土工程的專業(yè)軟件會分化,一個方向是向更復雜的多相耦合、多工種協(xié)同去發(fā)展,需要更大的內(nèi)存、更快的計算能力;另一個方向則是走去中心化的道路,把較簡單的計算功能(比如邊坡穩(wěn)定的計算公式)轉(zhuǎn)移到移動端,以方便巖土工作者使用[9]。本文介紹了基于微信平臺的邊坡穩(wěn)定計算軟件開發(fā)過程與使用效果。
1 微信小程序簡介
微信公眾平臺是騰訊公司打造的一個綜合平臺,提供微信公眾號及微信小程序的注冊開發(fā)。依托微信平臺的小程序開發(fā),可以通過盡可能簡單、高效的方式讓開發(fā)者在微信中開發(fā)具有原生APP體驗的服務。微信小程序是基于數(shù)據(jù)驅(qū)動的模式,有很多組件(視圖組件)可以選用,但是沒有window、document的概念,因此無法使用Dom庫,如JQuery。
程序開發(fā)者需要使用騰訊公司提供的“開發(fā)者工具”,來完成小程序創(chuàng)建和代碼編輯。開發(fā)者工具在電腦上安裝完成后,打開并使用微信掃碼登錄。選擇創(chuàng)建“項目”,填入申請到的AppID,設(shè)置一個本地項目的名稱,比如“基坑工程項目”,并選擇一個本地的文件夾作為代碼存儲的目錄,點擊“新建項目”就開始了程序的編寫[10]。
2 微信小程序框架
微信小程序框架的核心是一個響應的數(shù)據(jù)綁定系統(tǒng)。整個系統(tǒng)分為兩塊,即視圖層(View)和邏輯層(App Service),如圖1所示,并在視圖層與邏輯層間提供了數(shù)據(jù)傳輸和事件系統(tǒng),可以讓開發(fā)者可以方便地聚焦于數(shù)據(jù)與邏輯上。
框架可以讓數(shù)據(jù)與視圖非常簡單地保持同步。當做數(shù)據(jù)修改的時候,只需要在邏輯層修改數(shù)據(jù),視圖層就會做相應的更新??蚣苓€提供了豐富的微信原生API,可以方便的調(diào)起微信提供的能力,如獲取用戶信息,本地存儲,支付功能等[11]。
在進行移動端軟件開發(fā)時,會用到多個頁面,比如邊坡工程至少需要土層輸入頁面、邊坡尺寸頁面、支護頁面、計算結(jié)果頁面等等。而微信小程序框架管理了整個程序的頁面路由,可以做到頁面間的無縫切換,并給以頁面完整的生命周期。開發(fā)者需要做的只是將頁面的數(shù)據(jù)、方法及生命周期函數(shù)注冊進框架中,其他的一切復雜的操作都交由框架處理。
3 程序流程及其實現(xiàn)
3.1 程序流程圖
根據(jù)所要實現(xiàn)的功能,筆者給出程序的流程圖如圖2所示。從流程圖可以看出,程序中有較多的頁面跳轉(zhuǎn)與返回,因為手機屏幕相對電腦屏幕來說小了很多,需要通過多個頁面來實現(xiàn)特定的功能。
3.2 程序?qū)崿F(xiàn)
3.2.1 圖形的實時顯示
在移動端軟件中,友好的圖形界面是必不可少的,微信小程序中的繪圖和Android、OS等移動開發(fā)是相同的,都是創(chuàng)建個上下文,在畫布canvas上畫出圖形。canvas標簽默認寬度為300px,高度為225px,但我們希望畫面隨著用戶的手機屏幕的大小而自動變化,這就需要調(diào)用手機屏幕的寬度及高度尺寸,代碼如下所示:
var app = getApp();
var context = null;
var isButtonDown = false;
var canvasw = 0;
var canvash = 0;
wx.getSystemInfo({
success: function (res) {
canvasw = res.windowWidth;
canvash = res.windowHeight;
}
});
畫布canvas就像是數(shù)學上的坐標軸,以屏幕左上角為圓點,X軸向右為正,Y軸向下為正(這點和數(shù)學上相反的)。
3.2.2 計算模塊
邊坡穩(wěn)定計算軟件的核心內(nèi)容是其計算模塊,該模塊屬于小程序的邏輯層,是用JavaScript編寫的,放在后綴為js的文件里。邏輯層將數(shù)據(jù)進行處理后發(fā)送給視圖層,同時接受視圖層的事件反饋。在JavaScript 的基礎(chǔ)上,微信小程序有自己的特點:①增加 App 和 Page 方法,進行程序和頁面的注冊。②提供豐富的API,如掃一掃,支付等微信特有能力。③每個頁面有獨立的作用域,并提供模塊化能力。④開發(fā)者寫的所有代碼最終將會打包成一份 JavaScript,并在小程序啟動的時候運行,直到小程序銷毀。下面以土壓力系數(shù)計算為例,代碼如下:
//KaSoil土層主動土壓力系數(shù),KpSoil被動土壓力系數(shù)
var KaSoil = [10];
var KpSoil = [10];
for (var i = 0; i < NumberSoilLayer; i++) {
KaSoil[i] = Math.pow(Math.tan(Math.PI * (45 - 0.5 * soilPara[i][2]) / 180), 2);
KpSoil[i] = Math.pow(Math.tan(Math.PI * (45 + 0.5 * soilPara[i][2]) / 180), 2);
//
}
4 程序效果
4.1 程序的預覽與發(fā)布
開發(fā)者可以使用開發(fā)工具來預覽小程序,檢查小程序在移動客戶端上的真實表現(xiàn)。點擊開發(fā)工具頂部操作欄的預覽按鈕,開發(fā)工具會自動打包當前項目,并上傳小程序代碼至微信的服務器,成功之后會在界面上顯示一個二維碼。使用微信掃碼即可在手機客戶端上看到小程序的真實表現(xiàn),并且在手機上使用。由于最終程序是運行于微信平臺,為了保證小程序的質(zhì)量,以及符合相關(guān)的規(guī)范,小程序的發(fā)布需要經(jīng)過騰訊公司審核[12]。點擊開發(fā)者工具頂部操作欄的上傳按鈕,填寫版本號以及項目備注,上傳代碼提交審核。審核通過之后,需要開發(fā)者手動點擊發(fā)布,小程序才會發(fā)布到線上提供服務。用戶要使用該程序,只需在手機的微信里搜索“土木計算”小程序,打開之后就可以使用?;蛘哂梦⑿艗叽a圖3所示的小程序二維碼,直接進入程序首頁。
4.2 程序運行效果
在手機微信里打開“土木計算”小程序(如圖4所示),點擊里面的“邊坡穩(wěn)定分析”模塊,就進入“邊坡穩(wěn)定計算”的界面,輸入相關(guān)的土層參數(shù)、邊坡尺寸參數(shù),然后點擊“計算”,這時程序會提示是否需要支護,如果需要支護則輸入錨桿參數(shù),再點擊“計算”。
輸入邊坡高度為45m,邊坡水平投影長度為66m?;衙媾c水平夾角25度。土體參數(shù)容重20kN/m3,粘聚力18.5kPa,摩擦角15°,計算出無支護狀態(tài)下邊坡穩(wěn)定系數(shù)是0.91,不能滿足規(guī)范的穩(wěn)定安全要求。接下來增加支護措施,點擊“輸入支護信息”,輸入錨桿的排數(shù)、單根錨桿的錨固力、錨桿與水平的夾角及錨桿的水平間距。這些數(shù)據(jù)可以反復調(diào)整,比如當錨桿排數(shù)為11排、單根錨固力為1000KN、錨桿水平夾角未20度、錨桿水平間距為4m時(如圖5所示),計算得到的穩(wěn)定系數(shù)是1.34,滿足規(guī)范的要求。
5 結(jié)語
本文基于微信平臺開發(fā)了邊坡穩(wěn)定計算程序,主要得出以下結(jié)論:
(1)使用微信平臺提供的開發(fā)工具,可以開發(fā)出邊坡穩(wěn)定計算程序,經(jīng)幾百位用戶的試用,該程序可以滿足基本的計算要求。
(2)該程序運行在手機移動端,不必下載安裝,直接在微信里打開即可計算。程序本身大小不足1M,基本對智能手機內(nèi)存沒有影響。
(3)由于微信平臺對程序容量的限制,該程序?qū)儆谳p便型的應用,更加復雜的功能,比如自動生成計算書還無法實現(xiàn)。
本程序只是應用了微信平臺所提供的一部分工具,還有很多微信平臺的潛力沒有充分挖掘出來,計算程序還有待于后續(xù)進一步完善。
參考文獻
[1] 聶磊,張銀興.理正深基坑及巖土軟件使用的若干問題探討[J].工業(yè)建筑,2016,46(增刊):515-517.
[2] 李方成,郭利娜,胡斌,蔣海飛,徐海清.基于MIDAS軟件探討施工工序?qū)ι罨臃€(wěn)定性的影響[J].長江科學院院報,2013,30(3):49-55.
[3] 陳國周.巖土錨固工程中若干問題的研究[D].大連理工大學,2008.
[4] 馬鄖,魏志云,徐光黎,董家興,李受祉.基坑雙排樁支護結(jié)構(gòu)設(shè)計計算軟件開發(fā)及應用[J].巖土力學,2014,35(3):862-870.
[5] 陳國周,張建勛,賈金青.巖質(zhì)邊坡錨桿支護的三維穩(wěn)定分析及工程應用[J].山東理工大學學報,2010,24(2):12-15.
[6] 黃宏偉,聶新堯.云計算為巖土工程帶來的機遇與挑戰(zhàn)[C].第三屆全國工程風險與保險研究學術(shù)研討會,2014:183-187.
[7] 楊敏,肖珂,張俊峰.巖土工程軟件的發(fā)展方向[J].巖土工程界,2001,10(4):18-19.
[8] 崔年治.BIM思想在邊坡治理分析軟件中的應用[J].工程勘察,2017年增刊(1):90-95.
[9] 陳國周,劉春亮,江凡.巖土工程移動端程序開發(fā)[J].建筑科學,2018,34(sup):95-99.
[10] 易偉.微信小程序快速開發(fā)[M].北京:人民郵電出版社,2017:28-29.
[11] 李駿,邊思.微信小程序開發(fā)入門及案例詳解[M].機械工業(yè)出版社,2017.