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