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