都飛翔 楊靜 史健芳
摘 要: 針對(duì)目前智能交通發(fā)展迅速,功能擴(kuò)展要求較高,一般框架搭建的智能交通控制平臺(tái)功能較為單一,提出基于Flask框架的智能交通控制平臺(tái)。Flask是隨著Python興起的一種小型可擴(kuò)展框架,功能可根據(jù)相應(yīng)的擴(kuò)展包進(jìn)行擴(kuò)展,從而構(gòu)建B/S模式智能交通控制系統(tǒng)。該控制系統(tǒng)可以通過(guò)IPv4或IPv4映射后的IPv6地址進(jìn)行Web訪問(wèn)登錄,并進(jìn)行方案選擇,數(shù)據(jù)查詢與控制進(jìn)行多線程獨(dú)立分開(kāi),互不影響,從而更加便捷地實(shí)現(xiàn)雙協(xié)議遠(yuǎn)程控制。
關(guān)鍵詞: Flask; 智能交通; 樹(shù)莓派; B/S; 遠(yuǎn)程控制; 多線程
中圖分類號(hào): TN876?34; TP39 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2018)13?0088?04
Abstract: With the rapid development of intelligent transportation, the higher requirement is proposed for functional expansion, but the function of the generally?established intelligent traffic control platform is relatively single. Aiming at this problem, an intelligent traffic control platform based on Flask framework is proposed. Flask is a small scalable framework, which is developed with Python. The function of the framework can be extended according to the corresponding extension package, so as to construct the B/S mode intelligent traffic control platform. The Web access and login, and scheme selection are performed for the control system through IPv4 address or IPv6 address after IPv4 mapping. The data query and control are independently separated for multithreading, and mutually affected, which can realize the dual?protocol remote control conveniently.
Keywords: Flask; intelligent traffic; Raspberry Pi; B/S; remote control; multithreading
當(dāng)前我國(guó)城市和城市交通的發(fā)展處于挑戰(zhàn)和機(jī)遇并存的關(guān)鍵歷史階段[1]。一方面,隨著城鎮(zhèn)化、機(jī)動(dòng)化的持續(xù)快速發(fā)展,城市交通擁堵加劇、事故頻發(fā),面臨著嚴(yán)峻挑戰(zhàn);另一方面,我國(guó)城市處在老城改造、新城建設(shè)的城市大發(fā)展時(shí)期,是實(shí)現(xiàn)智能交通的最佳時(shí)機(jī)。智能交通的主要特點(diǎn)是將先進(jìn)的信息技術(shù)、數(shù)據(jù)通信傳輸技術(shù)、電子控制技術(shù)、傳感器技術(shù)以及計(jì)算機(jī)處理技術(shù)等有效的綜合用于整個(gè)交通系統(tǒng),從而建立起一種在大范圍內(nèi)、全方位發(fā)揮作用的實(shí)時(shí)、準(zhǔn)確、高效的智能交通綜合管理系統(tǒng)。其目的是使人、車、路密切配合、和諧統(tǒng)一,極大地提高交通運(yùn)輸效率,保障交通安全,緩解交通問(wèn)題,改善環(huán)境質(zhì)量和提高能源利用率。
樹(shù)莓派Raspberry Pi支持多語(yǔ)言編程[2],功能強(qiáng)大,便于攜帶且性價(jià)比高。樹(shù)莓派的靈巧和其強(qiáng)大的擴(kuò)展性,使它可以應(yīng)用在多個(gè)領(lǐng)域。基于樹(shù)莓派的智能交通控制平臺(tái),就是樹(shù)莓派在智能交通上的新應(yīng)用。同時(shí),樹(shù)莓派官方強(qiáng)調(diào)最適合的編程語(yǔ)言是Python,所以這里將基于Python的Flask框架與樹(shù)莓派相結(jié)合[3],F(xiàn)lask是一種微小框架[4],它具有極強(qiáng)的可擴(kuò)展性,從而使開(kāi)發(fā)變得簡(jiǎn)單易行且無(wú)冗余功能。本文所提及的智能交通信號(hào)燈控制系統(tǒng)使用了基于Raspberry Pi硬件平臺(tái),通過(guò)Web服務(wù)展現(xiàn)給用戶,該平臺(tái)采用Web服務(wù)器[5?6]、控制系統(tǒng)、數(shù)據(jù)庫(kù)于一體的控制體系,通過(guò)在服務(wù)端構(gòu)建Flask環(huán)境,形成B/S工作模式,客戶可以通過(guò)瀏覽器就可以遠(yuǎn)程控制系統(tǒng)。
Flask是基于Python的框架,編程語(yǔ)言使用Python,需要搭建一個(gè)Python集成開(kāi)發(fā)環(huán)境,本文直接使用樹(shù)莓派官方自帶的Python 3.5進(jìn)行開(kāi)發(fā)。安裝Flask最便捷的方式是使用虛擬環(huán)境。虛擬環(huán)境是Python解釋器的一個(gè)私有副本,這個(gè)環(huán)境安裝的擴(kuò)展包不會(huì)與全局的解釋器相互影響。安裝及配置如下[7?8]:
$ python?m venv myvenv
$ source venv/bin/activate
$(venv)$ pip install flask
第一行為創(chuàng)建虛擬環(huán)境,第二行為激活虛擬環(huán)境,第三行為在虛擬環(huán)境中安裝Flask。
同時(shí)需要將主要的擴(kuò)展包進(jìn)行安裝[9]:
$(venv)$ pip install flask?bootstrap
$(venv)$ pip install flask?sqlalchemy
$(venv)$ pip install flask?mail
這三行代碼主要將網(wǎng)頁(yè)框架、數(shù)據(jù)庫(kù)管理、郵件擴(kuò)展包進(jìn)行安裝。