本發(fā)明涉及通信技術(shù)領(lǐng)域,具體涉及一種CAN卡端與服務(wù)端SOCKET數(shù)據(jù)傳輸算法。
背景技術(shù):
在電動汽車充電過程中,需要將充電槍的數(shù)據(jù)信息通過傳輸端上傳到服務(wù)端中,同時客戶端也需將指令信息下發(fā)到服務(wù)端,完成對充電過程的控制或者監(jiān)控,現(xiàn)有技術(shù)中,客戶端或者充電槍的CAN數(shù)據(jù)信息與服務(wù)端SOCKET中的通信算法中,存在如下問題:1、存在的部分異常處理未解決,甚至部分程序無法正常操作;2、部分程序沒有相關(guān)算法,而是將相關(guān)計算邏輯直接交與服務(wù)器,導(dǎo)致服務(wù)器浪費資源,低效率,服務(wù)器數(shù)據(jù)異常;3、針對相關(guān)現(xiàn)場問題,很多數(shù)據(jù)傳輸終端無法提供數(shù)據(jù)的實時監(jiān)測。
技術(shù)實現(xiàn)要素:
本發(fā)明針對現(xiàn)有技術(shù)的不足,提出一種有效節(jié)省服務(wù)器資源,滿足COM異常斷開及COM斷開后的鏈接和滿足服務(wù)端SOCKET異常斷開及服務(wù)端SOCKET斷開后重新鏈接的CAN卡端與服務(wù)端SOCKET數(shù)據(jù)傳輸算法,具體技術(shù)方案如下:
一種CAN卡端與服務(wù)端SOCKET數(shù)據(jù)傳輸算法,采用步驟如下:
步驟一:判斷通信系統(tǒng)或者網(wǎng)絡(luò)是否可用;
步驟二:CAN卡端向傳輸終端CAS發(fā)送數(shù)據(jù),并根據(jù)CAN接收協(xié)議校驗數(shù)據(jù);
步驟三:傳輸終端CAS向服務(wù)端SOCKET發(fā)送數(shù)據(jù),并根據(jù)SOCKET發(fā)送協(xié)議進(jìn)行校驗;
步驟四:服務(wù)端SOCKET向傳輸終端CAS傳輸數(shù)據(jù),并根據(jù)SOCKET接收協(xié)議進(jìn)行校驗;
步驟五:傳輸終端CAS向CAN卡端傳輸數(shù)據(jù),同時根據(jù)CAN發(fā)送協(xié)議進(jìn)行校驗;
步驟六:完成。
為更好實現(xiàn)本發(fā)明,可進(jìn)一步為:
所述步驟二中,CAN接收協(xié)議為,
88 00 00 06 DA 00 00 00 00 00 00 00 00 77
88 00 00 06 DB 00 00 00 00 00 00 00 00 77;
所述步驟三中,SOCKET發(fā)送協(xié)議為,
C00,S03:75,S04:80,S05:15,S06:1,S00:155,S10:0XFFFF,S11:350,S12:100,S13:10.0.0.1,S01:345,S02:99,W01:1;2;3,O00:1,O10:1,C10:1,C99@@;
所述步驟四中,SOCKET接收協(xié)議為,
C00,O01:20160520135855883,O02:20160520135855,O03:20160520135855,O04:15,O05:155,O00:1,C10:1,O10:0,C99@@;
所述步驟五中,CAN發(fā)送協(xié)議為,
42 6F 33 00 00 00 00 00 00 00
4D 6B 00 00 00 00 00 00 00 00
41 72 00 00 00 00 00 00 00 00
44 74 00 00 00 00 00 00 00 00。
所述步驟二具體為,
2.1COM組件自動循環(huán);
2.2對COM控件事件消息進(jìn)行判斷,正確則進(jìn)入下一步;
2.3接受數(shù)據(jù),根據(jù)CAN接收協(xié)議對數(shù)據(jù)有效性進(jìn)行驗證,無效則返回步驟2.1,有效則進(jìn)入下一步;
2.4根據(jù)CAN接受協(xié)議進(jìn)行16進(jìn)制數(shù)據(jù)解密處理;
2.5再次根據(jù)CAN接收協(xié)議對數(shù)據(jù)有效性進(jìn)行驗證,無效則返回步驟2.1,有效則進(jìn)入下一步;
2.6將數(shù)據(jù)轉(zhuǎn)存在緩存中,并傳遞給傳輸終端CAS數(shù)據(jù)監(jiān)測,返回步驟2.1。
所述步驟三具體為,
3.1定時器啟動;
3.2對存儲在傳輸終端CAS中的待發(fā)送數(shù)據(jù),根據(jù)SOCKET發(fā)送協(xié)議進(jìn)行校驗,錯誤的數(shù)據(jù)則過濾掉,正確數(shù)據(jù)進(jìn)行存儲;
3.3再次對存儲數(shù)據(jù)進(jìn)行校驗,對數(shù)據(jù)進(jìn)行二次整理,不完整的數(shù)據(jù)等待下次數(shù)據(jù)合成,將完整的數(shù)據(jù)發(fā)送到服務(wù)端SOCKET;
3.4將發(fā)送的數(shù)據(jù)傳遞給傳輸終端CAS數(shù)據(jù)監(jiān)控,返回步驟3.1。
所述步驟四具體為,
4.1傳輸終端CAS不斷處理服務(wù)端SOCKET的鏈接,等待服務(wù)端SOCKET發(fā)送數(shù)據(jù);
4.2查驗鏈接是否成功,失敗則返回步驟4.1,成功則進(jìn)入下一步;
4.3讀取服務(wù)端SOCKET緩存的數(shù)據(jù),如鏈接失敗則返回步驟4.1,成功則進(jìn)入下一步;
4.4根據(jù)SOCKET接收協(xié)議校驗數(shù)據(jù),無效則返回步驟4.1,有效則進(jìn)入下一步;
4.5處理數(shù)據(jù),并將數(shù)據(jù)存儲到臨時緩沖中,等待發(fā)送;
4.6返回步驟4.1,同時發(fā)送傳輸終端CAS數(shù)據(jù)監(jiān)控。
本發(fā)明的有益效果為:有效解決了現(xiàn)在市場上,大部分充電設(shè)備因異常無法使用的問題;采用分布式的結(jié)構(gòu),解決了服務(wù)器浪費資源,低效率的問題,充分體現(xiàn)了分布式開發(fā)給整個業(yè)務(wù)邏輯帶來的優(yōu)勢;同時充分的利用了客戶端的硬件資源,節(jié)約了相應(yīng)的成本;擴(kuò)展了相關(guān)業(yè)務(wù)模塊,有利于后期業(yè)務(wù)的擴(kuò)充;提高了,整個項目的實施效率及高效的問題處理算法;節(jié)約了人員維護(hù)的時間及人員的成本。
附圖說明
圖1為本發(fā)明的流程示意圖;
圖2為本發(fā)明步驟二的流程示意圖;
圖3為本發(fā)明中步驟三的流程示意圖;
圖4為本發(fā)明中步驟四的流程示意圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明的較佳實施例進(jìn)行詳細(xì)闡述,以使本發(fā)明的優(yōu)點和特征能更易于被本領(lǐng)域技術(shù)人員理解,從而對本發(fā)明的保護(hù)范圍做出更為清楚明確的界定。
本實施例中CAN卡端為客戶端或者充電槍,服務(wù)端SOCKET為:TCP/ID協(xié)議服務(wù)器,用于發(fā)送已獲取充電樁的數(shù)據(jù),及接受充電樁控制參數(shù),傳輸終端CAS為CAN卡端與服務(wù)端SOCKET間的交互平臺。
如圖1至圖4所示:一種CAN卡端與服務(wù)端SOCKET數(shù)據(jù)傳輸算法,,采用步驟如下:
步驟一:判斷通信系統(tǒng)或者網(wǎng)絡(luò)是否可用,CAN卡端是根據(jù)系統(tǒng)驅(qū)動設(shè)備而鏈接,故當(dāng)CAN卡端斷開的時候需在傳輸終端CAS算法里判斷CAN卡端是否失去了鏈接,并在所有的CAN卡端操作中,判斷CAN卡端的鏈接情況,服務(wù)端SOCKET是根據(jù)系統(tǒng)的API函數(shù)進(jìn)行鏈接,故當(dāng)服務(wù)端SOCKET斷開的時候需要在傳輸終端CAS算法里判斷服務(wù)端SOCKET是否失去鏈接,并在所有的服務(wù)端SOCKET操作中,判斷服務(wù)端SOCKET的鏈接情況;
步驟二:CAN卡端向傳輸終端CAS發(fā)送數(shù)據(jù),并根據(jù)CAN接收協(xié)議校驗數(shù)據(jù),具體為,
2.1COM組件自動循環(huán);
2.2對COM控件事件消息進(jìn)行判斷,正確則進(jìn)入下一步;
2.3接受數(shù)據(jù),根據(jù)CAN接收協(xié)議對數(shù)據(jù)有效性進(jìn)行驗證,無效則返回步驟2.1,有效則進(jìn)入下一步;
2.4根據(jù)CAN接受協(xié)議進(jìn)行16進(jìn)制數(shù)據(jù)解密處理;
2.5再次根據(jù)CAN接收協(xié)議對數(shù)據(jù)有效性進(jìn)行驗證,無效則返回步驟2.1,有效則進(jìn)入下一步;
2.6將數(shù)據(jù)轉(zhuǎn)存在緩存中,并傳遞給傳輸終端CAS數(shù)據(jù)監(jiān)測,返回步驟2.1。
其中CAN接收協(xié)議為,
88 00 00 06 DA 00 00 00 00 00 00 00 00 77
88 00 00 06 DB 00 00 00 00 00 00 00 00 77。
步驟三:傳輸終端CAS向服務(wù)端SOCKET發(fā)送數(shù)據(jù),并根據(jù)SOCKET發(fā)送協(xié)議進(jìn)行校驗,具體為,
3.1定時器啟動;
3.2對存儲在傳輸終端CAS中的待發(fā)送數(shù)據(jù),根據(jù)SOCKET發(fā)送協(xié)議進(jìn)行校驗,錯誤的數(shù)據(jù)則過濾掉,正確數(shù)據(jù)進(jìn)行存儲;
3.3再次對存儲數(shù)據(jù)進(jìn)行校驗,對數(shù)據(jù)進(jìn)行二次整理,不完整的數(shù)據(jù)等待下次數(shù)據(jù)合成,將完整的數(shù)據(jù)發(fā)送到服務(wù)端SOCKET;
3.4將發(fā)送的數(shù)據(jù)傳遞給傳輸終端CAS數(shù)據(jù)監(jiān)控,返回步驟3.1。
其中SOCKET發(fā)送協(xié)議為,
C00,S03:75,S04:80,S05:15,S06:1,S00:155,S10:0XFFFF,S11:350,S12:100,S13:10.0.0.1,S01:345,S02:99,W01:1;2;3,O00:1,O10:1,C10:1,C99@@;
步驟四:服務(wù)端SOCKET向傳輸終端CAS傳輸數(shù)據(jù),并根據(jù)SOCKET接收協(xié)議進(jìn)行校驗,具體為,
4.1傳輸終端CAS不斷處理服務(wù)端SOCKET的鏈接,等待服務(wù)端SOCKET發(fā)送數(shù)據(jù);
4.2查驗鏈接是否成功,失敗則返回步驟4.1,成功則進(jìn)入下一步;
4.3讀取服務(wù)端SOCKET緩存的數(shù)據(jù),如鏈接失敗則返回步驟4.1,成功則進(jìn)入下一步;
4.4根據(jù)SOCKET接收協(xié)議校驗數(shù)據(jù),無效則返回步驟4.1,有效則進(jìn)入下一步;
4.5處理數(shù)據(jù),并將數(shù)據(jù)存儲到臨時緩沖中,等待發(fā)送;
4.6返回步驟4.1,同時發(fā)送傳輸終端CAS數(shù)據(jù)監(jiān)控。
其中SOCKET接收協(xié)議為
C00,O01:20160520135855883,O02:20160520135855,O03:20160520135855,O04:15,O05:155,O00:1,C10:1,O10:0,C99@@。
步驟五:傳輸終端CAS向CAN卡端傳輸數(shù)據(jù),同時根據(jù)CAN發(fā)送協(xié)議進(jìn)行校驗;其中具體流程為和傳輸終端CAS向服務(wù)端SOCKET發(fā)送數(shù)據(jù)流程類似;其中CAN發(fā)送協(xié)議為,
42 6F 33 00 00 00 00 00 00 00
4D 6B 00 00 00 00 00 00 00 00
41 72 00 00 00 00 00 00 00 00
44 74 00 00 00 00 00 00 00 00。
步驟六:完成。