一種用于設(shè)備控制系統(tǒng)程序的開發(fā)方法及框架的制作方法
【專利摘要】本發(fā)明提供一種用于設(shè)備控制系統(tǒng)程序開發(fā)方法及框架,所述開發(fā)方法包括多入口文件接收服務(wù)請(qǐng)求啟動(dòng),引導(dǎo)程序完成運(yùn)行環(huán)境初始化和必要庫(kù)引入,程序有前端、后端、API三種基于運(yùn)行模式的類型,通過引入相應(yīng)的程序段、插件、模塊、引擎以完成程序的操作。規(guī)范驅(qū)動(dòng)程序目錄并使用目錄推導(dǎo)法獲得驅(qū)動(dòng)函數(shù)名;開發(fā)可選地采用了本發(fā)明所述的偽面向?qū)ο蟮乃枷?;在設(shè)備伺服、API響應(yīng)及前端程序運(yùn)行使用了本發(fā)明所述的多進(jìn)程的方法;程序完成執(zhí)行后輸出視圖文件或返回值,包括輸出到瀏覽器上。
【專利說明】
一種用于設(shè)備控制系統(tǒng)程序的開發(fā)方法及框架
技術(shù)領(lǐng)域
[0001]本發(fā)明設(shè)計(jì)一種計(jì)算機(jī)技術(shù),尤其是一種用于設(shè)備控制系統(tǒng)程序的開發(fā)方法及框架。
【背景技術(shù)】
[0002 ] ①本發(fā)明使用的是PHP、JAVASCRIPT、HTML、CSS開發(fā)語(yǔ)言。
[0003]PHP(外文名:PHP:Hypertext Preprocessor,中文名:“超文本預(yù)處理器”)是一種通用開源腳本語(yǔ)言。語(yǔ)法吸收了C語(yǔ)言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開發(fā)領(lǐng)域。PHP獨(dú)特的語(yǔ)法混合了 C、Java、Per I以及PHP自創(chuàng)的語(yǔ)法。它可以比CGI或者Perl更快速地執(zhí)行動(dòng)態(tài)網(wǎng)頁(yè)。用PHP做出的動(dòng)態(tài)頁(yè)面與其他的編程語(yǔ)言相比,PHP是將程序嵌入到HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行,使代碼運(yùn)行更快。
[0004]JavaScript—種直譯式腳本語(yǔ)言,是一種動(dòng)態(tài)類型、弱類型、基于原型的語(yǔ)言,內(nèi)置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語(yǔ)言,最早是在HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用)網(wǎng)頁(yè)上使用,用來(lái)給HTML網(wǎng)頁(yè)增加動(dòng)態(tài)功能。
[0005]HTML超級(jí)文本標(biāo)記語(yǔ)言是標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的一個(gè)應(yīng)用,也是一種規(guī)范,一種標(biāo)準(zhǔn),它通過標(biāo)記符號(hào)來(lái)標(biāo)記要顯示的網(wǎng)頁(yè)中的各個(gè)部分。網(wǎng)頁(yè)文件本身是一種文本文件,通過在文本文件中添加標(biāo)記符,可以告訴瀏覽器如何顯示其中的內(nèi)容(如:文字如何處理,畫面如何安排,圖片如何顯示等)。
[0006]CSS層疊樣式表是一種用來(lái)表現(xiàn)HTML(標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的一個(gè)應(yīng)用)或XML (標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的一個(gè)子集)等文件樣式的計(jì)算機(jī)語(yǔ)言,是能夠真正做到網(wǎng)頁(yè)表現(xiàn)與內(nèi)容分離的一種樣式設(shè)計(jì)語(yǔ)言。相對(duì)于傳統(tǒng)HTML的表現(xiàn)而言,CSS能夠?qū)W(wǎng)頁(yè)中的對(duì)象的位置排版進(jìn)行像素級(jí)的精確控制,支持幾乎所有的字體字號(hào)樣式,擁有對(duì)網(wǎng)頁(yè)對(duì)象和模型樣式編輯的能力,并能夠進(jìn)行初步交互設(shè)計(jì),是目前基于文本展示最優(yōu)秀的表現(xiàn)設(shè)計(jì)語(yǔ)言。
[0007]②現(xiàn)在設(shè)備控制系統(tǒng)應(yīng)用范圍越來(lái)越廣泛,大量的設(shè)備智能化物、聯(lián)網(wǎng)化,應(yīng)用于諸如家居、樓宇、社區(qū)等原先的傳統(tǒng)領(lǐng)域。越來(lái)越多的領(lǐng)域正在走上自動(dòng)化、智能化、物聯(lián)網(wǎng)化,它們都需要設(shè)備控制系統(tǒng)。在這些領(lǐng)域設(shè)備控制系統(tǒng)的開發(fā)是一個(gè)復(fù)雜的過程。
[0008]③眾多不同的需求和實(shí)施環(huán)境所開發(fā)的設(shè)備控制系統(tǒng)具備很多共通之處,許多開發(fā)內(nèi)容相似且高頻的出現(xiàn),這些內(nèi)容的代碼可以重用。程序開發(fā)框架內(nèi)預(yù)建了完備成熟模塊和代碼片段,以便開發(fā)者在開發(fā)的過程中進(jìn)行調(diào)用。它猶如為設(shè)備控制系統(tǒng)的開發(fā)建立了一個(gè)生產(chǎn)流水線,一個(gè)靈活完備的開發(fā)框架能夠幫助開發(fā)者更輕松更有質(zhì)量的開發(fā)出高效、穩(wěn)定、優(yōu)質(zhì)且拓展性強(qiáng)的設(shè)備控制系統(tǒng)。
[0009]④PHP+JAVASCRIPT+HTML+CSS本是互聯(lián)網(wǎng)WEB領(lǐng)域應(yīng)用最廣泛的技術(shù)解決方案,人與互聯(lián)網(wǎng)的交互主要是通過WEB來(lái)進(jìn)行。在當(dāng)今互聯(lián)網(wǎng)+的浪潮下,物聯(lián)網(wǎng)飛速發(fā)展且與人與互聯(lián)網(wǎng)與WEB越來(lái)的密不可分,WEB是一個(gè)將人與物聯(lián)網(wǎng)與受控設(shè)備交互的最佳手段之一,通過WEB來(lái)進(jìn)行人與設(shè)備控制系統(tǒng)與受控設(shè)備進(jìn)行交互將非常的簡(jiǎn)單。PHP技術(shù)作為本框架重要的后端解決技術(shù)它的無(wú)需編譯、弱類型、熱部署、豐富的庫(kù)函數(shù)、強(qiáng)大的哈希表(關(guān)聯(lián)數(shù)組)、非常廣泛的跨平臺(tái)等等這些優(yōu)勢(shì)也非常適應(yīng)當(dāng)前設(shè)備控制系統(tǒng)需求的多樣性和多變性,對(duì)開發(fā)的靈活性、可拓展性和可維護(hù)性的需求,而且PHP的開發(fā)非常的高效最新的PHP7運(yùn)行環(huán)境還帶來(lái)的PHP運(yùn)行效率的極大的提升該,項(xiàng)技術(shù)本身的發(fā)展?jié)摿σ埠艽蟆?br>[0010]PHP+JAVASCRIPT+HTML+CSS技術(shù)當(dāng)今在世界范圍內(nèi)保有大量的開發(fā)者,非常容易找到現(xiàn)有的從業(yè)人員,絕大多數(shù)互聯(lián)網(wǎng)應(yīng)用的開放平臺(tái)均提供PHP-SDK,非常方便的與之進(jìn)行融合。而PHP+JAVASCRIPT+HTML+CSS構(gòu)建的設(shè)備控制系統(tǒng)程序開發(fā)框架使得WEB開發(fā)和設(shè)備控制系統(tǒng)開發(fā)共用一套開發(fā)技術(shù),技術(shù)的一致性帶來(lái)開發(fā)團(tuán)隊(duì)、系統(tǒng)運(yùn)行、部署和兼容性上的不計(jì)其數(shù)優(yōu)點(diǎn)。
[0011]鑒于此,找到一個(gè)為設(shè)備控制系統(tǒng)量身定做的完備、高效、靈活的有PHP、JAVASCRIPT、HTML、CSS技術(shù)實(shí)現(xiàn)的程序開發(fā)框架成為本領(lǐng)域技術(shù)人員急需解決的問題。
【發(fā)明內(nèi)容】
[0012]鑒于以上需求及克服現(xiàn)有技術(shù)的不足之處,本發(fā)明提供了一種用于設(shè)備控制系統(tǒng)程序的開發(fā)方法及框架。
[0013]本發(fā)明為了達(dá)到上述目的是采取以下技術(shù)方案實(shí)現(xiàn)的:
[0014]通過PHP來(lái)完成主要后臺(tái)部分,由JAVASCRIPT來(lái)配合,通過HTML、CSS JAVASCRIPT、PHP的接合配合來(lái)完成前臺(tái)的表現(xiàn)部分。將經(jīng)常需要復(fù)用到的函數(shù)分類建立獨(dú)立文件組成框架基礎(chǔ)函數(shù)庫(kù);將經(jīng)常需要復(fù)用到的功能建立成代碼片段\模塊預(yù)置于框架之內(nèi),代碼片段主要通過諸如INCLUDE/INCLUDE_ONCE/REQUIRE/REQUIRE_ONCE操作被引入模塊通過實(shí)例化調(diào)用;將經(jīng)常需要用到的高頻操作(包括不僅限于諸如S0CKET_TCP、SOCKET_UDP、HTTP、EMAIL等)獨(dú)立成引擎預(yù)置于框架之內(nèi),存在形式也主要是代碼片段/模塊;預(yù)置對(duì)外API常用到的片段\模塊并獨(dú)立預(yù)置于框架之內(nèi);將常用不同初始化文件制作成片段\模塊獨(dú)立預(yù)置于框架之內(nèi);建立設(shè)備驅(qū)動(dòng)文件集中文件夾并在子文件夾中分立不同文件的驅(qū)動(dòng)文件和信息表文件,驅(qū)動(dòng)函數(shù)名由文件夾路徑推斷,統(tǒng)一函數(shù)傳入值格式;預(yù)置圖片、影音文件和模版文件文件夾;將javascript、css和字體文件合并置于一個(gè)預(yù)置文件夾的各子文件夾下,這些子文件夾是不同的前段框架或前段文件集;將配置文件分立置于配置文件夾下;獨(dú)立擴(kuò)展文件夾;獨(dú)立非默認(rèn)插件文件夾,插件文件夾下的每一個(gè)子文件夾均為一個(gè)插件;成品產(chǎn)品自定義文件也存在一個(gè)專有文件夾;鉤子文件存在于一個(gè)獨(dú)立文件夾下的二級(jí)目錄中,一級(jí)目錄下是鉤子的識(shí)別&觸發(fā)文件;
[0015]主目錄下包括前端入口文件,設(shè)備動(dòng)作及查詢API入口文件,對(duì)外API入口文件,總初始化文件,各頁(yè)面入口文件,各個(gè)后臺(tái)常駐程序文件及其啟動(dòng)MT,所需的獨(dú)立協(xié)議支持文件,及其它由于路徑等原因必須要放在主目錄下的文件。
[0016]在框架內(nèi)預(yù)置一個(gè)整套的默認(rèn)于設(shè)備的通信反饋控制規(guī)則,以便設(shè)備廠商更方便配合框架。
[0017]在主目錄下置有擴(kuò)展程序文件夾,用以存放對(duì)框架自身進(jìn)行擴(kuò)展延伸的程序,統(tǒng)一規(guī)劃的擴(kuò)展方式,提升框架的可擴(kuò)展性。
[0018]在主目錄下置有啟動(dòng)文件集文件夾,主目錄下置有主引導(dǎo)程序和相應(yīng)的引導(dǎo)引擎,主引導(dǎo)程序啟動(dòng)后將檢索并引入啟動(dòng)文件文件夾下的所有文件,并載入它們相應(yīng)的引導(dǎo)引擎,呼起對(duì)應(yīng)的進(jìn)程。通過控制臺(tái)和數(shù)據(jù)庫(kù)輸入并傳遞控制指令,主引導(dǎo)程序進(jìn)行相應(yīng)數(shù)據(jù)傳遞和進(jìn)程啟動(dòng)\關(guān)閉操作。包括不僅限于用以設(shè)備監(jiān)控、伺服和程序自動(dòng)值守等場(chǎng)景使用。
[0019]本發(fā)明的框架主要采用片段引入的方式,函數(shù)的通過規(guī)范命名規(guī)則以避免名稱碰撞。
[0020]本發(fā)明采用了偽面向?qū)ο笏枷搿?br>[0021]可選地,API程序與伺服程序\服務(wù)程序使用數(shù)據(jù)庫(kù)進(jìn)行協(xié)作,以便更好的協(xié)作任務(wù)隊(duì)列和數(shù)據(jù)。
[0022]可選地,在驅(qū)動(dòng)文件夾下可預(yù)置部分指定型號(hào)的設(shè)備的驅(qū)動(dòng)文件,以便框架默認(rèn)就具備對(duì)部分設(shè)備的直接支持。
[0023]可選地,在引擎文件夾下的獨(dú)立引擎文件所需的函數(shù)庫(kù)可獨(dú)立預(yù)置在函數(shù)庫(kù)文件夾下,以便引用內(nèi)容最小化。
[0024]可選地,javascript、CSS和字體文件夾下可預(yù)置現(xiàn)有的成熟的合適的前端框架。
[0025]可選地,根據(jù)不同的發(fā)行需要可在非默認(rèn)插件文件夾下預(yù)置一些可能需要的插件。
[0026]可選地,在模版文件夾下預(yù)置一套默認(rèn)模版。
[0027]本發(fā)明的優(yōu)點(diǎn)和積極效果是:
[0028]本發(fā)明所提供的用于設(shè)備控制系統(tǒng)程序的開發(fā)方法及框架,在兼顧WEB程序的開發(fā)方法及框架功能及特征的情況下跳出PHP+JAVASCRIPT+HTML+CSS的傳統(tǒng)應(yīng)用范疇將面對(duì)設(shè)備控制方面的開發(fā)需求也完美的融合進(jìn)來(lái)。本發(fā)明的結(jié)構(gòu)設(shè)計(jì)特立獨(dú)行的適合面向過程、函數(shù)式開發(fā),更加適合開發(fā)運(yùn)行高效的程序成品,結(jié)構(gòu)清晰合理并具有極高的拓展性,通過本發(fā)明方法及框架開發(fā)的設(shè)備控制程序在每一次功能\底層框架的拓展\升級(jí)都非常的平滑,不會(huì)影響其它的部分。新的設(shè)備在加入的時(shí)候都不會(huì)影響其它任何設(shè)備和任何已經(jīng)在運(yùn)行的功能。通過本發(fā)明所編寫的程序既可以集成成運(yùn)行環(huán)境打包在不同的操作系統(tǒng)中獨(dú)立運(yùn)行,也可以采取更簡(jiǎn)便、穩(wěn)定、易于部署和維護(hù)的C/S模式,用戶和SERVER構(gòu)筑連接只需瀏覽器就可以完成全部的控制操作。本發(fā)明接合云的概念將對(duì)外API預(yù)置于本發(fā)明內(nèi),使得通過本發(fā)明開發(fā)的設(shè)備控制系統(tǒng)程序輕松能夠擁有能夠?qū)悠渌到y(tǒng)/云端的對(duì)外API,還能和其它系統(tǒng)點(diǎn)對(duì)點(diǎn)的配合,易于搭建云、P2P和對(duì)接其它開放平臺(tái)的設(shè)備控制系統(tǒng)程序。通過本發(fā)明提供的用于設(shè)備控制系統(tǒng)程序的開發(fā)方法及框架開發(fā)的設(shè)備控制系統(tǒng)程序可以實(shí)現(xiàn)熱部署、熱升級(jí)、設(shè)備的熱加入熱退出和廣泛的跨平臺(tái)迀移。
[0029]本發(fā)明的開發(fā)框架對(duì)模塊&程序段、驅(qū)動(dòng)、擴(kuò)展等部分的調(diào)用特立獨(dú)行的提出了以固定名稱的已定義變量為傳入數(shù)據(jù)以固定名稱的變量為傳出數(shù)據(jù)的方法,使用偽面向?qū)ο笏枷氤浞钟H和面向過程&函數(shù)式開發(fā),帶來(lái)了更高的開發(fā)靈活性、更高的完成品運(yùn)行效率并使得代碼可更簡(jiǎn)潔。每臺(tái)設(shè)備獨(dú)立進(jìn)程伺服、通過數(shù)據(jù)庫(kù)進(jìn)行協(xié)作通過進(jìn)程管理器進(jìn)行起停呼叫、API為核心的架構(gòu)和微服務(wù)的思想不謀而合,使得完成品程序天生具有更高的穩(wěn)定性、更靈活的資源利用和更高的使用拓展性。
[0030]本發(fā)明的開發(fā)方法和框架在使得軟件工程師可以輕易上手以外更親近硬件工程師的思考習(xí)慣。
【附圖說明】
[0031]圖1是本發(fā)明的開發(fā)方法的一種實(shí)施的流程示意圖。
[0032]圖2是本發(fā)明的開發(fā)框架的進(jìn)程管理器示意圖。
[0033]圖3是本發(fā)明的開發(fā)方法所述的伺服/服務(wù)進(jìn)程示意圖。
[0034]圖4是本發(fā)明的開發(fā)框架開發(fā)的程序運(yùn)行示意圖。
[0035]圖5是本發(fā)明的開發(fā)方法所述的多進(jìn)程模型示意圖。
[0036]圖6是本發(fā)明的開發(fā)方法所述的偽面向?qū)ο竽P褪疽鈭D。
[0037]圖7是本發(fā)明的開發(fā)方法所述的驅(qū)動(dòng)程序函數(shù)名推導(dǎo)及驅(qū)動(dòng)流程示意圖。
【具體實(shí)施方式】
[0038]下面結(jié)合附圖并通過具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳述,以下實(shí)施例只是描述性的,不是限定性的,不能以此限定本發(fā)明的保護(hù)范圍。
[0039]—種用于設(shè)備控制系統(tǒng)程序的開發(fā)方法及框架具體實(shí)施步驟如下:
[0040]【I】將經(jīng)常需要復(fù)用到的函數(shù)分類建立獨(dú)立文件組成框架基礎(chǔ)函數(shù)庫(kù),分類分立文件,放置于框架主目錄下的基礎(chǔ)函數(shù)庫(kù)專屬文件夾下。這些基礎(chǔ)函數(shù)包括不僅限于經(jīng)常用到的如下類型的操作函數(shù),字符串&數(shù)據(jù)處理函數(shù)、編碼轉(zhuǎn)換函數(shù)、獲取連接對(duì)象信息函數(shù)、數(shù)據(jù)庫(kù)基本操作函數(shù)、基本底層事件函數(shù)等可歸類為基礎(chǔ)函數(shù)的函數(shù)。
[0041]【2】將經(jīng)常需要復(fù)用到的功能建立成代碼片段\模塊預(yù)置于框架之內(nèi),代碼片段主要通過諸如INCLUDE/INCLUDE_ONCE/REQUIRE/REQUIRE_ONCE操作被引入模塊通過實(shí)例化調(diào)用,獨(dú)立文件夾分類分立存放。這部分是常用的程序片段但不是完整過程,他們是不宜通過函數(shù)來(lái)實(shí)現(xiàn)或有特殊需要的部分。
[0042]【3】將經(jīng)常需要用到的高頻操作(包括不僅限于諸如S0CKET_TCP、S0CKET_UDP、HTTP、EMAIL等)獨(dú)立成引擎預(yù)置于框架之內(nèi),存在形式也主要是代碼片段/模塊;預(yù)置對(duì)外API常用到的片段\模塊并獨(dú)立預(yù)置于框架之內(nèi)組成框架引擎部分。他們集中在引擎文件夾中,每一個(gè)引擎獨(dú)立文件夾,他們是常用的完整的過程,他們的函數(shù)庫(kù)也可選的加入到基礎(chǔ)庫(kù)文件夾下或置于引擎文件夾下,但不得對(duì)程序的其它部分構(gòu)成影響。
[0043]【4】預(yù)置對(duì)外API常用到的片段\模塊并獨(dú)立預(yù)置于框架之內(nèi);將常用不同初始化文件制作成片段\模塊獨(dú)立預(yù)置于框架之內(nèi),放置于框架內(nèi)的對(duì)外API專屬文件夾下。這些片段\模塊功能是服務(wù)于創(chuàng)建對(duì)外API所使用的,本身已經(jīng)接近于成品對(duì)外API的狀態(tài),內(nèi)容包括不僅限于:對(duì)外API主程序半成品、控制/反饋附屬程序半成品、API常用動(dòng)作\模塊(包括不僅限于諸如OAuth令牌生成、OpenID字符串創(chuàng)建、P2P驗(yàn)證碼生成、加密及校驗(yàn)等),方便開發(fā)者最快速度構(gòu)建完善的對(duì)外API。
[0044]【5】預(yù)置圖片文件夾和前端文件文件夾。將圖片文件獨(dú)立為一個(gè)文件夾下,將Javascr ipt文件、CSS文件和FONT (字體)文件合并于一個(gè)文件夾下,該文件夾下還預(yù)置一些常用到的前端框架(譬如但不僅限定于80(/^了1^?、川1^1^、0^1?1'.13等),方便開發(fā)者最快速的引用并搭建前段且不對(duì)框架的其它部分構(gòu)成影響。
[0045]【6】預(yù)置對(duì)象文件庫(kù)文件夾,以存放部分已既有的對(duì)象文件庫(kù),方便開發(fā)者調(diào)用且不混亂。
[0046]【7】預(yù)置引導(dǎo)文件庫(kù)文件夾,并在該文件夾下預(yù)置一些常用的、高頻的、需求度高的引導(dǎo)文件。引導(dǎo)文件指的是某個(gè)程序動(dòng)作的引導(dǎo)文件,包含對(duì)該動(dòng)作的環(huán)境建立、初始化、啟動(dòng)、(可選的)過程、(可選的)完成。譬如但不僅限于以下動(dòng)作= HTML頁(yè)面頭輸出、MYSQL數(shù)據(jù)庫(kù)連接、EMAIL投送等。
[0047]【8】預(yù)置模版文件庫(kù)文件夾,分為兩類動(dòng)態(tài)模板庫(kù)和靜態(tài)模板庫(kù)。其中動(dòng)態(tài)模版庫(kù)下的模版將靜態(tài)模版文件和部分對(duì)應(yīng)該模版需要的動(dòng)態(tài)文件內(nèi)容混合綜合在了一起。靜態(tài)模版庫(kù)內(nèi)只包含靜態(tài)模版文件,前端與后端分離依賴模版引擎將它與程序結(jié)合。
[0048]【9】預(yù)置驅(qū)動(dòng)文件庫(kù)文件夾,并預(yù)置部分通用驅(qū)動(dòng)文件及部分設(shè)備的專用驅(qū)動(dòng)文件。驅(qū)動(dòng)文件分主驅(qū)動(dòng)文件和虛擬驅(qū)動(dòng)文件兩種。置于不同的多級(jí)文件夾下,文件夾采用“(可選的)設(shè)備類型/(可選的)廠商/(必選)設(shè)備型號(hào)/(可選的)其它信息”的命名方法,驅(qū)動(dòng)文件本身采用通用命名方式主驅(qū)動(dòng)文件為統(tǒng)一的名稱,虛擬驅(qū)動(dòng)文件為統(tǒng)一的名稱。驅(qū)動(dòng)函數(shù)采用統(tǒng)一的命名方式,主驅(qū)動(dòng)函數(shù)名為將從根文件夾到文件所在目錄的路徑所有
改為?并置有統(tǒng)一的函數(shù)開頭,刪除首尾的“」’。例如(驅(qū)動(dòng)文件A所在相對(duì)程序根目錄的目錄的目錄為“/DIRVER/1/2/3/4/”統(tǒng)一的函數(shù)開頭為“oibc_”則函數(shù)名為oibc_DIRVER_1_2_3_4”。函數(shù)具有統(tǒng)一的輸入格式,為(地址,端口,動(dòng)作代碼,信息),例如:主驅(qū)動(dòng)函數(shù)funct1n oibc_DIRVER_l_2_3_4($address, $port,$do,$msg)虛擬驅(qū)動(dòng)函數(shù)funct1noibc_DIRVER_I_2_3_4_xn($address, $port,$do,$msg)。虛擬驅(qū)動(dòng)函數(shù)和主驅(qū)動(dòng)函數(shù)均不一定必須存在。
[0049]【10】獨(dú)立置系統(tǒng)大引導(dǎo)文件,用以初始化每個(gè)程序的運(yùn)行環(huán)境,同時(shí)設(shè)置安全全局變量,每一個(gè)程序在運(yùn)行時(shí)都會(huì)檢查該變量一變判斷是否在一個(gè)不安全的環(huán)境下運(yùn)行以終止程序。
[0050]【11】獨(dú)立置系統(tǒng)API文件,該文件負(fù)責(zé)設(shè)備操作&反饋、系統(tǒng)數(shù)據(jù)庫(kù)API操作、系統(tǒng)內(nèi)通信等。該文件通過根據(jù)數(shù)據(jù)不同的指令值載入不同的驅(qū)動(dòng)\操作片段文件來(lái)實(shí)現(xiàn)不同的API操作。
[0051]【12】獨(dú)立置WEB端主入口文件。本框架設(shè)置有主入口文件但并不限定開發(fā)者只采用單一入口開發(fā)的思路。
[0052]【13】置后臺(tái)常駐程序模版文件,用以幫助開發(fā)人員快速衍生開發(fā)后臺(tái)常駐程序。
[0053]【14】置COOKIE文件夾,該文件夾用以存放程序模擬成CLIENT時(shí)產(chǎn)生的COOKIE。
[0054]【I 5】預(yù)置CACHE緩存文件夾和UPDATE框架升級(jí)文件夾。
[0055]【16】預(yù)置配置文件文件夾,其中包括不僅限于以下配置文件:程序基礎(chǔ)配置文件、數(shù)據(jù)庫(kù)配置文件、預(yù)置動(dòng)作配置文件(譬如但不僅限于:預(yù)先啟動(dòng)MYSQL連接)、管理員信息設(shè)置文件、設(shè)備信息文件、API接口配置文件。
[0056]【17】在主目錄下獨(dú)立置有啟動(dòng)文件集文件夾,主目錄下置有主引導(dǎo)程序和相應(yīng)的引導(dǎo)引擎,主引導(dǎo)程序啟動(dòng)后將檢索并引入啟動(dòng)文件文件夾下的所有文件,并載入它們相應(yīng)的引導(dǎo)引擎,呼起對(duì)應(yīng)的進(jìn)程。通過控制臺(tái)和數(shù)據(jù)庫(kù)輸入并傳遞控制指令,主引導(dǎo)程序進(jìn)行相應(yīng)數(shù)據(jù)傳遞和進(jìn)程啟動(dòng)\關(guān)閉操作。包括不僅限于用以設(shè)備監(jiān)控、伺服和程序自動(dòng)值守等場(chǎng)景使用。
[0057]【18】在主目錄下置有擴(kuò)展程序文件夾,用以存放對(duì)框架自身進(jìn)行擴(kuò)展延伸的程序,統(tǒng)一規(guī)劃的擴(kuò)展方式,提升框架的可擴(kuò)展性。
[0058]【19】當(dāng)一個(gè)偽面向?qū)ο蟪绦虮灰霑r(shí),程序先會(huì)執(zhí)行運(yùn)行環(huán)境的安全檢查,而后檢查必要變量和不必要變量是否已被設(shè)置和賦值。若必要變量未被設(shè)置和賦值,則跳出偽面向?qū)ο蟪绦?若不必要變量未被設(shè)置和賦值,則可選地初始化不必要變量。執(zhí)行程序內(nèi)容,為輸出值變量進(jìn)行賦值。本條所述的必要變量、不必要變量和輸出值變量均使用約定好的名稱。當(dāng)需要引入一個(gè)函數(shù)時(shí),則通過約定好的名稱頭+可選的函數(shù)名稱身+指定后綴對(duì)函數(shù)進(jìn)行命名。
[0059]以上流程構(gòu)建了一個(gè)PHP開發(fā)框架。由此框架構(gòu)建的程序絕大部分的來(lái)自用戶瀏覽器的訪問請(qǐng)求均默認(rèn)導(dǎo)向主入口文件,并由主入口文件引入系統(tǒng)大引導(dǎo)文件及各組建來(lái)完成對(duì)請(qǐng)求的處理。絕大部分對(duì)設(shè)備控制操作及數(shù)據(jù)反饋?zhàn)x取的請(qǐng)求均默認(rèn)由系統(tǒng)API文件來(lái)處理,系統(tǒng)API文件引入系統(tǒng)大引導(dǎo)文件并解析所需控制設(shè)備的驅(qū)動(dòng)程序路徑并引入,讀取所要控制/讀取反饋值的設(shè)備的地址、端口及其它信息并解析其驅(qū)動(dòng)程序函數(shù)名將用戶的請(qǐng)求和設(shè)備信息傳入驅(qū)動(dòng)程序,并完成后續(xù)的數(shù)據(jù)處理及輸出工作。絕大部分的后臺(tái)常駐進(jìn)程由臺(tái)常駐程序模版文件衍生,并進(jìn)程獨(dú)立運(yùn)行,以互不干擾。絕大部分對(duì)外/系統(tǒng)間的通信又對(duì)外API承擔(dān),不同進(jìn)程間通過數(shù)據(jù)庫(kù)/SOCKET進(jìn)行通信。由于本框架的模塊/片段化特性使得零散的程序可以通過對(duì)模塊/片段的零散的引入而靈活且又輕量的實(shí)現(xiàn)。本框架構(gòu)建了一個(gè)為設(shè)備控制系統(tǒng)程序量身定做的PHP開發(fā)框架,將設(shè)備控制、WEB、與全球互聯(lián)網(wǎng)的第三方開放平臺(tái)整合及自身私有API&開放API的搭建有機(jī)的接合,同時(shí)PHP+MYSQL技術(shù)作為服務(wù)端支柱對(duì)云計(jì)算有著天生的親和能力(近乎現(xiàn)在所有的云環(huán)境都能運(yùn)行PHP程序并支持MYSQL數(shù)據(jù)庫(kù))。開發(fā)出來(lái)的程序具有靈活部署、跨平臺(tái)、瀏覽器替代客戶端易于使用、熱升級(jí)、與第三方平臺(tái)具備天生親和性及云親和的特性。本框架更偏重函數(shù)編程親過程化,更具備效率優(yōu)勢(shì)。本發(fā)明設(shè)備控制系統(tǒng)程序開發(fā)方法及框架使得PHP開發(fā)的程序可以跳出傳統(tǒng)的WEB領(lǐng)域更方便高效的拓展到設(shè)備自控、智能化、物聯(lián)網(wǎng)領(lǐng)域并且和WEB、云、開放API領(lǐng)域的開發(fā)兼顧使得它們可以同處一個(gè)框架下融合開發(fā)。并且本發(fā)明設(shè)備控制系統(tǒng)程序開發(fā)方法及框架使得PHP的開發(fā)靈活性大大提高且兼顧的運(yùn)行效率,同時(shí)親近函數(shù)編程及過程化編程。本發(fā)明獨(dú)創(chuàng)了通過函數(shù)式和過程化的有機(jī)結(jié)合,充分利用了 INCLUDE&INCLUDE_0NCE函數(shù)在較新版PHP環(huán)境中的性能特立獨(dú)行的創(chuàng)造了偽面向?qū)ο笈c函數(shù)式過程式接合的PHP開發(fā)框架,并將主要應(yīng)用場(chǎng)景是WEB領(lǐng)域的PHP技術(shù)應(yīng)用于控制領(lǐng)域創(chuàng)造了從web端到設(shè)備控制端都使用PHP技術(shù)(配合Javascript+CSS+HTML)的設(shè)備控制系統(tǒng)程序開發(fā)方法及框架。所以本發(fā)明有效的克服了現(xiàn)有技術(shù)的種種缺點(diǎn)而具備高度的產(chǎn)業(yè)價(jià)值。
[0060]上述表述及實(shí)施例僅示例性說的對(duì)本發(fā)明的原理與其功效進(jìn)行說明,并非用于限制本發(fā)明。任何掌握或熟悉此范疇技術(shù)的人均可在不違背本發(fā)明的精神及范疇的情況下對(duì)本發(fā)明進(jìn)行改變或修飾。因此凡在本發(fā)明所屬技術(shù)領(lǐng)域中的具有通常知識(shí)的人員在未脫離本發(fā)明所揭示的精神與技術(shù)思想下所完成的一切等效的改變或修飾,皆仍應(yīng)由本發(fā)明的權(quán)利要求所涵蓋。
【主權(quán)項(xiàng)】
1.一種用于設(shè)備控制系統(tǒng)程序的開發(fā)方法及框架,所述開發(fā)方法包括: ①程序接到服務(wù)請(qǐng)求由入口文件啟動(dòng),先載入初始化引導(dǎo)程序,完成必要庫(kù)的引入、預(yù)加載并引導(dǎo)相應(yīng)的環(huán)境程序和激活全局變量,程序根據(jù)其前端、后端、API三種運(yùn)行類型加載相應(yīng)的文件,并根據(jù)用戶傳入?yún)?shù)執(zhí)行相應(yīng)的流程,其中引入相應(yīng)的程序段、插件、模塊、引擎以完成程序的操作; ②在引入(虛/實(shí))設(shè)備驅(qū)動(dòng)程序時(shí)采用了本發(fā)明所述的目錄推導(dǎo)法得到驅(qū)動(dòng)函數(shù)名及驅(qū)動(dòng)后續(xù)函數(shù)名; ③在包括不僅限于程序段、插件、模塊及引擎的引入流程中使用了本發(fā)明所述偽面向?qū)ο蟮姆椒ǎ?④在設(shè)備伺服、API響應(yīng)及前端程序運(yùn)行使用了本發(fā)明所述的多進(jìn)程的方法,通過進(jìn)程管理器進(jìn)行進(jìn)程的呼叫和起停,進(jìn)程管理器通過對(duì)指定目錄下的文件進(jìn)行遍歷并讀取待激活進(jìn)程信息實(shí)現(xiàn)對(duì)指定進(jìn)程的自動(dòng)啟動(dòng)同時(shí)接受人工控制。設(shè)備伺服進(jìn)程和API進(jìn)程通過數(shù)據(jù)庫(kù)與其它進(jìn)程進(jìn)行協(xié)作。 ⑤程序完成執(zhí)行后輸出視圖文件或返回值。2.根據(jù)權(quán)利要求1所述的用于設(shè)備控制系統(tǒng)程序開發(fā)方法,其特征在于:所述的入口文件不僅限于唯一的入口文件,程序可能同時(shí)存在若干個(gè)入口文件。所述的服務(wù)請(qǐng)求包括網(wǎng)絡(luò)路徑和文件路徑。3.根據(jù)權(quán)利要求1所述的用于設(shè)備控制系統(tǒng)程序開發(fā)方法,其特征在于:所述的開發(fā)方法還包括將所述的必要庫(kù)、需預(yù)加載的并引導(dǎo)的相應(yīng)的環(huán)境程序、全局變量激活程序、前端、后端、API三種運(yùn)行類型對(duì)應(yīng)的相應(yīng)的文件、要執(zhí)行的相應(yīng)的流程文件、程序段、插件、模塊、引擎、驅(qū)動(dòng),根據(jù)分類放置在不同的目錄中。4.根據(jù)權(quán)利要求1所述的用于設(shè)備控制系統(tǒng)程序開發(fā)方法,其特征在于:所述的開發(fā)方法還包括驅(qū)動(dòng)文件的命名及目錄結(jié)構(gòu)是根據(jù)程序的需要進(jìn)行規(guī)定的。5.根據(jù)權(quán)利要求1所述的用于設(shè)備控制系統(tǒng)程序開發(fā)方法,其特征在于:所述的開發(fā)方法還包括在使用了本發(fā)明所述偽面向?qū)ο蟮姆椒ǖ倪^程中傳入變量、傳出變量和引入函數(shù),根據(jù)程序的需要規(guī)定了變量名稱頭和函數(shù)名稱頭避免重復(fù)變量名稱。6.根據(jù)權(quán)利要求1所述的用于設(shè)備控制系統(tǒng)程序開發(fā)方法,其特征在于:所述的開發(fā)方法還包括,將所述的視圖文件以web形式展現(xiàn)在瀏覽器上,將返回值通過普通字符串、JSON、XML或指定規(guī)則的格式輸出。7.一種用于設(shè)備控制系統(tǒng)程序的開發(fā)方法及框架,所述開發(fā)框架包括: 配置文件及引導(dǎo)程序:用于對(duì)程序的運(yùn)行環(huán)境進(jìn)行初始化和必要庫(kù)文件引入,并依據(jù)配置文件弓I入所需庫(kù)文件,預(yù)加載相應(yīng)環(huán)境程序,激活全局變量。 函數(shù)庫(kù)文件:用于預(yù)置的在程序開發(fā)過程中可能需要用到的各種函數(shù)。 引擎文件庫(kù):封裝了常用的成套操作,以便開發(fā)過程中快速調(diào)用。 驅(qū)動(dòng)文件庫(kù):封裝了常用外接單位的驅(qū)動(dòng)程序。 執(zhí)行文件庫(kù):封裝了程序需要高頻執(zhí)行的程序。 擴(kuò)展文件庫(kù):用以存放各種需要用到的框架擴(kuò)展文件。 組件框架文件:包括API框架文件、前端程序框架文件、后端程序框架文件(包括伺服程序)、進(jìn)程管理器框架,及其組件。 模版文件庫(kù):內(nèi)置有需要輸出的前端程序的模版文件。 API文件庫(kù):內(nèi)置有在程序開發(fā)過程當(dāng)中需要常用到的API文件,用于程序內(nèi)外部通信。8.根據(jù)權(quán)利要求7所述的開發(fā)框架,其特征在于:所述的引導(dǎo)程序、函數(shù)庫(kù)文件、引擎文件、驅(qū)動(dòng)文件、執(zhí)行文件、擴(kuò)展文件、組件框架文件、API文件,包括用戶根據(jù)項(xiàng)目需要所新開發(fā)或二次開發(fā)的此類文件。9.根據(jù)權(quán)利要求8所述的開發(fā)框架,其特征在于:所述的引擎文件還包擴(kuò)常用網(wǎng)絡(luò)通信協(xié)議的實(shí)現(xiàn)、與常用數(shù)據(jù)庫(kù)、服務(wù)、第三方程序交互程序的實(shí)現(xiàn)、對(duì)硬件設(shè)備及接口的驅(qū)動(dòng)文件的實(shí)現(xiàn)、程序操作的封裝。10.根據(jù)權(quán)利要求9所述的開發(fā)框架,其特征在于:所述的驅(qū)動(dòng)文件庫(kù)所指的外接單位還包括硬件設(shè)備、軟件程序和虛擬設(shè)備。
【文檔編號(hào)】G06F9/445GK105824616SQ201610132369
【公開日】2016年8月3日
【申請(qǐng)日】2016年3月7日
【發(fā)明人】林友哲
【申請(qǐng)人】林友哲