王明非,魯統(tǒng)利,王天軍
(1.上海交通大學(xué) 汽車工程研究院,上海 200240;2.上海通用汽車有限公司,上海 201201)
汽車靜態(tài)測試是利用測試儀通過OBDII接口與汽車電子控制單元(Electronic Control Unit,ECU)的診斷系統(tǒng)進(jìn)行交互式通訊,從而獲取汽車各個(gè)控制單元的狀態(tài)數(shù)據(jù)和故障信息。在此過程中,測試儀可以控制汽車各部件的工作和設(shè)定其運(yùn)行狀態(tài)。此外,測試儀還具有元件測試、讀取數(shù)據(jù)流、匹配標(biāo)定、代碼升級等功能。汽車靜態(tài)測試[1]是對實(shí)車進(jìn)行離線測試,是對汽車動(dòng)態(tài)測試[2]的簡化。目前其測試儀程序的調(diào)試工作也都是在實(shí)車上進(jìn)行的。
KWP2000診斷協(xié)議是由國際標(biāo)準(zhǔn)化組織下的車載電氣電子設(shè)備分委員會(huì)制定的,是目前相對比較完善,被廣泛應(yīng)用的一種診斷協(xié)議[1]。
現(xiàn)在世界上各大汽車制造商,在總裝線終端檢測時(shí)都要使用測試儀對汽車進(jìn)行靜態(tài)測試和動(dòng)態(tài)測試。而測試儀程序的調(diào)試工作卻是在實(shí)車上進(jìn)行。這種調(diào)試方法存在以下幾個(gè)缺陷:(1)汽車運(yùn)行達(dá)到期望狀態(tài)所用時(shí)間長。(2)故障碼設(shè)置不方便,甚至有時(shí)為了獲得故障碼,需在實(shí)車上設(shè)置實(shí)際的物理故障。(3)需要大量的車輛和人員的參與。在生產(chǎn)實(shí)際中以上幾個(gè)缺陷使汽車測試儀的測試程序調(diào)試過程十分繁瑣且成本高。
為解決生產(chǎn)實(shí)際中測試儀調(diào)試存在的這些問題,基于上述背景,本文通過對KWP2000通信協(xié)議和汽車靜態(tài)測試通信數(shù)據(jù)的研究,融合汽車診斷技術(shù)和計(jì)算機(jī)仿真技術(shù),開發(fā)了一套汽車靜態(tài)測試儀程序調(diào)試系統(tǒng)(以下簡稱“調(diào)試系統(tǒng)”),率先實(shí)現(xiàn)了測試儀與汽車K總線通信數(shù)據(jù)模擬,使測試程序調(diào)試的效率大大提高,具有較高的實(shí)用價(jià)值和實(shí)際意義。
在調(diào)試過程中,測試系統(tǒng)向調(diào)試系統(tǒng)發(fā)送請求消息,調(diào)試系統(tǒng)根據(jù)請求消息(輸入)解析出響應(yīng)消息(輸出)反饋給測試系統(tǒng),并按照請求消息對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行動(dòng)態(tài)修改;調(diào)試系統(tǒng)使用者在軟件界面上操作,對調(diào)試系統(tǒng)發(fā)送控制消息,調(diào)試系統(tǒng)根據(jù)使用者的控制輸入改變程序數(shù)據(jù)庫中的數(shù)據(jù),實(shí)現(xiàn)對駕駛員操作和故障碼生成的模擬。調(diào)試系統(tǒng)原理圖如圖1所示。
KWP2000根據(jù)開放系統(tǒng)互連(Open Systems Interconnection,OSI)的7層基本參考模型,從整體結(jié)構(gòu)上將通信系統(tǒng)分為3層:(1)應(yīng)用層(第7層,由ISO14230-3描述)。(2)數(shù)據(jù)鏈路層(第2層,由ISO14230-2描述)。(3)物理層(第1層,由ISO14230-1描述)。
以某采用KWP2000通信的車型為研究對象,該車通信協(xié)議規(guī)定的報(bào)文結(jié)構(gòu)格式見表1[3]??梢园凑諈f(xié)議規(guī)定解析請求消息并給出符合報(bào)文結(jié)構(gòu)規(guī)定的響應(yīng)消息。
表1 KWP2000報(bào)文結(jié)構(gòu)
在分析KWP2000規(guī)定的數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)上,利用英特佩斯電子控制系統(tǒng)公司的NeoVI FIRE通信硬件[4]和PC機(jī)(含USB接口)組成通信調(diào)試系統(tǒng),可實(shí)現(xiàn)KWP2000協(xié)議通信的物理層和數(shù)據(jù)鏈路層。在應(yīng)用層上設(shè)計(jì)軟件系統(tǒng)實(shí)現(xiàn)邏輯判斷和運(yùn)算功能,就能實(shí)現(xiàn)汽車ECU的測試通信模擬。其中,整個(gè)系統(tǒng)開發(fā)的工作重點(diǎn)是軟件系統(tǒng)設(shè)計(jì),即建立軟件模型與邏輯實(shí)現(xiàn)。軟件設(shè)計(jì)的重點(diǎn)是在邏輯上實(shí)現(xiàn)按照協(xié)議解析請求消息和控制消息,即解析模塊設(shè)計(jì)。
依據(jù)NeoVI FIRE的數(shù)據(jù)結(jié)構(gòu)和應(yīng)用函數(shù)[4]設(shè)計(jì)了:(1)通信接口模塊,實(shí)現(xiàn)了搭載報(bào)文消息的結(jié)構(gòu)體數(shù)組的收發(fā)。(2)解析模塊流程的第1、2、5、6步,實(shí)現(xiàn)報(bào)文消息與結(jié)構(gòu)體數(shù)組格式轉(zhuǎn)換收發(fā)。
按照該車型的KWP2000協(xié)議規(guī)定[3]和調(diào)試系統(tǒng)功能分析設(shè)計(jì)了:(1)解析模塊流程的3、4步,實(shí)現(xiàn)請求和控制消息解析與響應(yīng)。(2)數(shù)據(jù)庫模塊,模擬汽車ECU數(shù)據(jù)。(3)系統(tǒng)主體,調(diào)用各模塊功能以實(shí)現(xiàn)主功能。
按照調(diào)試過程中的具體操作需要,設(shè)計(jì)了設(shè)置、顯示等模塊。
采用NeoVI FIRE通信硬件[4]做二次開發(fā),搭建調(diào)試系統(tǒng)物理通信線路。硬件系統(tǒng)組成和連接如圖2所示。
整個(gè)軟件系統(tǒng)的開發(fā)采用VC++/ MFC平臺(tái)。軟件系統(tǒng)功能由模塊化設(shè)計(jì)實(shí)現(xiàn)——對話框模塊、接口模塊、解析模塊、數(shù)據(jù)庫以及系統(tǒng)主體;對話框模塊分設(shè)置、顯示、控制分模塊。設(shè)置模塊具有設(shè)置數(shù)據(jù)庫的功能;接口模塊實(shí)現(xiàn)NeoVI FIRE結(jié)構(gòu)體數(shù)組的收發(fā)功能;控制模塊可從用戶界面接收控制指令并通過系統(tǒng)主體傳遞給解析模塊,實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)修改;解析模塊從結(jié)構(gòu)體數(shù)組中識(shí)別出請求消息,解析請求消息和控制命令,給出符合NeoVI FIRE結(jié)構(gòu)體數(shù)組格式的響應(yīng)消息,并按照請求消息、控制消息修改數(shù)據(jù)庫數(shù)據(jù);顯示模塊可以實(shí)現(xiàn)通信數(shù)據(jù)的實(shí)時(shí)顯示和動(dòng)畫模擬。其中對話框模塊、接口模塊和解析模塊通過動(dòng)態(tài)連接庫編程實(shí)現(xiàn);系統(tǒng)主體調(diào)用各模塊動(dòng)態(tài)連接庫的導(dǎo)出函數(shù)調(diào)用該模塊的功能;由于ECU數(shù)據(jù)占用PC機(jī)空間很小,采用程序運(yùn)行時(shí)的內(nèi)存即可實(shí)現(xiàn)數(shù)據(jù)庫功能。調(diào)試系統(tǒng)軟件結(jié)構(gòu)和數(shù)據(jù)流示意圖如圖3所示。
使用NeoVI FIRE通信硬件提供給用戶的應(yīng)用函數(shù)可調(diào)用通信硬件的功能,實(shí)現(xiàn)通信接口的打開、關(guān)閉和搭載報(bào)文的結(jié)構(gòu)體的接收、發(fā)送。接口模塊流程圖如圖4所示。
解析模塊的功能是根據(jù)協(xié)議解析請求命令和控制命令,通過運(yùn)算得出響應(yīng)消息,再將響應(yīng)消息封裝在結(jié)構(gòu)體數(shù)組中發(fā)送給系統(tǒng)主體,并修改數(shù)據(jù)庫數(shù)據(jù)。這些過程模擬了汽車ECU數(shù)據(jù)的調(diào)用和改變,從而實(shí)現(xiàn)對實(shí)車K總線通信數(shù)據(jù)的模擬。
請求命令解析過程如圖5所示,解析模塊從系統(tǒng)讀取結(jié)構(gòu)體數(shù)組,并從中解析出請求消息的頭和數(shù)據(jù)(第1、2步)。然后根據(jù)請求消息的數(shù)據(jù)運(yùn)算出響應(yīng)消息的數(shù)據(jù),根據(jù)請求消息的頭和響應(yīng)消息數(shù)據(jù)運(yùn)算出響應(yīng)消息的頭(第3、4步)。最后設(shè)置封裝響應(yīng)消息的結(jié)構(gòu)體數(shù)組并發(fā)送給系統(tǒng)主體。
其中第3步,根據(jù)請求消息中的ECU、 SID(Service Identification,服務(wù)號)以及其它數(shù)據(jù)信息解析出響應(yīng)消息數(shù)據(jù)的過程,是實(shí)現(xiàn)汽車診斷通信數(shù)據(jù)模擬的關(guān)鍵。根據(jù)SID的不同(汽車靜態(tài)測試中常用的SID共計(jì)17種),調(diào)試系統(tǒng)對請求消息的響應(yīng)動(dòng)作大致可分為4大類。
(1)直接一次響應(yīng)。按照協(xié)議要求和測試儀的測試通過期望值,對以下服務(wù)號:SID=10(開啟診斷會(huì)話)/ 11(ECU重設(shè))/ 2C(動(dòng)態(tài)定義本地標(biāo)識(shí)符)/ 31(本地標(biāo)識(shí)符開啟程序)/ 3E(測試儀參與)/ 81(開啟通信)/ 82(結(jié)束通信),調(diào)試系統(tǒng)只需給測試儀發(fā)送1條正響應(yīng)消息。按照協(xié)議規(guī)定,測試儀收到這條響應(yīng)消息就會(huì)認(rèn)為本次請求測試通過。例如,某請求消息中SID=81,表示測試儀請求開啟與汽車ECU的通信,這時(shí)調(diào)試系統(tǒng)只需在響應(yīng)消息中給出正響應(yīng)標(biāo)識(shí)符C1,測試儀就會(huì)認(rèn)為其與汽車ECU的通信已經(jīng)開啟,下一步就可以發(fā)出其它服務(wù)的請求。
(2)數(shù)據(jù)庫一次響應(yīng)。以下服務(wù)號:SID=13(讀診斷故障碼)/ 18(根據(jù)狀態(tài)讀診斷故障碼)/ 19(根據(jù)狀態(tài)讀診斷故障碼狀態(tài))/ 1A(讀ECU身份)/ 21(根據(jù)本地標(biāo)識(shí)符讀狀態(tài))/ 22(根據(jù)公共標(biāo)識(shí)符讀狀態(tài))/ 27(安全進(jìn)入),是測試儀在請求獲得汽車ECU數(shù)據(jù)。測試儀發(fā)出這個(gè)請求后不僅期望得到正響應(yīng)標(biāo)識(shí)符,還需要得到期望的數(shù)據(jù),這類數(shù)據(jù)包括ECU身份(汽車VIN號)、故障碼、汽車各單元狀態(tài)(如發(fā)動(dòng)機(jī)轉(zhuǎn)速、油溫、元件電壓,自動(dòng)變速器擋位、安全氣囊狀態(tài)等),安全進(jìn)入種子數(shù)據(jù)等等。對包含這些服務(wù)號的請求,調(diào)試系統(tǒng)要對其做出正響應(yīng)并在數(shù)據(jù)庫中檢索測試儀需要的數(shù)據(jù),然后將正響應(yīng)標(biāo)識(shí)符和檢索到的數(shù)據(jù)組合成響應(yīng)消息并發(fā)給測試儀。測試儀收到這樣的響應(yīng)消息后,會(huì)認(rèn)為是汽車ECU發(fā)送了這些數(shù)據(jù),根據(jù)這些數(shù)據(jù)獲知并分析汽車各單元的狀態(tài)或故障信息。如果有異常狀態(tài)或故障碼,測試儀界面就顯示測試失敗。數(shù)據(jù)庫數(shù)值的格式和數(shù)值精度要靠系統(tǒng)使用者人工設(shè)定。例如,某請求消息中SID=21,要求讀取PID=01(某車發(fā)動(dòng)機(jī)全部狀態(tài)數(shù)據(jù))的狀態(tài)(見數(shù)據(jù)庫設(shè)計(jì)),則調(diào)試系統(tǒng)將數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù)打包成響應(yīng)消息,反饋給測試儀。測試儀收到這些數(shù)據(jù)就會(huì)進(jìn)行判斷所讀取的元件狀態(tài)是否滿足測試要求,若滿足測試要求則可進(jìn)行接下來的測試項(xiàng)目。又如SID=18,測試儀期望讀取ECU的故障碼,則調(diào)試系統(tǒng)將數(shù)據(jù)庫中設(shè)置的故障碼發(fā)給測試儀,測試儀收到故障碼后,會(huì)在界面上顯示故障,并在最終的測試報(bào)告中記錄這個(gè)故障。
(3)直接一次響應(yīng)+數(shù)據(jù)庫操作。符合這種情形的服務(wù)是SID=14(清除診斷信息)/ 3B(根據(jù)本地標(biāo)識(shí)符寫數(shù)據(jù))。測試儀不僅能從汽車ECU讀數(shù)據(jù),還可以向ECU寫數(shù)據(jù),比如汽車VIN碼(17位數(shù)字或字母,相當(dāng)于汽車“身份證號”,俗稱車輛17位碼,每輛車的VIN碼是唯一的)。如果通過請求得到的VIN號是“錯(cuò)誤”的(與測試儀測試程序中設(shè)定VIN號不一致),則會(huì)為汽車ECU寫一個(gè)的“正確”的VIN號(測試儀設(shè)定值)。在模擬測試中,調(diào)試系統(tǒng)要能模擬錯(cuò)誤的VIN碼被測試儀改正的過程。第1步,調(diào)試系統(tǒng)儲(chǔ)存在數(shù)據(jù)庫中的VIN碼是錯(cuò)誤的;第2步,測試儀發(fā)出請求得到錯(cuò)誤的VIN號,并識(shí)別了錯(cuò)誤 ;第3步,測試儀會(huì)發(fā)送SID=3B的請求,給ECU寫一個(gè)正確的VIN號;第4步,調(diào)試系統(tǒng)根據(jù)測試儀的請求消息將“正確”的VIN碼寫入數(shù)據(jù)庫中的相應(yīng)位置;第5步,測試儀再次發(fā)出讀取VIN號的請求;第6步,調(diào)試系統(tǒng)將寫“正確”了的VIN號發(fā)給測試儀。到此,測試儀判斷汽車VIN碼正確,從而可以進(jìn)入接下來的測試內(nèi)容。
(4)數(shù)據(jù)庫一次響應(yīng)+數(shù)據(jù)庫操作。對于SID=30(根據(jù)本地標(biāo)識(shí)符輸入輸出流控制),系統(tǒng)要解析請求消息,根據(jù)數(shù)據(jù)庫數(shù)據(jù)給出響應(yīng);并根據(jù)請求消息的內(nèi)容和預(yù)先設(shè)定的數(shù)據(jù)庫向?qū)?shù)據(jù)修改數(shù)據(jù)庫目標(biāo)數(shù)據(jù)。例如,某車測試中請求消息為84 11 F1 30 24 07 96 77,調(diào)試系統(tǒng)對其進(jìn)行解析可知ECU為11(發(fā)動(dòng)機(jī)),SID=30(流控制)控制項(xiàng)目為24(怠速控制),控制方式為07(短期調(diào)整),控制數(shù)值為96(按協(xié)議換算后為1 500 r/min),校驗(yàn)碼77正確,則下一步就根據(jù)數(shù)據(jù)庫中的向?qū)?shù)據(jù)IOControlTarget_24 07 96=PID_01將發(fā)動(dòng)機(jī)的轉(zhuǎn)速數(shù)值(表2中PID_01等號后面的值第29、30字節(jié))改為1 500 r/min [把0B B8(表示750 r/min[3])改為1 770(表示1 500 r/min[3])];并從數(shù)據(jù)庫中找到該請求消息的正響應(yīng)消息84 F1 11 70 24 07 96 B7發(fā)給測試系統(tǒng),表示發(fā)動(dòng)機(jī)轉(zhuǎn)速已經(jīng)調(diào)整至測試儀要求的1 500 r/min ;隨后測試儀再次發(fā)出請求消息讀取發(fā)動(dòng)機(jī)ECU的狀態(tài)數(shù)據(jù);調(diào)試系統(tǒng)再次給出發(fā)動(dòng)機(jī)狀態(tài)數(shù)據(jù)響應(yīng),測試儀就會(huì)讀到發(fā)動(dòng)機(jī)轉(zhuǎn)速為17 70(1 500 r/min[3]),則該項(xiàng)測試通過,可進(jìn)入下一項(xiàng)測試。
除了對請求輸入進(jìn)行解析之外,調(diào)試系統(tǒng)還可以通過解析控制輸入對數(shù)據(jù)庫中的所有數(shù)據(jù)進(jìn)行設(shè)定和修改。這樣就可以實(shí)現(xiàn)對各個(gè)單元的身份數(shù)據(jù)、狀態(tài)數(shù)據(jù)、故障碼等數(shù)據(jù)內(nèi)容進(jìn)行人為設(shè)置,驗(yàn)證測試程序讀狀態(tài)數(shù)據(jù)和故障碼的功能,即測試程序調(diào)試??刂泼罱馕鲞^程如圖6所示。
數(shù)據(jù)庫的功能可利用Windows的應(yīng)用程序初始化功能和PC機(jī)內(nèi)存實(shí)現(xiàn)。利用Windows應(yīng)用程序初始化功能需編寫ini格式文件,并在軟件程序中使用Windows 應(yīng)用函數(shù)(API)對ini文件進(jìn)行讀寫操作。
ini文件是windows的系統(tǒng)配置文件,統(tǒng)管Windows的各項(xiàng)配置,這里可以利用其為調(diào)試系統(tǒng)程序的內(nèi)存數(shù)據(jù)初始化,實(shí)現(xiàn)虛擬數(shù)據(jù)庫的作用。Windows應(yīng)用程序初始化文件(ini文件)由節(jié)、鍵、值組成,其數(shù)據(jù)格式如下[5]:
對象車型某ECU的ini格式模擬內(nèi)存數(shù)據(jù)見表2。
在仿真開始時(shí),將ECU數(shù)據(jù)按照ini文件的格式初始化到程序內(nèi)存中。調(diào)試過程中,系統(tǒng)讀到請求消息,解析請求消息的ECU、SID等信息,根據(jù)解析到的關(guān)鍵字檢索數(shù)據(jù)庫(內(nèi)存數(shù)據(jù))中的鍵,然后讀取對應(yīng)的值,根據(jù)讀到的值生成響應(yīng)消息。
通過功能測試和可靠性測試后,調(diào)試系統(tǒng)應(yīng)用于上海通用汽車整車制造總裝終檢線的汽車靜態(tài)測試程序調(diào)試中。圖7為調(diào)試系統(tǒng)實(shí)物圖;圖8為調(diào)試系統(tǒng)軟件界面圖。
狀態(tài)數(shù)據(jù)模擬方面,調(diào)試系統(tǒng)的ECU狀態(tài)數(shù)據(jù)可以通過人工快速設(shè)定,達(dá)到并精確地穩(wěn)定在測試要求的理想值,如發(fā)動(dòng)機(jī)轉(zhuǎn)速無誤差地穩(wěn)定在750 r/min 、1 500 r/min 等數(shù)值上。利用這一點(diǎn)可以快速精確地標(biāo)定和驗(yàn)證測試儀程序的參數(shù)。圖7和圖9為調(diào)試系統(tǒng)通過某次測試時(shí)的實(shí)物圖和測試儀界面。圖7顯示發(fā)動(dòng)機(jī)轉(zhuǎn)速可人為精確達(dá)到并穩(wěn)定在1 500 r/min 。圖10為在另一次模擬測試中發(fā)動(dòng)機(jī)轉(zhuǎn)速精確地達(dá)到并穩(wěn)定在2 000 r/min 。
故障碼設(shè)置方面,調(diào)試系統(tǒng)可以輕易設(shè)置在實(shí)車上不易設(shè)置的各種故障。利用這一點(diǎn)可以檢驗(yàn)測試儀能否及時(shí)、正確地讀取并識(shí)別故障。圖10為測試儀讀到用調(diào)試系統(tǒng)人為設(shè)置的故障碼時(shí),顯示故障信息的界面。
從實(shí)際應(yīng)用結(jié)果可以看出:(1)調(diào)試系統(tǒng)可快速地模擬設(shè)置汽車各種狀態(tài)數(shù)據(jù)(實(shí)車達(dá)到期望狀態(tài)時(shí)間長)。(2)調(diào)試系統(tǒng)可全面設(shè)置汽車靜態(tài)測試中各種故障碼(有些故障在實(shí)車上難以設(shè)置)。(3)調(diào)試系統(tǒng)使測試程序調(diào)試減少對實(shí)車環(huán)境的依賴。
針對生產(chǎn)中K總線汽車靜態(tài)測試程序采用實(shí)車調(diào)試存在的缺陷,提出了一種模擬實(shí)車總線通信的測試儀高效調(diào)試方法,并開發(fā)了汽車靜態(tài)測試儀調(diào)試系統(tǒng)。調(diào)試系統(tǒng)與實(shí)車相比,狀態(tài)數(shù)據(jù)設(shè)置快速、精確,故障碼設(shè)置快速、全面,并且減少對實(shí)車和場地的依賴。這種模擬通信的調(diào)試方法比實(shí)車調(diào)試速度快、功能強(qiáng)、成本低,彌補(bǔ)了后者的不足,大大提高了汽車靜態(tài)測試程序調(diào)試的效率。
在實(shí)踐中,該調(diào)試系統(tǒng)已廣泛應(yīng)用于上海通用汽車整車制造終檢線靜態(tài)測試程序的調(diào)試,在最新幾款車型中該系統(tǒng)均得到高度利用,節(jié)省了大量人力、物力、時(shí)間成本,大大提高了測試程序的調(diào)試效率和可靠性。
該調(diào)試系統(tǒng)為日后下一代汽車測試系統(tǒng)和診斷系統(tǒng)的開發(fā)提供了方便。該調(diào)試方法是基于K總線汽車靜態(tài)測試進(jìn)行的研究,其成果為其它總線和協(xié)議的測試儀調(diào)試提供了參考。進(jìn)一步探索,由于汽車動(dòng)態(tài)測試的車載ECU診斷通信模式與汽車靜態(tài)測試基本相同,同時(shí)轉(zhuǎn)鼓試驗(yàn)臺(tái)工控機(jī)的串口通信也可以采用類似方法進(jìn)行模擬,因此本文的工作為將來實(shí)現(xiàn)汽車動(dòng)態(tài)測試系統(tǒng)(測試儀+汽車+轉(zhuǎn)鼓)的測試儀高效調(diào)試打下了重要基礎(chǔ)。
[1]呂奕曄.汽車診斷協(xié)議KWP2000的實(shí)現(xiàn)與應(yīng)用[D].哈爾濱:哈爾濱工業(yè)大學(xué),2007.Lü Yiye. The Implementation and Application of Vehicle Diagnostic Protocol 2000 [D]. Harbin: Harbin Institute of Technology,2007. (in Chinese)
[2]孫永佳,張睿.汽車動(dòng)態(tài)測試—DVT [J].沈陽航空工業(yè)學(xué)院學(xué)報(bào),2004,21(2): 34-36.Sun Yongjia,Zhang Rui. Vehicle Dynamic Test— the DVT[J]. Journal of Shenyang Institute of Aeronautical Engineering,2004,21(2): 34-36. (in Chinese)
[3]Keyword Protocol 2000 Implementation of Diagnostic Services Recommended Practice[S]. [S.l.]:United Automotive Electronic Systems Co. Ltd,2007.
[5]Intrepid Control Systems. Intrepidcs API Documentation[EB/OL]. http://intrepidcs.com/support/ICS Documentation/neo VI DLL/neo Frame Main. htm,2008-11-11.
[6]宋坤,劉銳寧,李偉明.MFC程序開發(fā)參考大全[M].北京:人民郵電出版社,2007.Song Kun,Liu Ruining,Li Weiming. MFC Application Development Reference Books [M]. Beijing:The People's Posts and Telecommunications Press,2007. (in Chinese)