本發(fā)明涉及工業(yè)物聯(lián)網(wǎng)數(shù)據(jù)傳輸
技術(shù)領(lǐng)域:
,具體涉及一種遠(yuǎn)程數(shù)據(jù)傳輸終端、系統(tǒng)及其編碼、解碼方法。
背景技術(shù):
:目前,在工業(yè)物聯(lián)網(wǎng)領(lǐng)域中,智能終端、ERP、MES、PDM等系統(tǒng)間的交互信息仍然采用XML、JSON等數(shù)據(jù)格式,XML和JSON主要存在數(shù)據(jù)冗余很大,不能存儲(chǔ)特殊字符,轉(zhuǎn)義復(fù)雜而且繁瑣的缺陷,不利于工業(yè)物聯(lián)網(wǎng)高效、穩(wěn)定地發(fā)展。技術(shù)實(shí)現(xiàn)要素:針對(duì)現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供了一種遠(yuǎn)程數(shù)據(jù)傳輸終端、系統(tǒng)及其編碼、解碼方法,提高了工業(yè)物聯(lián)網(wǎng)中的設(shè)備、ERP、MES等系統(tǒng)間數(shù)據(jù)傳輸?shù)男省5谝环矫?,本發(fā)明提供的一種遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的編碼方法,包括:獲取編碼內(nèi)容第一行的所有字段,按從左到右的順序?qū)λ鲎侄芜M(jìn)行ASCII碼轉(zhuǎn)換,得到每個(gè)所述字段對(duì)應(yīng)的字段字符串,將所有所述字段字符串組成第一行的行字符串,其中,所述第一行的行字符串中每?jī)蓚€(gè)相鄰的所述字段字符串之間以0x01字符作為間隔,所述第一行的行字符串的結(jié)尾處為0x02字符,將所述第一行的行字符串作為臨時(shí)字符串;獲取所述編碼內(nèi)容下一行字段進(jìn)行編碼得到下一行的行字符串,并將所述下一行的行字符串添加到所述臨時(shí)字符串后,直到對(duì)所述編碼內(nèi)容所有行的字段都完成編碼,將最終得到的臨時(shí)字符串作為SelectHelp數(shù)據(jù)進(jìn)行發(fā)送。本發(fā)明提供的遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的編碼方法,編碼方式簡(jiǎn)單,傳輸速率快,能夠?qū)θ魏涡问降淖侄芜M(jìn)行編碼,適用于工業(yè)物聯(lián)網(wǎng)領(lǐng)域設(shè)備間的數(shù)據(jù)傳輸,統(tǒng)一了設(shè)備間在進(jìn)行數(shù)據(jù)交互時(shí)的協(xié)議格式,減少了接入工作量,有助于提高工業(yè)物聯(lián)網(wǎng)系統(tǒng)的集成效率。優(yōu)選地,所述對(duì)所述字段進(jìn)行ASCII碼轉(zhuǎn)換,得到每個(gè)所述字段對(duì)應(yīng)的字段字符串,包括:將所述字段進(jìn)行ASCII碼轉(zhuǎn)換得到第一字符串;若所述第一字符串中不包含0x01字符和0x02字符,則將第一字符串作為所述字段對(duì)應(yīng)的字段字符串;若所述第一字符串中包含0x01字符或0x02字符,則將所述字段轉(zhuǎn)化為base64字符,將所述base64字符進(jìn)行ASCII碼轉(zhuǎn)換,得到所述字段對(duì)應(yīng)的字段字符串。第二方面,本發(fā)明提供的一種遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的解碼方法,包括:接收SelectHelp數(shù)據(jù);將存儲(chǔ)地址的行坐標(biāo)和列坐標(biāo)均設(shè)為0;讀取所述SelectHelp數(shù)據(jù)中的字符,若所述字符不為0x01且所述字符不為0x02,則將所述字符添加在第二字符串末尾;若所述字符為0x01,則將所述第二字符轉(zhuǎn)換為文本數(shù)據(jù)存入存儲(chǔ)地址,清空所述第二字符串,存儲(chǔ)地址的列坐標(biāo)加1;若所述字符為0x02,則將所述第二字符串轉(zhuǎn)換為文本數(shù)據(jù)存入存儲(chǔ)地址,清空所述第二字符串,存儲(chǔ)地址的行坐標(biāo)加1,且存儲(chǔ)地址的列坐標(biāo)改為0;判斷所述字符是否為所述SelectHelp數(shù)據(jù)的最后一個(gè)字符,若不為最后一個(gè)字符,則讀取所述SelectHelp數(shù)據(jù)中的下一個(gè)字符,進(jìn)行字符轉(zhuǎn)換。本發(fā)明提供的遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的解碼方法,配合第一方面中的編碼方法,可以提高數(shù)據(jù)傳輸速率,統(tǒng)一了設(shè)備間在進(jìn)行數(shù)據(jù)交互時(shí)的協(xié)議格式,減少了接入工作量,有助于提高工業(yè)物聯(lián)網(wǎng)系統(tǒng)的集成效率。優(yōu)選地,還包括:判斷每一行存儲(chǔ)地址的最大列坐標(biāo)是否一致,若不一致,則將所述SelectHelp數(shù)據(jù)標(biāo)記為無(wú)效數(shù)據(jù)。第三方面,本發(fā)明提供的一種遠(yuǎn)程數(shù)據(jù)傳輸終端,包括:采集接口、數(shù)據(jù)預(yù)處理模塊、編碼模塊、通訊模塊;所述采集接口用于與設(shè)備的數(shù)據(jù)輸出接口連接;所述數(shù)據(jù)預(yù)處理模塊用于對(duì)所述設(shè)備輸出的數(shù)據(jù)進(jìn)行預(yù)處理,得到編碼內(nèi)容;所述編碼模塊用于獲取編碼內(nèi)容第一行的所有字段,按從左到右的順序?qū)λ鲎侄芜M(jìn)行ASCII碼轉(zhuǎn)換,得到每個(gè)所述字段對(duì)應(yīng)的字段字符串,將所有所述字段字符串組成第一行的行字符串,其中,所述第一行的行字符串中每?jī)蓚€(gè)相鄰的所述字段字符串之間以0x01字符作為間隔,所述第一行的行字符串的結(jié)尾處為0x02字符,將所述第一行的行字符串作為臨時(shí)字符串;獲取所述編碼內(nèi)容下一行字段進(jìn)行編碼得到下一行的行字符串,并將所述下一行的行字符串添加到所述臨時(shí)字符串后,直到對(duì)所述編碼內(nèi)容所有行的字段都完成編碼,將最終得到的臨時(shí)字符串作為SelectHelp數(shù)據(jù)進(jìn)行發(fā)送;所述通訊模塊用于將所述SelectHelp數(shù)據(jù)發(fā)送給遠(yuǎn)程服務(wù)器。本實(shí)施例提供的遠(yuǎn)程數(shù)據(jù)傳輸終端,通過(guò)合理的數(shù)據(jù)結(jié)構(gòu)封裝,減少不必要的信息,同時(shí)保證接口的統(tǒng)一性,減少設(shè)備、系統(tǒng)之間協(xié)議互轉(zhuǎn)的麻煩,實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng)、現(xiàn)場(chǎng)控制系統(tǒng)、制造執(zhí)行系統(tǒng)間的互通互聯(lián)。優(yōu)選地,所述采集接口包括I/O接口、RS232、RS485、以太網(wǎng)接口中的至少一種。優(yōu)選地,所述通訊模塊為有線(xiàn)通訊模塊或無(wú)線(xiàn)通訊模塊。第四方面,本發(fā)明提供的一種遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng),包括遠(yuǎn)程服務(wù)器、至少一個(gè)第三方面中所述的遠(yuǎn)程數(shù)據(jù)傳輸終端;所述遠(yuǎn)程服務(wù)器包括數(shù)據(jù)接收模塊、解碼模塊、存儲(chǔ)模塊;所述數(shù)據(jù)接收模塊用于接收終端發(fā)送的SelectHelp數(shù)據(jù);所述解碼模塊用于讀取所述SelectHelp數(shù)據(jù)中的字符,若所述字符不為0x01且所述字符不為0x02,則將所述字符添加在第二字符串末尾;若所述字符為0x01,則將所述第二字符轉(zhuǎn)換為文本數(shù)據(jù)存入存儲(chǔ)地址,清空所述第二字符串,存儲(chǔ)地址的列坐標(biāo)加1;若所述字符為0x02,則將所述第二字符串轉(zhuǎn)換為文本數(shù)據(jù)存入存儲(chǔ)地址,清空所述第二字符串,存儲(chǔ)地址的行坐標(biāo)加1,且存儲(chǔ)地址的列坐標(biāo)改為0;判斷所述字符是否為所述SelectHelp數(shù)據(jù)的最后一個(gè)字符,若不為最后一個(gè)字符,則讀取所述SelectHelp數(shù)據(jù)中的下一個(gè)字符,進(jìn)行字符轉(zhuǎn)換;存儲(chǔ)模塊用于存儲(chǔ)解碼后的SelectHelp數(shù)據(jù)。本發(fā)明提供的遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng),數(shù)據(jù)協(xié)議采用上述的SelectHelp格式,通過(guò)ZeroICE或者Socket的網(wǎng)絡(luò)傳輸框架實(shí)現(xiàn)數(shù)據(jù)的傳輸,傳輸及處理效率;統(tǒng)一了工業(yè)物聯(lián)網(wǎng)中各個(gè)設(shè)備、系統(tǒng)間數(shù)據(jù)交換的格式,減少設(shè)備、系統(tǒng)之間協(xié)議互轉(zhuǎn)的麻煩,推動(dòng)了工業(yè)物聯(lián)網(wǎng)的發(fā)展。優(yōu)選地,還包括數(shù)據(jù)查詢(xún)模塊,所述數(shù)據(jù)查詢(xún)模塊用于在所述存儲(chǔ)模塊中查找與用戶(hù)輸入的指令相關(guān)的數(shù)據(jù),并將查詢(xún)結(jié)果返回給用戶(hù)。優(yōu)選地,所述數(shù)據(jù)查詢(xún)模塊用于在所述存儲(chǔ)模塊中查找用戶(hù)輸入的存儲(chǔ)地址中的數(shù)據(jù),或,在存儲(chǔ)模塊中查找與用戶(hù)輸入的字段匹配的數(shù)據(jù),并將查詢(xún)結(jié)果返回給用戶(hù)。附圖說(shuō)明圖1為本發(fā)明實(shí)施例提供的遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的編碼方法的流程圖;圖2為本發(fā)明實(shí)施例提供的遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的解碼方法的流程圖;圖3為本發(fā)明實(shí)施例提供的遠(yuǎn)程數(shù)據(jù)傳輸終端的結(jié)構(gòu)框圖;圖4為本發(fā)明實(shí)施例提供的遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)的結(jié)構(gòu)框圖。具體實(shí)施方式下面將結(jié)合附圖對(duì)本發(fā)明技術(shù)方案的實(shí)施例進(jìn)行詳細(xì)的描述。以下實(shí)施例僅用于更加清楚地說(shuō)明本發(fā)明的技術(shù)方案,因此只作為示例,而不能以此來(lái)限制本發(fā)明的保護(hù)范圍。需要注意的是,除非另有說(shuō)明,本申請(qǐng)使用的技術(shù)術(shù)語(yǔ)或者科學(xué)術(shù)語(yǔ)應(yīng)當(dāng)為本發(fā)明所屬領(lǐng)域技術(shù)人員所理解的通常意義。實(shí)施例一如圖1所示,本實(shí)施例提供的一種遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的編碼方法,包括:步驟S11,獲取編碼內(nèi)容第一行的所有字段,按從左到右的順序?qū)ψ侄芜M(jìn)行ASCII碼轉(zhuǎn)換,得到每個(gè)字段對(duì)應(yīng)的字段字符串,將所有字段字符串組成第一行的行字符串,其中,第一行的行字符串中每?jī)蓚€(gè)相鄰的字段字符串之間以0x01字符作為間隔,第一行的行字符串的結(jié)尾處為0x02字符,將第一行的行字符串作為臨時(shí)字符串;步驟S12,獲取編碼內(nèi)容下一行字段進(jìn)行編碼得到下一行的行字符串,并將下一行的行字符串添加到臨時(shí)字符串后,直到對(duì)編碼內(nèi)容所有行的字段都完成編碼,將最終得到的臨時(shí)字符串作為SelectHelp數(shù)據(jù)進(jìn)行發(fā)送。其中,步驟S12中,獲取編碼內(nèi)容下一行字段進(jìn)行編碼得到下一行的行字符串的方法與步驟S11中的方法相同,在此不再贅述。其中,SelectHelp數(shù)據(jù)是一個(gè)數(shù)據(jù)查詢(xún)或數(shù)據(jù)包的集合體,SelectHelp數(shù)據(jù)按行與列進(jìn)行組織,如表1中的數(shù)據(jù)包括行和列,轉(zhuǎn)換后得到的SelectHelp數(shù)據(jù)的具體形式詳見(jiàn)后面的具體步驟。通常在工業(yè)物聯(lián)網(wǎng)領(lǐng)域中,SelectHelp數(shù)據(jù)的第一行包括名稱(chēng)(如表1中的“編號(hào)”、“當(dāng)前溫度”、“當(dāng)前位置”、“故障號(hào)”),從第二行開(kāi)始為各個(gè)名稱(chēng)對(duì)應(yīng)的數(shù)據(jù)(如表1中的“10”、“23.4”、“A01”、“11”)。其中,因?yàn)樵诠I(yè)以太網(wǎng)的業(yè)務(wù)數(shù)據(jù)交換過(guò)程中,基本不會(huì)存在0x01和0x02等特殊字符,因此,本實(shí)施例的遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議采用0x01字符作為字段間的分隔符,行與行之間則采用0x02字符進(jìn)行分隔。因此,字段轉(zhuǎn)換為ASCII碼后,不能出現(xiàn)0x01,0x02字符。字段長(zhǎng)短、數(shù)量沒(méi)有限制,可以任意增加字段,而不影響原有數(shù)據(jù),便于將來(lái)協(xié)議擴(kuò)展。本實(shí)施中的遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的協(xié)議幀格式具有以下特征:1)編碼格式所有的通訊包都是由ACSII碼字符組成。2)數(shù)據(jù)包以行和列形式顯示,組成表格形的數(shù)據(jù)。如表1所示,第一行顯示數(shù)據(jù)的具體的列名,第二層開(kāi)始表示具體每一行的值。其中,“編號(hào)”、“當(dāng)前溫度”、“當(dāng)前位置”、“故障號(hào)”為第一行的字段;“10”、“23.4”、“A01”、“11”為第二行的字段。表1編號(hào)當(dāng)前溫度當(dāng)前溫度故障號(hào)1023.4A0111以表1中的數(shù)據(jù)為例,進(jìn)行編碼,具體過(guò)程如下:步驟一,獲取編碼內(nèi)容第一行的所有字段:“編號(hào)”、“當(dāng)前溫度”、“當(dāng)前位置”、“故障號(hào)”;按從左到右的順序?qū)ψ侄芜M(jìn)行ASCII碼轉(zhuǎn)換得到每個(gè)字段對(duì)應(yīng)的字段字符串,如:字段“編號(hào)”轉(zhuǎn)換后對(duì)應(yīng)的字段字符串為“0x7f0x160x530xf7”,字段“當(dāng)前溫度”轉(zhuǎn)換后的字段字符串為“0x5f0x530x520x4d0x6e0x290x5e0xa6”,字段“當(dāng)前位置”轉(zhuǎn)換后對(duì)應(yīng)的字段字符串為“0x5f0x530x520x4d0x4f0x4d0x7f0x6e”,字段“故障號(hào)”轉(zhuǎn)換后對(duì)應(yīng)的字段字符串為“0x650x450x960x9c0x530xf7”;將所有字段字符串組成第一行的行字符串為“0x7f0x160x530xf70x010x5f0x530x520x4d0x6e0x290x5e0xa60x010x5f0x530x520x4d0x4f0x4d0x7f0x6e0x010x650x450x960x9c0x530xf70x02”,其中,每?jī)蓚€(gè)相鄰的字段字符串之間以0x01字符作為間隔,且行字符串以0x02字符結(jié)尾;將第一行的行字符串作為臨時(shí)字符串。其中,為0x01和0x02加上下劃線(xiàn)是為了清楚的顯示分隔符0x01和分隔符0x02的位置,實(shí)際編碼過(guò)程中不會(huì)帶有任何格式。步驟二,獲取編碼內(nèi)容第二行的所有字段:“10”、“23.4”、“A01”、“11”;按從左到右的順序?qū)ψ侄芜M(jìn)行ASCII碼轉(zhuǎn)換得到每個(gè)對(duì)應(yīng)的字段字符串,字段“10”轉(zhuǎn)換后對(duì)應(yīng)的字段字符串為“0x310x30”,字段“23.4”轉(zhuǎn)換后對(duì)應(yīng)的字段字符串為“0x320x330x2e0x34”,字段“A01”轉(zhuǎn)換后對(duì)應(yīng)的字段字符串為“0x410x300x31”,字段“11”轉(zhuǎn)換后對(duì)應(yīng)的字段字符串為“0x310x31”;將所有字段字符串組成第二行的行字符串為“0x310x300x010x320x330x2e0x340x010x410x300x310x010x310x310x02”,其中,每?jī)蓚€(gè)相鄰的字段字符串之間以0x01字符作為間隔,且行字符串以0x02字符結(jié)尾;將第二行的行字符串添加到臨時(shí)字符串后,得到新的臨時(shí)字符串為“0x7f0x160x530xf70x010x5f0x530x520x4d0x6e0x290x5e0xa60x010x5f0x530x520x4d0x4f0x4d0x7f0x6e0x010x650x450x960x9c0x530xf70x020x310x300x010x320x330x2e0x340x010x410x300x310x010x310x310x02”。由于表1中只列舉了兩行數(shù)據(jù),因此步驟二中得到的臨時(shí)字符串即為最終得到的臨時(shí)字符串,將最終得到的臨時(shí)字符串作為SelectHelp數(shù)據(jù)進(jìn)行發(fā)送。實(shí)際使用過(guò)程中遠(yuǎn)遠(yuǎn)不止兩行數(shù)據(jù),則只需繼續(xù)獲取編碼內(nèi)容下一行字段按上述方法進(jìn)行編碼,直到對(duì)所有行的字段都完成編碼,將最終得到的臨時(shí)字符串作為SelectHelp數(shù)據(jù)進(jìn)行發(fā)送即可。對(duì)每一行的編碼方式都類(lèi)似,在此不再贅述。本實(shí)施例提供的遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的編碼方法,編碼方式簡(jiǎn)單,傳輸速率快,能夠?qū)θ魏涡问降淖侄芜M(jìn)行編碼,適用于工業(yè)物聯(lián)網(wǎng)領(lǐng)域設(shè)備間的數(shù)據(jù)傳輸,統(tǒng)一了設(shè)備間在進(jìn)行數(shù)據(jù)交互時(shí)的協(xié)議格式,減少了接入工作量,有助于提高工業(yè)物聯(lián)網(wǎng)系統(tǒng)的集成效率。在對(duì)字段進(jìn)行ASCII碼轉(zhuǎn)換時(shí),為了防止轉(zhuǎn)換后出現(xiàn)0x01字符,與分隔符發(fā)生沖突,需要對(duì)字段進(jìn)行特殊的處理,因此,對(duì)字段進(jìn)行ASCII碼轉(zhuǎn)換得到字段字符串的具體過(guò)程包括:將字段進(jìn)行ASCII碼轉(zhuǎn)換得到第一字符串;若第一字符串中不包含0x01字符和0x02字符,則將第一字符串作為字段的字段字符串;若進(jìn)行ASCII碼轉(zhuǎn)換后的字段中包含0x01字符或0x02字符,則將字段轉(zhuǎn)化為base64字符,將base64字符進(jìn)行ASCII碼轉(zhuǎn)換得到字段字符串。實(shí)施例二基于與上述編碼方法相同的發(fā)明構(gòu)思,本實(shí)施例提供了一種遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的解碼方法,如圖2所示,包括:步驟S21,接收SelectHelp數(shù)據(jù)。步驟S22,將存儲(chǔ)地址的行坐標(biāo)和列坐標(biāo)均設(shè)為0。此為存儲(chǔ)地址初始化步驟。步驟S23,讀取SelectHelp數(shù)據(jù)中的字符,若字符不為0x01且字符不為0x02,則將字符存入第二字符串;若字符為0x01,則將第二字符串轉(zhuǎn)換為文本數(shù)據(jù)存入存儲(chǔ)地址,存儲(chǔ)地址的列坐標(biāo)加1;若字符為0x02,則將第二字符串轉(zhuǎn)換為文本數(shù)據(jù)存入存儲(chǔ)地址,存儲(chǔ)地址的行坐標(biāo)加1,且存儲(chǔ)地址的列坐標(biāo)改為0。步驟S24,判斷字符是否為SelectHelp數(shù)據(jù)的最后一個(gè)字符,若不為最后一個(gè)字符,則返回步驟S23,讀取SelectHelp數(shù)據(jù)中的下一個(gè)字符,進(jìn)行字符轉(zhuǎn)換;若為最后一個(gè)字符,則解碼結(jié)束。仍以表1中的數(shù)據(jù)為例,上述解碼過(guò)程為:接收編碼端發(fā)送過(guò)來(lái)的SelectHelp數(shù)據(jù)為“0x7f0x160x530xf70x010x5f0x530x520x4d0x6e0x290x5e0xa60x010x5f0x530x520x4d0x4f0x4d0x7f0x6e0x010x650x450x960x9c0x530xf70x020x310x300x010x320x330x2e0x340x010x410x300x310x010x310x310x02”,此時(shí)存儲(chǔ)地址的坐標(biāo)為(0,0)。讀取SelectHelp數(shù)據(jù)中的第一個(gè)字符為“0x7f”,不是0x01和0x02,則第二字符串string2=“0x7f”,讀取第二個(gè)字符“0x16”,則string2=“0x7f0x16”,讀取第三個(gè)字符“0x53”,則string2=“0x7f0x160x53”,讀取第四個(gè)字符“0xf7”,則string2=“0x7f0x160x530xf7”,讀取第五個(gè)字符為“0x01”,此時(shí),將string2進(jìn)行轉(zhuǎn)碼得到文本數(shù)據(jù)為“編號(hào)”,按存儲(chǔ)地址為(0,0)(即表1中第一行第一列的位置)進(jìn)行存儲(chǔ),并將存儲(chǔ)地址的列坐標(biāo)加1,則此時(shí)存儲(chǔ)地址為(0,1),清空string2。繼續(xù)讀取SelectHelp數(shù)據(jù)中的下一個(gè)字符,并將字符存入string2,直到遇到下一個(gè)“0x01”,將string2=“0x5f0x530x520x4d0x6e0x290x5e0xa6”進(jìn)行轉(zhuǎn)碼得到文本數(shù)據(jù)為“當(dāng)前溫度”,按存儲(chǔ)地址為(0,1)(即表1中第一行第一列的位置)進(jìn)行存儲(chǔ),并將存儲(chǔ)地址的列坐標(biāo)加1,則此時(shí)存儲(chǔ)地址為(0,2),清空string2。繼續(xù)讀取SelectHelp數(shù)據(jù)中的字符,按上述的步驟得到存儲(chǔ)地址為(0,2)的文本數(shù)據(jù)為“當(dāng)前位置”,存儲(chǔ)地址為(0,3)的文本數(shù)據(jù)為“故障號(hào)”。當(dāng)讀取到的字符為“0x02”時(shí),存儲(chǔ)地址的行坐標(biāo)加1,且存儲(chǔ)地址的列坐標(biāo)為0,則此時(shí)存儲(chǔ)地址改為(1,0)清空string2,這樣第一行的內(nèi)容就都解碼完成。按上述方法進(jìn)行第二行的解碼,最終還原表1中的所有內(nèi)容。本實(shí)施例提供的遠(yuǎn)程數(shù)據(jù)傳輸協(xié)議的解碼方法,配合上述編碼方法,可以提高數(shù)據(jù)傳輸速率,統(tǒng)一了設(shè)備間在進(jìn)行數(shù)據(jù)交互時(shí)的協(xié)議格式,減少了接入工作量,有助于提高工業(yè)物聯(lián)網(wǎng)系統(tǒng)的集成效率。為了檢測(cè)接收到的協(xié)議的完整性,在解碼過(guò)程中還包括:判斷每一行的字段數(shù)是否一致,如果不一致代表數(shù)據(jù)格式無(wú)效,其具體實(shí)現(xiàn)方式為:判斷每一行存儲(chǔ)地址的最大列坐標(biāo)是否一致,若不一致,則將SelectHelp數(shù)據(jù)標(biāo)記為無(wú)效數(shù)據(jù)。實(shí)施例三基于上述編碼方法相同的發(fā)明構(gòu)思,本實(shí)施例還提供的一種遠(yuǎn)程數(shù)據(jù)傳輸終端5,如圖3所示,包括:采集接口1、數(shù)據(jù)預(yù)處理模塊2、編碼模塊3、通訊模塊4。采集接口1用于與設(shè)備的數(shù)據(jù)輸出接口連接。數(shù)據(jù)預(yù)處理模塊2用于對(duì)設(shè)備輸出的數(shù)據(jù)進(jìn)行預(yù)處理,得到編碼內(nèi)容,預(yù)處理主要是對(duì)設(shè)備輸出的數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,使其滿(mǎn)足編碼協(xié)議的要求。編碼模塊3用于獲取編碼內(nèi)容第一行的所有字段,按從左到右的順序?qū)ψ侄芜M(jìn)行ASCII碼轉(zhuǎn)換,得到每個(gè)字段對(duì)應(yīng)的字段字符串,將所有字段字符串組成第一行的行字符串,其中,第一行的行字符串中每?jī)蓚€(gè)相鄰的字段字符串之間以0x01字符作為間隔,第一行的行字符串的結(jié)尾處為0x02字符,將第一行的行字符串作為臨時(shí)字符串;獲取編碼內(nèi)容下一行字段進(jìn)行編碼得到下一行的行字符串,并將下一行的行字符串添加到臨時(shí)字符串后,直到對(duì)編碼內(nèi)容所有行的字段都完成編碼,將最終得到的臨時(shí)字符串作為SelectHelp數(shù)據(jù)進(jìn)行發(fā)送。通訊模塊4用于將SelectHelp數(shù)據(jù)發(fā)送給遠(yuǎn)程服務(wù)器6。本實(shí)施例提供的遠(yuǎn)程數(shù)據(jù)傳輸終端5,通過(guò)合理的數(shù)據(jù)結(jié)構(gòu)封裝,減少不必要的信息,同時(shí)保證接口的統(tǒng)一性,減少設(shè)備、系統(tǒng)之間協(xié)議互轉(zhuǎn)的麻煩,實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng)、現(xiàn)場(chǎng)控制系統(tǒng)、制造執(zhí)行系統(tǒng)間的互通互聯(lián)。本實(shí)施例提供的遠(yuǎn)程數(shù)據(jù)傳輸終端5適用于現(xiàn)有工業(yè)4.0相關(guān)的信息物理系統(tǒng)的對(duì)接(CPS),同時(shí)支持與傳統(tǒng)業(yè)務(wù)系統(tǒng)的高效互聯(lián),支持汽配、化工、機(jī)械裝備、電子、電纜、軸承等行業(yè)。本實(shí)施例的遠(yuǎn)程數(shù)據(jù)傳輸終端5選用嵌入式工業(yè)主板制成,嵌入式工業(yè)主板包含CPU、內(nèi)存以及FLASH存儲(chǔ)器,CPU完成各個(gè)模塊之間的協(xié)調(diào)控制,數(shù)據(jù)預(yù)處理模塊2、編碼模塊3的功能也通過(guò)CPU內(nèi)部的程序?qū)崿F(xiàn)。其中,采集接口1包括I/O接口、RS232、RS485、以太網(wǎng)接口,以方便地連接具有不同接口的設(shè)備、儀表、機(jī)器人等。其中,通訊模塊4為有線(xiàn)通訊模塊或無(wú)線(xiàn)通訊模塊。實(shí)施例四基于與上述編碼、解碼方法相同的發(fā)明構(gòu)思,本實(shí)施例還提供了一種遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng),如圖4所示,包括遠(yuǎn)程服務(wù)器6、至少一個(gè)遠(yuǎn)程數(shù)據(jù)傳輸終端5。遠(yuǎn)程服務(wù)器6包括數(shù)據(jù)接收模塊61、解碼模塊62、存儲(chǔ)模塊63。其中,數(shù)據(jù)接收模塊61用于接收終端發(fā)送的SelectHelp數(shù)據(jù)。數(shù)據(jù)接收模塊61用ICE或者Socket作為傳輸?shù)讓拥耐ㄓ嵔涌凇F渲?,解碼模塊62用于讀取SelectHelp數(shù)據(jù)中的字符,若字符不為0x01且字符不為0x02,則將字符添加在第二字符串末尾;若字符為0x01,則將第二字符轉(zhuǎn)換為文本數(shù)據(jù)存入存儲(chǔ)地址,清空第二字符串,存儲(chǔ)地址的列坐標(biāo)加1;若字符為0x02,則將第二字符串轉(zhuǎn)換為文本數(shù)據(jù)存入存儲(chǔ)地址,清空第二字符串,存儲(chǔ)地址的行坐標(biāo)加1,且存儲(chǔ)地址的列坐標(biāo)改為0;判斷字符是否為SelectHelp數(shù)據(jù)的最后一個(gè)字符,若不為最后一個(gè)字符,則讀取SelectHelp數(shù)據(jù)中的下一個(gè)字符,進(jìn)行字符轉(zhuǎn)換。其中,存儲(chǔ)模塊63用于存儲(chǔ)解碼后的SelectHelp數(shù)據(jù)。其中,遠(yuǎn)程服務(wù)器6還包括數(shù)據(jù)查詢(xún)模塊64,數(shù)據(jù)查詢(xún)模塊64用于在存儲(chǔ)模塊63中查找與用戶(hù)輸入的指令相關(guān)的數(shù)據(jù),并將查詢(xún)結(jié)果返回給用戶(hù)。具體地,用戶(hù)輸入的指令可以是存儲(chǔ)地址,數(shù)據(jù)查詢(xún)模塊64會(huì)在存儲(chǔ)模塊63中查找用戶(hù)輸入的存儲(chǔ)地址中的數(shù)據(jù);用戶(hù)輸入的指令也可以是字段,數(shù)據(jù)查詢(xún)模塊64會(huì)在存儲(chǔ)模塊63中查找與該字段匹配的數(shù)據(jù)。本實(shí)施例提供的遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng),數(shù)據(jù)協(xié)議采用上述的SelectHelp數(shù)據(jù)格式,通過(guò)ZeroICE或者Socket的網(wǎng)絡(luò)傳輸框架實(shí)現(xiàn)數(shù)據(jù)的傳輸,傳輸及處理效率;統(tǒng)一了工業(yè)物聯(lián)網(wǎng)中各個(gè)設(shè)備、系統(tǒng)間數(shù)據(jù)交換的格式,減少設(shè)備、系統(tǒng)之間協(xié)議互轉(zhuǎn)的麻煩,推動(dòng)了工業(yè)物聯(lián)網(wǎng)的發(fā)展。最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求和說(shuō)明書(shū)的范圍當(dāng)中。當(dāng)前第1頁(yè)1 2 3