摘要:為實現(xiàn)智能交通系統(tǒng)中人與機器之間的靈活交互,分析人機界面的功能,詳細介紹了智能交通系統(tǒng)中基于多平臺的人機界面的設(shè)計過程。闡述了ARM-uClinux系統(tǒng)軟件構(gòu)架以及如何在進程間傳遞信息以實現(xiàn)多進程協(xié)調(diào)工作。設(shè)計了基于短消息服務(wù)人機交互方法。鑒于Web服務(wù)的廣泛性,提出了Web服務(wù)作為另一種交互平臺,在智能交通人機界面應(yīng)用的可行性和實現(xiàn)方法。試驗結(jié)果證明,基于多平臺的人機界面的可靠性,并可以改善智能交通系統(tǒng)的服務(wù)。
關(guān)鍵詞:智能交通系統(tǒng); 人機交互; Linux進程間通信; 短消息服務(wù)
中圖分類號:TP242.6文獻標(biāo)志碼:A
文章編號:1001-3695(2007)12-0246-03
現(xiàn)有的城市交通方式中,地鐵、輕軌、公共汽車等密集公共交通系統(tǒng)在空間和時間上缺乏靈活性;私人汽車過度使用造成交通堵塞,能源大量消耗,在使用上存在一定的局限性(并非任何人都會駕駛)。為了彌補密集公共交通和非機動交通的不足,在歐盟和國家自然科學(xué)基金資助下,由上海交通大學(xué)機器人研究所研究的CyberC3(cybernetic technologies for cars in Chinese cities)項目,即自動控制技術(shù)在中國城市交通車輛系統(tǒng)中的應(yīng)用,能夠提供一套可運行的無人駕駛道路交通系統(tǒng)。
人機界面是涉及計算機科學(xué)、心理學(xué)、認(rèn)知科學(xué)和人因工程學(xué)等的交叉學(xué)科。以人為本的人機界面設(shè)計思想力圖通過對人機交互中任務(wù)模型、個體行為、用戶模型等要素進行分析研究,縮短人與計算機之間的認(rèn)知距離,提供更友好的服務(wù)。
傳統(tǒng)交通系統(tǒng)中,乘客與交通工具之間基本沒有交互,不能為乘客提供人性化和個性化的服務(wù)。智能交通系統(tǒng)中的人機交互系統(tǒng)提供一個人與機器溝通的渠道。它由人機界面、通信介質(zhì)、中央控制室計算機系統(tǒng)構(gòu)成。其中人機界面直接決定了智能交通系統(tǒng)能夠提供的服務(wù)質(zhì)量。智能交通系統(tǒng)中,車輛在運營線路里自動駕駛,乘客可通過固定站點的人機界面向中央控制室發(fā)出乘車請求,亦可通過SMS方式,按照規(guī)定的格式向中央控制室發(fā)出短消息來呼叫車輛;更廣泛的,乘客可通過Web服務(wù)在世界的任何角落預(yù)訂將來的某個時間使用智能交通系統(tǒng)。人機交互系統(tǒng)的機構(gòu)如圖1所示。
1基于ARM-uClinux系統(tǒng)的人機界面設(shè)計
S3C44B0X是三星公司基于ARM7TDMI內(nèi)核推出的RISC處理器芯片,片內(nèi)無內(nèi)存控制器(MMU),自帶8 KB cache、LCD控制器、2通道UART、4通道DMA、8通道12位ADC、RTC、IIC/IIS總線、SIO和成對時鐘的PLL等,可工作在64 MHz頻率下,實現(xiàn)31.84 M BogoMIPS的運算速度[2]。
uClinux是micro-control-Linux,可理解為“面向微控制領(lǐng)域而設(shè)計的Linux系統(tǒng)”。其開放源代碼。uClinux內(nèi)核采用對libc作了精簡而得的uClibc,模塊化的設(shè)計使它通過對內(nèi)核的重新配置,實現(xiàn)系統(tǒng)運行所需要資源的最小化。uClinux自帶了完整的TCP/IP協(xié)議棧,方便基于網(wǎng)絡(luò)的應(yīng)用開發(fā)。uClinux同標(biāo)準(zhǔn)Linux的最大區(qū)別就在于內(nèi)存管理,它去除了標(biāo)準(zhǔn)Linux的虛擬存儲器管理功能,既減小了內(nèi)核的體積,又增強了系統(tǒng)的實時性能[3]。
基于ARM-uClinux系統(tǒng)的人機界面安裝于固定的車站。乘客可通過該人機界面向中央控制室計算機系統(tǒng)發(fā)出乘車請求,中央控制室在收到該請求時,將該信息記錄于本地乘客需求數(shù)據(jù)庫,并根據(jù)當(dāng)前車輛運行狀態(tài)和乘客需求情況作出派遣決策;作為人機交互的回饋,中央控制室及時通過人機界面提供當(dāng)前的交通運營信息,乘客可通過人機界面得知預(yù)訂的車輛最快到達時間等信息。為實現(xiàn)這些功能,人機界面必須具備識別乘客請求的能力、與中央控制室計算機通信的能力、將交通信息顯示出來的能力等。在本文的工作中,筆者在車站人機界面與中央控制室之間架設(shè)了局域網(wǎng),車站人機界面采用按鈕作為乘客發(fā)出請求的媒質(zhì),采用點陣式液晶顯示屏(LCD)作為顯示接口,從而形成可實現(xiàn)預(yù)訂功能的基本平臺。該平臺上運行的軟件構(gòu)架如圖2所示。
在ARM-uClinux系統(tǒng)中,uClinux內(nèi)核(包含顯示LCD的驅(qū)動程序)存放于norFlash,改flash上的文件系統(tǒng)為Romfs文件系統(tǒng)。該系統(tǒng)速度快、穩(wěn)定可靠,但只能讀。JFFS2是由Red Hat公司開發(fā)專門面向flash設(shè)備的日志文件系統(tǒng)。該系統(tǒng)建立在Axis通信公司的JFFS的基礎(chǔ)之上,可實現(xiàn)文件在flash介質(zhì)上的讀和寫。在uClinux啟動完成后,自動掛載nandFlash中的JFFS2文件系統(tǒng),讀取其中的shell腳本和應(yīng)用程序,并通過該腳本啟動四個主要的進程,即uRecoSend、 uTTYs1、urFIFOsNet和urNetsFIFO。由于需要在不同的進程間傳遞信息,以協(xié)同工作,故需要采用Linux進程間通信機制。Linux進程間通信機制主要有:
a)無名管道及有名管道(pipe)。前者用于具有親緣關(guān)系進程間的通信,后者允許無親緣關(guān)系進程間的通信。
b)信號(signal)。基于定義好的信號集合,用于通知接受進程(自身或其他進程)有某種事件發(fā)生。
c)消息隊列(message FIFO)。用于在被賦予權(quán)限的進程間通過隊列的方式傳遞少量的消息。
d)共享內(nèi)存(shared memory)。使多個進程可以訪問同一塊內(nèi)存空間,是最快的可用IPC形式。
e)信號量(semaphore)。協(xié)調(diào)資源的訪問,作為進程間以及同一進程不同線程之間的同步手段[4]。
本系統(tǒng)中需要在非親緣關(guān)系的進程間傳遞小數(shù)據(jù)量的信息,選用其中的命名管道方式。于是分別建立三個命名管道,即FIFO_TTYS、FIFO_NETI和FIFO_NETO。
S3C44B0X一共有71個通用可編程I/O口,大多是功能復(fù)用的端口。由于不用IIC/IIS總線,選用其中的GPF0、1、5、6、7、8口作為按鈕的輸入口。uRecoSend以固定的時間間隔檢測按鈕對應(yīng)管腳的狀態(tài),以識別用戶的請求,并在間隔時間內(nèi)通過usleep函數(shù)掛起進程,讓出CPU控制權(quán),從而實現(xiàn)多任務(wù)。uTTYs1負責(zé)從命名管道中讀取一條消息,并將消息寫入運行于內(nèi)核態(tài)的LCD驅(qū)動程序,由LCD驅(qū)動程序?qū)崿F(xiàn)LCD的刷新和動態(tài)顯示。urFIFOsNet負責(zé)從命名管道中讀取信息,并將該信息通過TCP協(xié)議發(fā)送到遠程的計算機。urNetsFIFO負責(zé)從遠程計算機接收信息,并將給信息寫入命名管道。多任務(wù)協(xié)調(diào)工作,從而實現(xiàn)了基于ARM-uClinux的人機界面功能。
2基于SMS的人機界面設(shè)計
SMS(short message service,短消息服務(wù))就是通過GSM網(wǎng)絡(luò)提供的傳輸有限長度的文本數(shù)字或文字信息的服務(wù)。這種信息的傳輸是在GSM手機之間或手機與其他短消息實體之間通過業(yè)務(wù)中心進行文字信息收發(fā)實現(xiàn)的。為實現(xiàn)計算機與GSM網(wǎng)絡(luò)的通信,采用西門子MC35i的GPRS模塊,該modem模塊與計算機通過RS-232通信,支持雙頻900/1800 MHz,支持文本和PDU(protocol description unit)編碼方式。文本模式是基于字符的協(xié)議,應(yīng)用將消息按簡單文本傳遞到手機組成TPDU,它僅支持英文字符。PDU模式將組裝短消息TPDU的任務(wù)留給應(yīng)用完成,比起文本模式可以提供更為強大的功能,但其較文本模式復(fù)雜。
AT指令是Hayes公司建立的對modem進行操作的指令集,現(xiàn)已成為所有modem事實上的標(biāo)準(zhǔn),幾乎所有的modem均支持AT指令集。通過AT命令可設(shè)置SMS中心號碼,查詢、讀取、發(fā)送短消息。
人機界面設(shè)計主要工作在于開發(fā)與modem通信的軟件,基于此實現(xiàn)人機交互的功能。該人機界面提供用戶通過手機短信呼叫車輛的接口,故需要約定短信的格式??紤]到短消息的長度和信息量的需要,本文采用了如下的格式:[CC預(yù)訂人姓名YYYYMMDD(預(yù)訂日期) HHMM(預(yù)訂時間) 上海(起始站點) 北京(目標(biāo)站點) 2(人數(shù)) 附言]。SMS服務(wù)軟件運行的流程圖如圖3所示。
在收到用戶發(fā)出的正確呼叫請求后,SMS軟件將用戶發(fā)來的信息重新組織,形成確認(rèn)消息,并附加一個該請求的序列號,用戶可根據(jù)該序列號刪除掉該請求。用戶也可以用其他平臺(如接下來的基于Web服務(wù)的人機界面)查詢、修改、刪除已經(jīng)發(fā)出的呼叫請求。
3基于Web服務(wù)的人機界面設(shè)計
Web服務(wù)是一種可以用來解決跨網(wǎng)絡(luò)應(yīng)用集成問題的開發(fā)模式,實現(xiàn)了最廣泛的應(yīng)用軟件集成,彌補了傳統(tǒng)軟件開發(fā)模型的限制。Web服務(wù)的主要特點之一是,客戶端訪問Web服務(wù)只需要通過因特網(wǎng)標(biāo)準(zhǔn)協(xié)議,如HTTP或XML,以及SOAP,不需要專門的協(xié)議,如RPC或IIOP。因為HTTP協(xié)議和XML都是與平臺無關(guān)的標(biāo)準(zhǔn)協(xié)議,可以被任何主流操作系統(tǒng)正確理解和解釋。用戶可以通過個人電腦或帶有Web瀏覽功能的智能終端訪問服務(wù)站點,實現(xiàn)人機界面的功能。
為了能夠根據(jù)不同的用戶動態(tài)的生成與之相關(guān)的網(wǎng)頁,需要使用到動態(tài)網(wǎng)頁技術(shù)。JSP(Java server pages)是由Sun Microsystems公司倡導(dǎo)、許多公司參與建立的一種動態(tài)網(wǎng)頁技術(shù)標(biāo)準(zhǔn)。Web服務(wù)器在遇到訪問JSP網(wǎng)頁的請求時,首先執(zhí)行其中的程序段,然后將執(zhí)行結(jié)果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數(shù)據(jù)庫、重新定向網(wǎng)頁等,以實現(xiàn)建立動態(tài)網(wǎng)頁所需要的功能[7]。
基于Web服務(wù)的人機界面由一系列JSP網(wǎng)頁構(gòu)成Web站點實現(xiàn)。筆者采用開源的Apache軟件作為Web服務(wù)器,Tomcat作為JSP容器,MySQL作為后臺服務(wù)的網(wǎng)絡(luò)數(shù)據(jù)庫。每個JSP網(wǎng)頁基本均需連接和操作數(shù)據(jù)庫,所以需添加如下代碼:
〈%@ page import=\"java.sql.*\" %〉
〈%@ page import=\"java.util.*\" %〉
〈%@ page import=\"java.io.*\" %〉
〈%@ page import=\"java.text.DateFormat\" %〉
〈%@ page contentType=\"text/html;charset=GB2312\" %〉
〈%
Class.forName(\"org.gjt.mm.mysql.Driver\").newInstance();
String url =
\"jdbc:mysql://localhost/cyberc3?user=rootpassword=root\";
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
%〉
用戶可以通過本地瀏覽器訪問智能交通網(wǎng)絡(luò)人機界面的站點。網(wǎng)絡(luò)人機界面提供給用戶注冊用戶、呼叫車輛、查詢記錄,跨平臺查詢修改的接口。用戶登錄網(wǎng)絡(luò)人界面后,可進入呼叫界面,如圖4所示。
在該交互頁面中,采用JavaScript腳本檢查用戶的輸入是否合法,并給予適當(dāng)提示。用戶可根據(jù)智能交通運行的線路圖,預(yù)訂某具體時間使用智能交通系統(tǒng)的源站點和目標(biāo)站點。對于智能交通人機界面本身的不足,也可以通過用戶留言提交給智能交通系統(tǒng)管理員,從而提供更完善的人機交互服務(wù)。
4多平臺人機界面的數(shù)據(jù)共享
智能交通系統(tǒng)人機界面基于不同的平臺。為了便于管理和方便用戶,需要在不同平臺之間共享數(shù)據(jù)。數(shù)據(jù)庫是以某種文件結(jié)構(gòu)存儲的一系列信息表。采用運行于后臺的數(shù)據(jù)庫系統(tǒng)作為共享數(shù)據(jù)的倉庫,為各平臺提供存儲、查詢、刪除等功能接口。中央控制室基于C#開發(fā)的管理員軟件負責(zé)與ARM-uClinux人機界面通信,C#軟件可以通過ADO.NET應(yīng)用程序接口連接MySQL數(shù)據(jù)庫?;赟MS的人機界面的服務(wù)軟件基于Visual C++開發(fā),可以通過開放數(shù)據(jù)庫互連(ODBC)方式連接MySQL數(shù)據(jù)庫?;赪eb服務(wù)的人機界面使用JSP動態(tài)網(wǎng)頁技術(shù),故采用Java數(shù)據(jù)庫連接(JDBC)接口連接MySQL數(shù)據(jù)庫。管理員可以通過MySQL的外殼,以控制臺的方式,管理共享數(shù)據(jù)庫。整個數(shù)據(jù)共享的軟件層次如圖5所示。
中央控制室管理員在MySQL的外殼上通過SQL語句建立表cyberc3_user_table和user_request_table。前者用于存放智能交通所有注冊用戶的信息;后者存放用戶通過各平臺發(fā)來呼叫請求和相關(guān)信息。多平臺在中央控制室計算機上的服務(wù)程序?qū)⑵浣邮盏降挠脩粽埱髮懭雞ser_request_table,故而可以統(tǒng)一管理。
5結(jié)束語
在實驗中,基于ARM-uClinux平臺的人機界面可以準(zhǔn)確識別乘客的呼叫請求并提示乘客,來自中央控制室的交通信息也可以通過網(wǎng)絡(luò)傳輸至車站人機界面并顯示?;赟MS平臺的人機界面可以通過公用GSM網(wǎng)絡(luò)實現(xiàn)中央控制室與用戶之間的交互。用戶也可以通過個人電腦的瀏覽器訪問和使用智能交通的網(wǎng)絡(luò)人機界面。乘客也可通過網(wǎng)絡(luò)人機界面查詢和修改來自于各平臺的呼叫請求。實驗證明了基于多平臺人機界面的可行性。為適應(yīng)大規(guī)模的更廣泛的應(yīng)用,該人機界面的功能還需進一步完善。
參考文獻:
[1]王笑京,沈鴻飛,汪林.中國智能交通系統(tǒng)發(fā)展戰(zhàn)略研究[J].交通運輸系統(tǒng)工程與信息, 2006,6(4):9-12.
[2]S3C44B0X risc microprocessor datasheet[EB/OL].[2006-09].http://www.samsung.com/Products/Semiconductor/MobileSoC/ApplicationProcessor/ARM7Series/S3C44B0/S3C44B0UsersManaual.pdf.
[3]CORBET J, RUBINI A, KROAB-HARTMAN G. Linux device driver[M].2nd ed.南京:東南大學(xué)出版社,2006:42-70.
[4]STEVENS R. UNIX環(huán)境高級編程[M].尤晉元,譯.北京:機械工業(yè)出版社,2004:320-354.
[5]羅仕鑒.人機界面設(shè)計[M].北京:機械工業(yè)出版社,2002:25-61.
[6]毛德操,胡希明.嵌入式系統(tǒng)——采用公開源代碼和StrongARM/Xscale處理器[M].杭州:浙江大學(xué)出版社,2003:411-559.
[7]何川.JSP編程實踐[M].北京:清華大學(xué)出版社,2002:32-85.
“本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文”