本發(fā)明涉及汽車診斷技術(shù)領(lǐng)域,尤其涉及快速初始化診斷儀的方法、終端及計算機可讀存儲介質(zhì)。
背景技術(shù):
隨著經(jīng)濟的發(fā)展,導(dǎo)致了人們的出行方式發(fā)生了改變,如今,汽車已經(jīng)成為許多人的代步工具,在汽車的使用過程中,難免要對汽車進行保養(yǎng)和維修。在對汽車進行保養(yǎng)和維修時,診斷儀是經(jīng)常被使用的工具?,F(xiàn)有的診斷儀需要進入工作模式才能夠進行診斷工作,需要pc端(personalcomputer個人計算機)的應(yīng)用軟件通過串口發(fā)送命令給診斷儀使得診斷儀進入工作模式。但是,診斷儀在進入工作模式前,存在關(guān)閉串口的過程,pc端的應(yīng)用程序無法知道串口何時準(zhǔn)備好,只能盲目等待一定時間(一般為10秒)才能使診斷儀進入工作模式,現(xiàn)有技術(shù)存在診斷儀進入工作模式太慢、等待時間太久的問題,從而在很大程度上不利于用戶的使用體驗感受。
技術(shù)實現(xiàn)要素:
本發(fā)明的主要目的在于提供一種快速初始化診斷儀的方法、終端及計算機可讀存儲介質(zhì),旨在解決現(xiàn)有技術(shù)中診斷儀進入工作模式太慢、等待時間太久的技術(shù)問題。
為實現(xiàn)上述目的,本發(fā)明提供一種快速初始化診斷儀的方法,所述快速初始化診斷儀的方法應(yīng)用于終端,所述快速初始化診斷儀的方法包括:
建立與診斷儀的通信連接;
接收用戶發(fā)起的診斷請求;
根據(jù)所述診斷請求確定階段標(biāo)識,并發(fā)送預(yù)置復(fù)位命令至所述診斷儀;
根據(jù)接收到的設(shè)備狀態(tài)改變信息判斷所述診斷儀是否完成復(fù)位;
若完成復(fù)位,則根據(jù)所述階段標(biāo)識判斷是否進入校驗階段;
若否,則驗證所述診斷儀是否進入工作模式;
若驗證所述診斷儀進入工作模式,則完成初始化,控制所述診斷儀進行診斷。
優(yōu)選地,所述診斷請求包含車輛標(biāo)識信息;所述根據(jù)所述診斷請求確定階段標(biāo)識,具體為:
判斷本次診斷請求發(fā)起之前的預(yù)設(shè)時間內(nèi)是否存在具有所述車輛標(biāo)識信息的歷史診斷記錄;
若存在,則確定階段標(biāo)識為非校驗階段;
若不存在,則確定階段標(biāo)識為校驗階段。
優(yōu)選地,所述根據(jù)所述階段標(biāo)識判斷是否進入校驗階段,具體包括:
當(dāng)所述階段標(biāo)識為非校驗階段時,則判斷所述診斷儀不進入校驗階段;
當(dāng)所述階段標(biāo)識為校驗階段時,則判斷所述診斷儀進入校驗階段。
優(yōu)選地,所述根據(jù)接收到的設(shè)備狀態(tài)改變信息判斷所述診斷儀是否完成復(fù)位,具體包括:
在接收到所述設(shè)備狀態(tài)改變信息后,讀取所述診斷儀的串口狀態(tài)信息;
判斷所述串口狀態(tài)是否處于開啟通信狀態(tài),若處于開啟通信狀態(tài)則判斷所述診斷儀完成復(fù)位。
優(yōu)選地,所述根據(jù)所述階段標(biāo)識判斷是否進入校驗階段之后,還包括:
若根據(jù)階段標(biāo)識判斷進入校驗階段,控制所述診斷儀執(zhí)行校驗步驟;
完成校驗后,發(fā)送進入工作模式的指令至所述診斷儀,并重置階段標(biāo)識為非校驗階段;
根據(jù)再次接收到的設(shè)備狀態(tài)改變信息判斷所述診斷儀的串口是否處于開啟通信狀態(tài);
若處于開啟通信狀態(tài),則執(zhí)行驗證所述診斷儀是否進入工作模式,并在驗證所述診斷儀進入工作模式后完成初始化,控制所述診斷儀進行診斷。
此外,為實現(xiàn)上述目的,本發(fā)明還提供一種終端,所述終端包括:存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的快速初始化診斷儀程序,所述快速初始化診斷儀程序被所述處理器執(zhí)行時實現(xiàn)如下步驟:
建立與診斷儀的通信連接;
接收用戶發(fā)起的診斷請求;
根據(jù)所述診斷請求確定階段標(biāo)識,并發(fā)送預(yù)置復(fù)位命令至所述診斷儀;
根據(jù)接收到的設(shè)備狀態(tài)改變信息判斷所述診斷儀是否完成復(fù)位;
若完成復(fù)位,則根據(jù)所述階段標(biāo)識判斷是否進入校驗階段;
若否,則驗證所述診斷儀是否進入工作模式;
若驗證所述診斷儀進入工作模式,則完成初始化,控制所述診斷儀進行診斷。
優(yōu)選地,所述快速初始化診斷儀程序被所述處理器執(zhí)行時還實現(xiàn)如下步驟:
判斷本次診斷請求發(fā)起之前的預(yù)設(shè)時間內(nèi)是否存在具有所述車輛標(biāo)識信息的歷史診斷記錄;
若存在,則確定階段標(biāo)識為非校驗階段;
若不存在,則確定階段標(biāo)識為校驗階段。
優(yōu)選地,所述快速初始化診斷儀程序被所述處理器執(zhí)行時還實現(xiàn)如下步驟:
當(dāng)所述階段標(biāo)識為非校驗階段時,則判斷所述診斷儀不進入校驗階段;
當(dāng)所述階段標(biāo)識為校驗階段時,則判斷所述診斷儀進入校驗階段。
優(yōu)選地,所述快速初始化診斷儀程序被所述處理器執(zhí)行時還實現(xiàn)如下步驟:
在接收到所述設(shè)備狀態(tài)改變信息后,讀取所述診斷儀的串口狀態(tài)信息;
判斷所述串口狀態(tài)是否處于開啟通信狀態(tài),若處于開啟通信狀態(tài)則判斷所述診斷儀完成復(fù)位。
優(yōu)選地,所述快速初始化診斷儀程序被所述處理器執(zhí)行時還實現(xiàn)如下步驟:
若根據(jù)階段標(biāo)識判斷進入校驗階段,控制所述診斷儀執(zhí)行校驗步驟;
完成校驗后,發(fā)送進入工作模式的指令至所述診斷儀,并重置階段標(biāo)識為非校驗階段;
根據(jù)再次接收到的設(shè)備狀態(tài)改變信息判斷所述診斷儀的串口是否處于開啟通信狀態(tài);
若處于開啟通信狀態(tài),則執(zhí)行驗證所述診斷儀是否進入工作模式,并在驗證所述診斷儀進入工作模式后完成初始化,控制所述診斷儀進行診斷。
此外,為實現(xiàn)上述目的,本發(fā)明還提供一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)上存儲有快速初始化診斷儀程序,所述快速初始化診斷儀程序被處理器執(zhí)行時實現(xiàn)如下步驟:
建立與診斷儀的通信連接;
接收用戶發(fā)起的診斷請求;
根據(jù)所述診斷請求確定階段標(biāo)識,并發(fā)送預(yù)置復(fù)位命令至所述診斷儀;
根據(jù)接收到的設(shè)備狀態(tài)改變信息判斷所述診斷儀是否完成復(fù)位;
若完成復(fù)位,則根據(jù)所述階段標(biāo)識判斷是否進入校驗階段;
若否,則驗證所述診斷儀是否進入工作模式;
若驗證所述診斷儀進入工作模式,則完成初始化,控制所述診斷儀進行診斷。
優(yōu)選地,所述快速初始化診斷儀程序被所述處理器執(zhí)行時還實現(xiàn)如下步驟:
判斷本次診斷請求發(fā)起之前的預(yù)設(shè)時間內(nèi)是否存在具有所述車輛標(biāo)識信息的歷史診斷記錄;
若存在,則確定階段標(biāo)識為非校驗階段;
若不存在,則確定階段標(biāo)識為校驗階段。
優(yōu)選地,所述快速初始化診斷儀程序被所述處理器執(zhí)行時還實現(xiàn)如下步驟:
當(dāng)所述階段標(biāo)識為非校驗階段時,則判斷所述診斷儀不進入校驗階段;
當(dāng)所述階段標(biāo)識為校驗階段時,則判斷所述診斷儀進入校驗階段。
優(yōu)選地,所述快速初始化診斷儀程序被所述處理器執(zhí)行時還實現(xiàn)如下步驟:
在接收到所述設(shè)備狀態(tài)改變信息后,讀取所述診斷儀的串口狀態(tài)信息;
判斷所述串口狀態(tài)是否處于開啟通信狀態(tài),若處于開啟通信狀態(tài)則判斷所述診斷儀完成復(fù)位。
優(yōu)選地,所述快速初始化診斷儀程序被所述處理器執(zhí)行時還實現(xiàn)如下步驟:
若根據(jù)階段標(biāo)識判斷進入校驗階段,控制所述診斷儀執(zhí)行校驗步驟;
完成校驗后,發(fā)送進入工作模式的指令至所述診斷儀,并重置階段標(biāo)識為非校驗階段;
根據(jù)再次接收到的設(shè)備狀態(tài)改變信息判斷所述診斷儀的串口是否處于開啟通信狀態(tài);
若處于開啟通信狀態(tài),則執(zhí)行驗證所述診斷儀是否進入工作模式,并在驗證所述診斷儀進入工作模式后完成初始化,控制所述診斷儀進行診斷。
本發(fā)明中,終端在與診斷儀建立通訊連接后,接收基于用戶操作觸發(fā)的診斷請求,根據(jù)診斷請求確定階段標(biāo)識,并將復(fù)位命令發(fā)送至診斷儀,若接收到設(shè)備狀態(tài)改變信息,則判斷診斷儀復(fù)位是否完成,若診斷儀復(fù)位完成則根據(jù)階段標(biāo)識判斷是否進入校驗階段,若不為進入校驗階段,則驗證診斷儀是否進入工作模式,若是,則表明診斷儀初始化完成,控制診斷儀進行診斷。通過本發(fā)明,大大縮短了診斷儀初始化的時間,極大提升了用戶的使用感受。
附圖說明
圖1為本發(fā)明快速初始化診斷儀的方法第一實施例的流程示意圖;
圖2為本發(fā)明快速初始化診斷儀的方法第二實施例的流程示意圖;
圖3是本發(fā)明實施例方案涉及的硬件運行環(huán)境的終端結(jié)構(gòu)示意圖。
本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進一步說明。
具體實施方式
應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如下各實施例中本發(fā)明快速初始化診斷儀的方法應(yīng)用于終端,終端可以是計算機、移動終端、車載終端、個人數(shù)字助理(pda)、平板電腦等,終端的操作系統(tǒng)可以為windows、linux、android、ios等,終端的操作系統(tǒng)能檢測i/o設(shè)備關(guān)閉、打開事件。
參照圖1,圖1為本發(fā)明快速初始化診斷儀的方法第一實施例的流程示意圖。
在一實施例中,快速初始化診斷儀的方法應(yīng)用于終端,快速初始化診斷儀的方法包括:
步驟s10,建立與診斷儀的通信連接;
步驟s20,接收用戶發(fā)起的診斷請求;
步驟s30,根據(jù)所述診斷請求確定階段標(biāo)識,并發(fā)送預(yù)置復(fù)位命令至所述診斷儀;
步驟s40,根據(jù)接收到的設(shè)備狀態(tài)改變信息判斷所述診斷儀是否完成復(fù)位;
步驟s50,若完成復(fù)位,則根據(jù)所述階段標(biāo)識判斷是否進入校驗階段;
步驟s60,若否,則驗證所述診斷儀是否進入工作模式;
步驟s70,若驗證所述診斷儀進入工作模式,則完成初始化,控制所述診斷儀進行診斷。
本實施例中,終端與診斷儀建立通信連接的方式可以是通過usb線進行連接,usb線一端接入終端的串行通訊接口(串口),另一端接入診斷儀端口,還可以是藍牙通信連接。本實施例以usb數(shù)據(jù)線連接為例進行說明。
本實施例中,診斷儀可以為汽車診斷儀。
例如,在一實施例中,以汽車診斷儀為例子進行說明。用戶需要使用診斷儀對車輛進行檢測,在建立終端與診斷儀的通訊連接后,用戶在終端上操作,終端接收基于用戶操作觸發(fā)的診斷請求,根據(jù)診斷請求中包含的車輛標(biāo)識信息(例如,當(dāng)前需要汽車診斷儀診斷的車輛的型號信息、車輛vin碼信息等,在此不作限制,具體根據(jù)實際情況進行設(shè)置),確定階段標(biāo)識。例如,若檢測到本次診斷請求發(fā)起之前,汽車診斷儀同終端保持連接的一段時間內(nèi)(例如15分鐘,該值可根據(jù)實際情況進行設(shè)置),存在與此次診斷請求包含的車輛型號信息相同的診斷記錄,則將當(dāng)前階段設(shè)置為非校驗階段,否則設(shè)置為校驗階段。如本次需要使用汽車診斷儀對“豐田”車系進行測試,在將診斷請求發(fā)送至終端后,檢測到接收到該診斷請求前該汽車診斷儀同終端建立通訊連接的15分鐘內(nèi)存在對“豐田”車系的測車記錄,則確定階段標(biāo)識為非校驗階段。
接收到診斷請求后,終端將封裝好的復(fù)位命令通過串口發(fā)送給診斷盒。診斷盒接受到復(fù)位命令后,開始進行復(fù)位,此時串口會關(guān)閉又打開。終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向終端的操作界面發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變,由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),即判斷是否能夠讀取到診斷儀的串口信息、是否能夠通過串口進行通信,若能,則排除其他i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔觸發(fā)wm_devicechange消息,判定此次wm_devicechange消息的產(chǎn)生是由于串口的關(guān)閉、打開引起的,則表示診斷儀復(fù)位完成。在具體的實際操作過程中,上述過程可以在終端上通過診斷軟件客戶端(即診斷app)完成。具體過程如下:接收到診斷請求后,診斷app將封裝好的復(fù)位命令通過串口發(fā)送給診斷盒。診斷盒接受到復(fù)位命令后,開始進行復(fù)位,此時串口會關(guān)閉又打開。終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向診斷app的主窗口發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變,由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),即判斷是否能夠讀取到診斷儀的串口信息、是否能夠通過串口進行通信,若能,則排除其他i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔觸發(fā)wm_devicechange消息,判定此次wm_devicechange消息的產(chǎn)生是由于串口的關(guān)閉、打開引起的,則表示診斷儀復(fù)位完成。
復(fù)位完成后,根據(jù)確定的階段標(biāo)識,例如確定當(dāng)前為非校驗階段,則發(fā)送驗證命令至診斷儀,用以驗證診斷儀是否已經(jīng)成功進入工作模式。例如,向診斷儀發(fā)送一請求,請求獲取診斷儀狀態(tài)信息,在接收到診斷儀反饋的狀態(tài)信息后,若狀態(tài)信息表明診斷儀已進入工作模式,則確認(rèn)當(dāng)前診斷儀已經(jīng)成功進入工作模式,則可以進行對車輛的診斷工作。若狀態(tài)信息表明診斷儀未進入工作模式,則發(fā)出告警消息,例如警告聲、燈光閃爍、在用戶界面顯示對話框,提示用戶,診斷儀進入工作模式失敗,需要用戶重新操作,以供重啟上述流程(步驟s10至s70)。
在本發(fā)明另一可選實施例中,復(fù)位完成后,根據(jù)確定的階段標(biāo)識,若確定當(dāng)前為校驗階段,則發(fā)送校驗命令至診斷儀,在接收到診斷儀的反饋信息后發(fā)送進入工作模式的指令至診斷儀。此處終端發(fā)送校驗命令,接收反饋信息的過程即握手協(xié)議。握手協(xié)議指通訊設(shè)備之間任何實際應(yīng)用信息的傳送總是伴隨著一些控制信息的傳遞,它們按照既定的通訊協(xié)議工作,將應(yīng)用信息安全、可靠、高效地傳送到目的地。握手協(xié)議就是兩個設(shè)備在通信之前,要互相的認(rèn)識一下,然后才能互相傳送。診斷儀在接收到進入工作模式的指令后,此時串口會先關(guān)閉再打開。終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o(輸入/輸出接口)設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向終端的操作界面發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變。在具體的實際操作過程中,上述過程可以在終端上通過診斷軟件客戶端(即診斷app)完成。具體過程如下:終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o(輸入/輸出接口)設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向診斷app的主窗口發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變。
由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),即判斷是否能夠讀取到診斷儀的串口信息、是否能夠通過串口進行通信,若能,則排除其他i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔觸發(fā)wm_devicechange消息,判定此次wm_devicechange消息的產(chǎn)生是由于串口的關(guān)閉、打開引起的,則表示診斷儀已進入工作模式,并標(biāo)記階段標(biāo)記為非校驗階段,接下來則發(fā)送驗證命令至診斷儀,用以驗證診斷儀是否已經(jīng)成功進入工作模式。例如,向診斷儀發(fā)送一請求,請求獲取診斷儀狀態(tài)信息,在接收到診斷儀反饋的狀態(tài)信息后,若狀態(tài)信息表明診斷儀已進入工作模式,則確認(rèn)當(dāng)前診斷儀已經(jīng)成功進入工作模式,則可以進行對車輛的診斷工作。若狀態(tài)信息表明診斷儀未進入工作模式,則發(fā)出告警消息,例如警告聲、燈光閃爍、在用戶界面顯示對話框,提示用戶,診斷儀進入工作模式失敗,需要用戶重新操作,以供重啟上述流程(步驟s10至s70)。
本發(fā)明中,終端在與診斷儀建立通訊連接后,接收基于用戶操作觸發(fā)的診斷請求,根據(jù)診斷請求確定階段標(biāo)識,并將復(fù)位命令發(fā)送至診斷儀,若接收到設(shè)備狀態(tài)改變信息,則判斷診斷儀復(fù)位是否完成,若診斷儀復(fù)位完成則根據(jù)階段標(biāo)識判斷是否進入校驗階段,若不為進入校驗階段,則驗證診斷儀是否進入工作模式,若是,則表明診斷儀初始化完成,控制診斷儀進行診斷。通過本發(fā)明,大大縮短了診斷儀初始化的時間,極大提升了用戶的使用感受。
進一步的,在本發(fā)明另一可選實施例中,診斷請求中包含車輛標(biāo)識信息,根據(jù)診斷請求確定階段標(biāo)識包括:
判斷本次診斷請求發(fā)起之前的預(yù)設(shè)時間內(nèi)是否存在具有所述車輛標(biāo)識信息的歷史診斷記錄;
若存在,則確定階段標(biāo)識為非校驗階段;
若不存在,則確定階段標(biāo)識為校驗階段。
本實施例中,預(yù)設(shè)時間指診斷儀與終端保持通訊連接的一段時間(時長可人為設(shè)置)。例如,在15:00終端接收到基于用戶操作觸發(fā)的診斷請求,診斷請求中包含了車輛標(biāo)識信息,車輛標(biāo)識信息指待診斷的車輛車系信息,如“豐田”,還可以是待診斷車輛vin碼信息,在此不作限制,具體根據(jù)實際需要而定。終端檢測到在14:50時存在“豐田”車系的診斷記錄,且14:50~15:00時間段內(nèi),診斷儀保持與終端的通信連接。則確定階段標(biāo)識為非校驗階段,例如,在系統(tǒng)進程中將標(biāo)識變量設(shè)置為“2”,代表階段為非校驗階段,診斷儀復(fù)位完成后不需要進行校驗,而是直接發(fā)送驗證命令,以供驗證診斷儀是否進入工作模式,并在驗證診斷儀進入工作模式后完成初始化并控制診斷儀進行診斷;若接收到診斷請求時,檢測到不存在診斷請求中車輛標(biāo)識信息對應(yīng)的歷史診斷記錄,則確定當(dāng)前標(biāo)識為校驗階段,例如在系統(tǒng)進程中將標(biāo)識變量設(shè)置為“1”,代表階段為校驗階段,診斷儀復(fù)位完成后,終端發(fā)送校驗命令至診斷儀,在接收到診斷儀的反饋信息后,發(fā)送進入工作模式的指令至診斷儀,以供診斷儀進入工作模式。
本實施例中,根據(jù)診斷請求中包含的車輛標(biāo)識信息,檢測本次診斷請求發(fā)起之前的預(yù)設(shè)時間內(nèi)是否存在該車輛標(biāo)識信息對應(yīng)的歷史診斷記錄,若存在,則確定階段為非校驗階段,在診斷儀復(fù)位完成后不需要進行校驗,而是直接發(fā)送驗證命令至診斷儀,以供驗證診斷儀是否進入工作模式,并在驗證診斷儀進入工作模式后完成初始化并控制診斷儀進行診斷。通過本實施例,加快了診斷儀初始化過程。
進一步的,在一實施例中,根據(jù)階段標(biāo)識判斷是否進入校驗階段包括:
當(dāng)所述階段標(biāo)識為非校驗階段時,則判斷所述診斷儀不進入校驗階段;
當(dāng)所述階段標(biāo)識為校驗階段時,則判斷所述診斷儀進入校驗階段。
本實施例中,當(dāng)階段標(biāo)識可在系統(tǒng)進程中通過添加標(biāo)志位進行設(shè)置。例如,當(dāng)階段標(biāo)識為非校驗階段,則將標(biāo)志位為設(shè)置為“2”,表示診斷儀在復(fù)位完成后不進入校驗階段,而是發(fā)送驗證命令至診斷儀,以供驗證診斷儀是否進入工作模式,并在驗證診斷儀進入工作模式后完成初始化并控制診斷儀進行診斷;當(dāng)階段標(biāo)識為校驗階段,則將標(biāo)志位設(shè)置為“1”,表示診斷儀在復(fù)位完成后為進入校驗階段,則發(fā)送校驗命令至診斷儀,在接收到診斷儀的反饋信息后發(fā)送進入工作模式的指令至診斷儀,以供診斷儀進入工作模式。此處終端發(fā)送校驗命令,接收反饋信息的過程即握手協(xié)議。握手協(xié)議指通訊設(shè)備之間任何實際應(yīng)用信息的傳送總是伴隨著一些控制信息的傳遞,它們按照既定的通訊協(xié)議工作,將應(yīng)用信息安全、可靠、高效地傳送到目的地。握手協(xié)議就是兩個設(shè)備在通信之前,要互相的認(rèn)識一下,然后才能互相傳送。在診斷儀進入工作模式后,再將標(biāo)志位更新為“2”,接下來發(fā)送驗證命令至診斷儀,以供驗證診斷儀是否進入工作模式。
本實施例中,根據(jù)診斷請求中包含的車輛標(biāo)識信息,檢測本次診斷請求發(fā)起之前的預(yù)設(shè)時間內(nèi)是否存在該車輛標(biāo)識信息對應(yīng)的歷史診斷記錄,若存在,則確定階段為非校驗階段,在診斷儀復(fù)位完成后不需要進行校驗,而是直接發(fā)送驗證命令至診斷儀,以供驗證診斷儀是否進入工作模式,并在驗證診斷儀進入工作模式后完成初始化并控制診斷儀進行診斷。通過本實施例,加快了診斷儀初始化過程。
進一步的,在本發(fā)明另一可選實施例中,步驟s40包括:
在接收到所述設(shè)備狀態(tài)改變信息后,讀取所述診斷儀的串口狀態(tài)信息;
判斷所述串口狀態(tài)是否處于開啟通信狀態(tài),若處于開啟通信狀態(tài)則判斷所述診斷儀完成復(fù)位。
本實施例中,接收到診斷請求后,應(yīng)用程序?qū)⒎庋b好的復(fù)位命令通過串口發(fā)送給診斷盒。診斷盒接受到復(fù)位命令后,開始進行復(fù)位,此時串口會關(guān)閉又打開。終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向終端的操作界面發(fā)送wm_devicechange消息(設(shè)備狀態(tài)改變信息),通知i/o設(shè)備狀態(tài)改變。在具體的實際操作過程中,上述過程可以在終端上通過診斷軟件客戶端(即診斷app)完成。具體過程如下:終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o(輸入/輸出接口)設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向診斷app的主窗口發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變。由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),即判斷是否能夠讀取到診斷儀的串口信息、是否能夠通過串口進行通信,若能,則排除其他i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔觸發(fā)wm_devicechange消息,判定此次wm_devicechange消息的產(chǎn)生是由于串口的關(guān)閉、打開引起的,則表示診斷儀復(fù)位完成。
在本實施例中,終端上運行的操作系統(tǒng)能夠檢測輸入/輸出接口狀態(tài)的改變(i/o設(shè)備關(guān)閉、打開事件)。例如,以windows操作系統(tǒng)的消息機制為例,當(dāng)i/o設(shè)備關(guān)閉、打開事件發(fā)生時,會觸發(fā)wm_devicechange消息。由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),例如,發(fā)一個測試命令至診斷儀,如果能夠接收到診斷儀基于該測試命令發(fā)出的反饋,則證明此次i/o設(shè)備狀態(tài)改變是由串口狀態(tài)改變引起的。
在本實施例中,當(dāng)i/o設(shè)備狀態(tài)改變時,進一步檢測是否能與診斷儀進行通信,只有在檢測到能與診斷儀進行通信后,才進行下一步,避免了pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息對本發(fā)明方案的錯誤影響。
進一步的,參照圖2,圖2為本發(fā)明快速初始化診斷儀的方法第二實施例的流程示意圖。
在本發(fā)明另一可選實施例中,步驟s50之后還包括:
步驟s80,若根據(jù)階段標(biāo)識判斷進入校驗階段,控制所述診斷儀執(zhí)行校驗步驟;
步驟s90,完成校驗后,發(fā)送進入工作模式的指令至所述診斷儀,并重置階段標(biāo)識為非校驗階段;
步驟s100,根據(jù)再次接收到的設(shè)備狀態(tài)改變信息判斷所述診斷儀的串口是否處于開啟通信狀態(tài);
步驟s110,若處于開啟通信狀態(tài),則執(zhí)行驗證所述診斷儀是否進入工作模式,并在驗證所述診斷儀進入工作模式后完成初始化,控制所述診斷儀進行診斷。
在本實施例中,復(fù)位完成后,根據(jù)確定的階段標(biāo)識,若確定當(dāng)前為校驗階段,則發(fā)送校驗命令至診斷儀,在接收到診斷儀的反饋信息后發(fā)送進入工作模式的指令至診斷儀,以供診斷儀進入工作模式。此處終端發(fā)送校驗命令,接收反饋信息的過程即握手協(xié)議。握手協(xié)議指通訊設(shè)備之間任何實際應(yīng)用信息的傳送總是伴隨著一些控制信息的傳遞,它們按照既定的通訊協(xié)議工作,將應(yīng)用信息安全、可靠、高效地傳送到目的地。握手協(xié)議就是兩個設(shè)備在通信之前,要互相的認(rèn)識一下,然后才能互相傳送。同時將階段標(biāo)記重置為非校驗階段。診斷儀在接收到進入工作模式的指令后,會進入工作模式,此時串口會先關(guān)閉再打開。終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o(輸入/輸出接口)設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向終端的操作界面發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變。在具體的實際操作過程中,上述過程可以在終端上通過診斷軟件客戶端(即診斷app)完成。具體過程如下:終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o(輸入/輸出接口)設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向診斷app的主窗口發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變。由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),即判斷是否能夠讀取到診斷儀的串口信息、是否能夠通過串口進行通信,若能,則排除其他i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔觸發(fā)wm_devicechange消息,判定此次wm_devicechange消息的產(chǎn)生是由于串口的關(guān)閉、打開引起的,并根據(jù)當(dāng)前階段標(biāo)記,當(dāng)前階段標(biāo)記為非校驗階段,接下來則發(fā)送驗證命令至診斷儀,用以驗證診斷儀是否已經(jīng)成功進入工作模式。例如,向診斷儀發(fā)送一請求,請求獲取診斷儀狀態(tài)信息,在接收到診斷儀反饋的狀態(tài)信息后,若狀態(tài)信息表明診斷儀已進入工作模式,則確認(rèn)當(dāng)前診斷儀已經(jīng)成功進入工作模式,則可以進行對車輛的診斷工作。若狀態(tài)信息表明診斷儀未進入工作模式,則發(fā)出告警消息,例如警告聲、燈光閃爍、在用戶界面顯示對話框,提示用戶,診斷儀進入工作模式失敗,需要用戶重新操作,以供重啟上述流程(步驟s10至s70)。
本實施例中,終端在與診斷儀建立通訊連接后,接收基于用戶操作觸發(fā)的診斷請求,根據(jù)診斷請求確定階段標(biāo)識,并將復(fù)位命令發(fā)送至診斷儀,若接收到設(shè)備狀態(tài)改變消息,則判斷診斷儀復(fù)位是否完整,若診斷儀復(fù)位完成則根據(jù)階段標(biāo)識判斷是否進入校驗階段,若為進入校驗階段,則發(fā)送校驗命令至診斷儀,在接收到診斷儀的反饋信息后發(fā)送進入工作模式的指令至診斷儀,以供診斷儀進入工作模式,若接收到設(shè)備狀態(tài)改變消息,則判斷診斷儀的串口是否處于開啟通信狀態(tài),若串口處于開啟通信狀態(tài)則驗證診斷儀是否進入工作模式,若是,則表明診斷儀初始化完成,控制診斷儀進行診斷。通過本發(fā)明,大大縮短了診斷儀初始化的時間,極大提升了用戶的使用感受。
此外,本發(fā)明實施例還提出一種終端。
如圖3所示,圖3是本發(fā)明實施例方案涉及的硬件運行環(huán)境的終端結(jié)構(gòu)示意圖。
本發(fā)明實施例終端(本文中,終端即為終端)可以是計算機、移動終端、車載終端、個人數(shù)字助理(pda)、平板電腦等,終端的操作系統(tǒng)可以為windows、linux、android、ios等,終端的操作系統(tǒng)能檢測i/o設(shè)備關(guān)閉、打開事件。
如圖3所示,該終端可以包括:處理器1001,例如cpu,網(wǎng)絡(luò)接口1004,用戶接口1003,存儲器1005,通信總線1002。其中,通信總線1002用于實現(xiàn)這些組件之間的連接通信。用戶接口1003可以包括顯示屏(display)、輸入單元比如鍵盤(keyboard),可選用戶接口1003還可以包括標(biāo)準(zhǔn)的有線接口、無線接口。網(wǎng)絡(luò)接口1004可選的可以包括標(biāo)準(zhǔn)的有線接口、無線接口(如wi-fi接口)。存儲器1005可以是高速ram存儲器,也可以是穩(wěn)定的存儲器(non-volatilememory),例如磁盤存儲器。存儲器1005可選的還可以是獨立于前述處理器1001的存儲裝置。
本領(lǐng)域技術(shù)人員可以理解,圖3中示出的終端結(jié)構(gòu)并不構(gòu)成對終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。
如圖3所示,作為一種計算機存儲介質(zhì)的存儲器1005中可以包括操作系統(tǒng)、網(wǎng)絡(luò)通信模塊、用戶接口模塊以及快速初始化診斷儀程序。
在圖3所示的終端中,網(wǎng)絡(luò)接口1004主要用于連接后臺服務(wù)器,與后臺服務(wù)器進行數(shù)據(jù)通信;用戶接口1003主要用于連接客戶端(用戶端),與客戶端進行數(shù)據(jù)通信;而處理器1001可以用于調(diào)用存儲器1005中存儲的快速初始化診斷儀程序,并執(zhí)行以下操作:
建立與診斷儀的通信連接;
接收用戶發(fā)起的診斷請求;
根據(jù)所述診斷請求確定階段標(biāo)識,并發(fā)送預(yù)置復(fù)位命令至所述診斷儀;
根據(jù)接收到的設(shè)備狀態(tài)改變信息判斷所述診斷儀是否完成復(fù)位;
若完成復(fù)位,則根據(jù)所述階段標(biāo)識判斷是否進入校驗階段;
若否,則驗證所述診斷儀是否進入工作模式;
若驗證所述診斷儀進入工作模式,則完成初始化,控制所述診斷儀進行診斷。
本實施例中,終端與診斷儀建立通信連接的方式可以是通過usb線進行連接,usb線一端接入終端的串行通訊接口(串口),另一端接入診斷儀端口,還可以是藍牙通信連接。本實施例以usb數(shù)據(jù)線連接為例進行說明。
本實施例中,診斷儀可以為汽車診斷儀。
例如,在一實施例中,以汽車診斷儀為例子進行說明。用戶需要使用診斷儀對車輛進行檢測,在建立終端與診斷儀的通訊連接后,用戶在終端上操作,終端接收基于用戶操作觸發(fā)的診斷請求,根據(jù)診斷請求中包含的車輛標(biāo)識信息(例如,當(dāng)前需要汽車診斷儀診斷的車輛的型號信息、車輛vin碼信息等,在此不作限制,具體根據(jù)實際情況進行設(shè)置),確定階段標(biāo)識。例如,若檢測到本次診斷請求發(fā)起之前,汽車診斷儀同終端保持連接的一段時間內(nèi)(例如15分鐘,該值可根據(jù)實際情況進行設(shè)置),存在與此次診斷請求包含的車輛型號信息相同的診斷記錄,則將當(dāng)前階段設(shè)置為非校驗階段,否則設(shè)置為校驗階段。如本次需要使用汽車診斷儀對“豐田”車系進行測試,在將診斷請求發(fā)送至終端后,檢測到接收到該診斷請求前該汽車診斷儀同終端建立通訊連接的15分鐘內(nèi)存在對“豐田”車系的測車記錄,則確定階段標(biāo)識為非校驗階段。
接收到診斷請求后,終端將封裝好的復(fù)位命令通過串口發(fā)送給診斷盒。診斷盒接受到復(fù)位命令后,開始進行復(fù)位,此時串口會關(guān)閉又打開。終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向終端的操作界面發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變,由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),即判斷是否能夠讀取到診斷儀的串口信息、是否能夠通過串口進行通信,若能,則排除其他i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔觸發(fā)wm_devicechange消息,判定此次wm_devicechange消息的產(chǎn)生是由于串口的關(guān)閉、打開引起的,則表示診斷儀復(fù)位完成。在具體的實際操作過程中,上述過程可以在終端上通過診斷軟件客戶端(即診斷app)完成。具體過程如下:接收到診斷請求后,診斷app將封裝好的復(fù)位命令通過串口發(fā)送給診斷盒。診斷盒接受到復(fù)位命令后,開始進行復(fù)位,此時串口會關(guān)閉又打開。終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向診斷app的主窗口發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變,由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),即判斷是否能夠讀取到診斷儀的串口信息、是否能夠通過串口進行通信,若能,則排除其他i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔觸發(fā)wm_devicechange消息,判定此次wm_devicechange消息的產(chǎn)生是由于串口的關(guān)閉、打開引起的,則表示診斷儀復(fù)位完成。
復(fù)位完成后,根據(jù)確定的階段標(biāo)識,例如確定當(dāng)前為非校驗階段,則發(fā)送驗證命令至診斷儀,用以驗證診斷儀是否已經(jīng)成功進入工作模式。例如,向診斷儀發(fā)送一請求,請求獲取診斷儀狀態(tài)信息,在接收到診斷儀反饋的狀態(tài)信息后,若狀態(tài)信息表明診斷儀已進入工作模式,則確認(rèn)當(dāng)前診斷儀已經(jīng)成功進入工作模式,則可以進行對車輛的診斷工作。若狀態(tài)信息表明診斷儀未進入工作模式,則發(fā)出告警消息,例如警告聲、燈光閃爍、在用戶界面顯示對話框,提示用戶,診斷儀進入工作模式失敗,需要用戶重新操作,以供重啟上述流程。
在本發(fā)明另一可選實施例中,復(fù)位完成后,根據(jù)確定的階段標(biāo)識,若確定當(dāng)前為校驗階段,則發(fā)送校驗命令至診斷儀,在接收到診斷儀的反饋信息后發(fā)送進入工作模式的指令至診斷儀。此處終端發(fā)送校驗命令,接收反饋信息的過程即握手協(xié)議。握手協(xié)議指通訊設(shè)備之間任何實際應(yīng)用信息的傳送總是伴隨著一些控制信息的傳遞,它們按照既定的通訊協(xié)議工作,將應(yīng)用信息安全、可靠、高效地傳送到目的地。握手協(xié)議就是兩個設(shè)備在通信之前,要互相的認(rèn)識一下,然后才能互相傳送。診斷儀在接收到進入工作模式的指令后,此時串口會先關(guān)閉再打開。終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o(輸入/輸出接口)設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向終端的操作界面發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變。在具體的實際操作過程中,上述過程可以在終端上通過診斷軟件客戶端(即診斷app)完成。具體過程如下:終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o(輸入/輸出接口)設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向診斷app的主窗口發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變。由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),即判斷是否能夠讀取到診斷儀的串口信息、是否能夠通過串口進行通信,若能,則排除其他i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔觸發(fā)wm_devicechange消息,判定此次wm_devicechange消息的產(chǎn)生是由于串口的關(guān)閉、打開引起的,則表示診斷儀已進入工作模式,并標(biāo)記階段標(biāo)記為非校驗階段,接下來則發(fā)送驗證命令至診斷儀,用以驗證診斷儀是否已經(jīng)成功進入工作模式。例如,向診斷儀發(fā)送一請求,請求獲取診斷儀狀態(tài)信息,在接收到診斷儀反饋的狀態(tài)信息后,若狀態(tài)信息表明診斷儀已進入工作模式,則確認(rèn)當(dāng)前診斷儀已經(jīng)成功進入工作模式,則可以進行對車輛的診斷工作。若狀態(tài)信息表明診斷儀未進入工作模式,則發(fā)出告警消息,例如警告聲、燈光閃爍、在用戶界面顯示對話框,提示用戶,診斷儀進入工作模式失敗,需要用戶重新操作,以供重啟上述流程。
本發(fā)明中,終端在與診斷儀建立通訊連接后,接收基于用戶操作觸發(fā)的診斷請求,根據(jù)診斷請求確定階段標(biāo)識,并將復(fù)位命令發(fā)送至診斷儀,若接收到設(shè)備狀態(tài)改變信息,則判斷診斷儀復(fù)位是否完成,若診斷儀復(fù)位完成則根據(jù)階段標(biāo)識判斷是否進入校驗階段,若不為進入校驗階段,則驗證診斷儀是否進入工作模式,若是,則表明診斷儀初始化完成,控制診斷儀進行診斷。通過本發(fā)明,大大縮短了診斷儀初始化的時間,極大提升了用戶的使用感受。
進一步地,處理器1001可以調(diào)用存儲器1005中存儲的快速初始化診斷儀程序,還執(zhí)行以下操作:
判斷本次診斷請求發(fā)起之前的預(yù)設(shè)時間內(nèi)是否存在具有所述車輛標(biāo)識信息的歷史診斷記錄;
若存在,則確定階段標(biāo)識為非校驗階段;
若不存在,則確定階段標(biāo)識為校驗階段。
本實施例中,預(yù)設(shè)時間指診斷儀與終端保持通訊連接的一段時間(時長可人為設(shè)置)。例如,在15:00終端接收到基于用戶操作觸發(fā)的診斷請求,診斷請求中包含了車輛標(biāo)識信息,車輛標(biāo)識信息指待診斷的車輛車系信息,如“豐田”,還可以是待診斷車輛vin碼信息,在此不作限制,具體根據(jù)實際需要而定。終端檢測到在14:50時存在“豐田”車系的診斷記錄,且14:50~15:00時間段內(nèi),診斷儀保持與終端的通信連接。則確定階段標(biāo)識為非校驗階段,例如,在系統(tǒng)進程中將標(biāo)識變量設(shè)置為“2”,代表階段為非校驗階段,診斷儀復(fù)位完成后不需要進行校驗,而是直接發(fā)送驗證命令,以供驗證診斷儀是否進入工作模式,并在驗證診斷儀進入工作模式后完成初始化并控制診斷儀進行診斷;若接收到診斷請求時,檢測到不存在診斷請求中車輛標(biāo)識信息對應(yīng)的歷史診斷記錄,則確定當(dāng)前標(biāo)識為校驗階段,例如在系統(tǒng)進程中將標(biāo)識變量設(shè)置為“1”,代表階段為校驗階段,診斷儀復(fù)位完成后,終端發(fā)送校驗命令至診斷儀,在接收到診斷儀的反饋信息后,發(fā)送進入工作模式的指令至診斷儀,以供診斷儀進入工作模式。
本實施例中,根據(jù)診斷請求中包含的車輛標(biāo)識信息,檢測本次診斷請求發(fā)起之前的預(yù)設(shè)時間內(nèi)是否存在該車輛標(biāo)識信息對應(yīng)的歷史診斷記錄,若存在,則確定階段為非校驗階段,在診斷儀復(fù)位完成后不需要進行校驗,而是直接發(fā)送驗證命令至診斷儀,以供驗證診斷儀是否進入工作模式,并在驗證診斷儀進入工作模式后完成初始化并控制診斷儀進行診斷。通過本實施例,加快了診斷儀初始化過程。
進一步地,處理器1001可以調(diào)用存儲器1005中存儲的快速初始化診斷儀程序,還執(zhí)行以下操作:
當(dāng)所述階段標(biāo)識為非校驗階段時,則判斷所述診斷儀不進入校驗階段;
當(dāng)所述階段標(biāo)識為校驗階段時,則判斷所述診斷儀進入校驗階段。
本實施例中,當(dāng)階段標(biāo)識可在系統(tǒng)進程中通過添加標(biāo)志位進行設(shè)置。例如,當(dāng)階段標(biāo)識為非校驗階段,則將標(biāo)志位為設(shè)置為“2”,表示診斷儀在復(fù)位完成后不進入校驗階段,而是發(fā)送驗證命令至診斷儀,以供驗證診斷儀是否進入工作模式,并在驗證診斷儀進入工作模式后完成初始化并控制診斷儀進行診斷;當(dāng)階段標(biāo)識為校驗階段,則將標(biāo)志位設(shè)置為“1”,表示診斷儀在復(fù)位完成后為進入校驗階段,則發(fā)送校驗命令至診斷儀,在接收到診斷儀的反饋信息后發(fā)送進入工作模式的指令至診斷儀,以供診斷儀進入工作模式。此處終端發(fā)送校驗命令,接收反饋信息的過程即握手協(xié)議。握手協(xié)議指通訊設(shè)備之間任何實際應(yīng)用信息的傳送總是伴隨著一些控制信息的傳遞,它們按照既定的通訊協(xié)議工作,將應(yīng)用信息安全、可靠、高效地傳送到目的地。握手協(xié)議就是兩個設(shè)備在通信之前,要互相的認(rèn)識一下,然后才能互相傳送。在診斷儀進入工作模式后,再將標(biāo)志位更新為“2”,接下來發(fā)送驗證命令至診斷儀,以供驗證診斷儀是否進入工作模式。
本實施例中,根據(jù)診斷請求中包含的車輛標(biāo)識信息,檢測本次診斷請求發(fā)起之前的預(yù)設(shè)時間內(nèi)是否存在該車輛標(biāo)識信息對應(yīng)的歷史診斷記錄,若存在,則確定階段為非校驗階段,在診斷儀復(fù)位完成后不需要進行校驗,而是直接發(fā)送驗證命令至診斷儀,以供驗證診斷儀是否進入工作模式,并在驗證診斷儀進入工作模式后完成初始化并控制診斷儀進行診斷。通過本實施例,加快了診斷儀初始化過程。
進一步地,處理器1001可以調(diào)用存儲器1005中存儲的快速初始化診斷儀程序,還執(zhí)行以下操作:
在接收到所述設(shè)備狀態(tài)改變信息后,讀取所述診斷儀的串口狀態(tài)信息;
判斷所述串口狀態(tài)是否處于開啟通信狀態(tài),若處于開啟通信狀態(tài)則判斷所述診斷儀完成復(fù)位。
本實施例中,接收到診斷請求后,應(yīng)用程序?qū)⒎庋b好的復(fù)位命令通過串口發(fā)送給診斷盒。診斷盒接受到復(fù)位命令后,開始進行復(fù)位,此時串口會關(guān)閉又打開。終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向終端的操作界面發(fā)送wm_devicechange消息(設(shè)備狀態(tài)改變信息),通知i/o設(shè)備狀態(tài)改變。在具體的實際操作過程中,上述過程可以在終端上通過診斷軟件客戶端(即診斷app)完成。具體過程如下:終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o(輸入/輸出接口)設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向診斷app的主窗口發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變。由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),即判斷是否能夠讀取到診斷儀的串口信息、是否能夠通過串口進行通信,若能,則排除其他i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔觸發(fā)wm_devicechange消息,判定此次wm_devicechange消息的產(chǎn)生是由于串口的關(guān)閉、打開引起的,則表示診斷儀復(fù)位完成。
在本實施例中,終端上運行的操作系統(tǒng)能夠檢測輸入/輸出接口狀態(tài)的改變(i/o設(shè)備關(guān)閉、打開事件)。例如,以windows操作系統(tǒng)的消息機制為例,當(dāng)i/o設(shè)備關(guān)閉、打開事件發(fā)生時,會觸發(fā)wm_devicechange消息。由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),例如,發(fā)一個測試命令至診斷儀,如果能夠接收到診斷儀基于該測試命令發(fā)出的反饋,則證明此次i/o設(shè)備狀態(tài)改變是由串口狀態(tài)改變引起的。
在本實施例中,當(dāng)i/o設(shè)備狀態(tài)改變時,進一步檢測是否能與診斷儀進行通信,只有在檢測到能與診斷儀進行通信后,才進行下一步,避免了pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息對本發(fā)明方案的錯誤影響。
進一步地,處理器1001可以調(diào)用存儲器1005中存儲的快速初始化診斷儀程序,還執(zhí)行以下操作:
若根據(jù)階段標(biāo)識判斷進入校驗階段,控制所述診斷儀執(zhí)行校驗步驟;
完成校驗后,發(fā)送進入工作模式的指令至所述診斷儀,并重置階段標(biāo)識為非校驗階段;
根據(jù)再次接收到的設(shè)備狀態(tài)改變信息判斷所述診斷儀的串口是否處于開啟通信狀態(tài);
若處于開啟通信狀態(tài),則執(zhí)行驗證所述診斷儀是否進入工作模式,并在驗證所述診斷儀進入工作模式后完成初始化,控制所述診斷儀進行診斷。
在本實施例中,復(fù)位完成后,根據(jù)確定的階段標(biāo)識,若確定當(dāng)前為校驗階段,則發(fā)送校驗命令至診斷儀,在接收到診斷儀的反饋信息后發(fā)送進入工作模式的指令至診斷儀,以供診斷儀進入工作模式。此處終端發(fā)送校驗命令,接收反饋信息的過程即握手協(xié)議。握手協(xié)議指通訊設(shè)備之間任何實際應(yīng)用信息的傳送總是伴隨著一些控制信息的傳遞,它們按照既定的通訊協(xié)議工作,將應(yīng)用信息安全、可靠、高效地傳送到目的地。握手協(xié)議就是兩個設(shè)備在通信之前,要互相的認(rèn)識一下,然后才能互相傳送。同時將階段標(biāo)記重置為非校驗階段。診斷儀在接收到進入工作模式的指令后,會進入工作模式,此時串口會先關(guān)閉再打開。終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o(輸入/輸出接口)設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向終端的操作界面發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變。在具體的實際操作過程中,上述過程可以在終端上通過診斷軟件客戶端(即診斷app)完成。具體過程如下:終端操作系統(tǒng)(此處以windows操作系統(tǒng)進行說明)檢測到i/o(輸入/輸出接口)設(shè)備關(guān)閉、打開事件發(fā)生,windows系統(tǒng)向診斷app的主窗口發(fā)送wm_devicechange消息,通知i/o設(shè)備狀態(tài)改變。由于i/o設(shè)備狀態(tài)改變可能是由于其他事件引起的,例如,由于pc上的i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔都能觸發(fā)wm_devicechange消息,所以,此時需要檢測終端同診斷儀連接的串口的狀態(tài),即判斷是否能夠讀取到診斷儀的串口信息、是否能夠通過串口進行通信,若能,則排除其他i/o設(shè)備如鼠標(biāo)、鍵盤、u盤的插拔觸發(fā)wm_devicechange消息,判定此次wm_devicechange消息的產(chǎn)生是由于串口的關(guān)閉、打開引起的,并根據(jù)當(dāng)前階段標(biāo)記,當(dāng)前階段標(biāo)記為非校驗階段,接下來則發(fā)送驗證命令至診斷儀,用以驗證診斷儀是否已經(jīng)成功進入工作模式。例如,向診斷儀發(fā)送一請求,請求獲取診斷儀狀態(tài)信息,在接收到診斷儀反饋的狀態(tài)信息后,若狀態(tài)信息表明診斷儀已進入工作模式,則確認(rèn)當(dāng)前診斷儀已經(jīng)成功進入工作模式,則可以進行對車輛的診斷工作。若狀態(tài)信息表明診斷儀未進入工作模式,則發(fā)出告警消息,例如警告聲、燈光閃爍、在用戶界面顯示對話框,提示用戶,診斷儀進入工作模式失敗,需要用戶重新操作,以供重啟上述流程(步驟s10至s70)。
本實施例中,終端在與診斷儀建立通訊連接后,接收基于用戶操作觸發(fā)的診斷請求,根據(jù)診斷請求確定階段標(biāo)識,并將復(fù)位命令發(fā)送至診斷儀,若接收到設(shè)備狀態(tài)改變消息,則判斷診斷儀復(fù)位是否完整,若診斷儀復(fù)位完成則根據(jù)階段標(biāo)識判斷是否進入校驗階段,若為進入校驗階段,則發(fā)送校驗命令至診斷儀,在接收到診斷儀的反饋信息后發(fā)送進入工作模式的指令至診斷儀,以供診斷儀進入工作模式,若接收到設(shè)備狀態(tài)改變消息,則判斷診斷儀的串口是否處于開啟通信狀態(tài),若串口處于開啟通信狀態(tài)則驗證診斷儀是否進入工作模式,若是,則表明診斷儀初始化完成,控制診斷儀進行診斷。通過本發(fā)明,大大縮短了診斷儀初始化的時間,極大提升了用戶的使用感受。
此外,本發(fā)明實施例還提出一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)上存儲有快速初始化診斷儀程序,所述快速初始化診斷儀程序被處理器執(zhí)行時實現(xiàn)如上述所述的快速初始化診斷儀的方法的步驟。
本發(fā)明計算機可讀存儲介質(zhì)具體實施例同上述快速初始化診斷儀的方法的具體實施例大致相同,在此不做贅述。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者系統(tǒng)中還存在另外的相同要素。
上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在如上所述的一個存儲介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設(shè)備(可以是手機,計算機,服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。