diff --git a/README.md b/README.md index c50e05c..b540258 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,444 @@ > 根据对应消息ID:MsgId +### 举个栗子1 +#### 1.组包: +> MsgId 0x02:实时信息上报 + +``` package +JTNEPackage jTNEPackage = new JTNEPackage(); +//消息头 +jTNEPackage.AskId = JTNEAskId.Success.ToByteValue(); +jTNEPackage.MsgId = JTNEMsgId.uploadim.ToByteValue(); +jTNEPackage.VIN = "123456789"; +//消息体 +JTNE_0x02 jTNE_0X02 = new JTNE_0x02(); +jTNE_0X02.Values = new Dictionary(); +//整车数据 +JTNE_0x02_0x01 jTNE_0X02_0X01 = new JTNE_0x02_0x01(); +jTNE_0X02_0X01.Accelerator = 0x02; +jTNE_0X02_0X01.Brakes = 0x03; +jTNE_0X02_0X01.CarStatus = 0x04; +jTNE_0X02_0X01.ChargeStatus = 0x05; +jTNE_0X02_0X01.DCStatus = 0x06; +jTNE_0X02_0X01.OperationMode = 0x07; +jTNE_0X02_0X01.Resistance = 123; +jTNE_0X02_0X01.SOC = 0x03; +jTNE_0X02_0X01.Speed = 58; +jTNE_0X02_0X01.Stall = 0x02; +jTNE_0X02_0X01.TotalDis = 6666; +jTNE_0X02_0X01.TotalTemp = 99; +jTNE_0X02_0X01.TotalVoltage = 100; +jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01); +//驱动电机数据 +JTNE_0x02_0x02 jTNE_0X02_0X02 = new JTNE_0x02_0x02(); +jTNE_0X02_0X02.Electricals = new List(); +Metadata.Electrical electrical1 = new Metadata.Electrical(); +electrical1.ElControlTemp = 0x01; +electrical1.ElCurrent = 100; +electrical1.ElNo = 0x01; +electrical1.ElSpeed = 65; +electrical1.ElStatus = 0x02; +electrical1.ElTemp = 0x03; +electrical1.ElTorque = 55; +electrical1.ElVoltage = 236; +Metadata.Electrical electrical2 = new Metadata.Electrical(); +electrical2.ElControlTemp = 0x02; +electrical2.ElCurrent = 101; +electrical2.ElNo = 0x02; +electrical2.ElSpeed = 66; +electrical2.ElStatus = 0x03; +electrical2.ElTemp = 0x05; +electrical2.ElTorque = 566; +electrical2.ElVoltage = 2136; +jTNE_0X02_0X02.Electricals.Add(electrical1); +jTNE_0X02_0X02.Electricals.Add(electrical2); +jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02); +//燃料电池数据 +JTNE_0x02_0x03 jTNE_0X02_0X03 = new JTNE_0x02_0x03(); +jTNE_0X02_0X03.DCStatus = 0x02; +jTNE_0X02_0X03.FuelBatteryCurrent = 111; +jTNE_0X02_0X03.FuelBatteryVoltage = 2222; +jTNE_0X02_0X03.FuelConsumptionRate = 3222; +jTNE_0X02_0X03.HydrogenSystemMaxConcentrations = 6666; +jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo = 0x56; +jTNE_0X02_0X03.HydrogenSystemMaxPressure = 3336; +jTNE_0X02_0X03.HydrogenSystemMaxPressureNo = 0x65; +jTNE_0X02_0X03.HydrogenSystemMaxTemp = 3355; +jTNE_0X02_0X03.HydrogenSystemMaxTempNo = 0x22; +jTNE_0X02_0X03.Temperatures = new byte[] +{ + 0x01,0x02,0x03 +}; +jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03); +//发动机数据 +JTNE_0x02_0x04 jTNE_0X02_0X04 = new JTNE_0x02_0x04(); +jTNE_0X02_0X04.EngineStatus = 0x01; +jTNE_0X02_0X04.FuelRate = 102; +jTNE_0X02_0X04.Revs = 203; +jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x04, jTNE_0X02_0X04); +//车辆位置数据 +JTNE_0x02_0x05 jTNE_0X02_0X05 = new JTNE_0x02_0x05(); +jTNE_0X02_0X05.Lat = 1233355; +jTNE_0X02_0X05.Lng = 3255555; +jTNE_0X02_0X05.PositioStatus = 0x01; +jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x05, jTNE_0X02_0X05); +//极值数据 +JTNE_0x02_0x06 jTNE_0X02_0X06 = new JTNE_0x02_0x06(); +jTNE_0X02_0X06.MaxTempBatteryAssemblyNo = 0x12; +jTNE_0X02_0X06.MaxTempProbeBatteryNo = 0x32; +jTNE_0X02_0X06.MaxTempProbeBatteryValue = 0x42; +jTNE_0X02_0X06.MaxVoltageBatteryAssemblyNo = 0x11; +jTNE_0X02_0X06.MaxVoltageSingleBatteryNo = 0x15; +jTNE_0X02_0X06.MaxVoltageSingleBatteryValue = 123; +jTNE_0X02_0X06.MinTempBatteryAssemblyNo = 0x32; +jTNE_0X02_0X06.MinTempProbeBatteryNo = 0x11; +jTNE_0X02_0X06.MinTempProbeBatteryValue = 0x06; +jTNE_0X02_0X06.MinVoltageBatteryAssemblyNo = 0x07; +jTNE_0X02_0X06.MinVoltageSingleBatteryNo = 0x09; +jTNE_0X02_0X06.MinVoltageSingleBatteryValue = 0x08; +jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x06, jTNE_0X02_0X06); +//报警数据 +JTNE_0x02_0x07 jTNE_0X02_0X07 = new JTNE_0x02_0x07(); +jTNE_0X02_0X07.AlarmBatteryFlag = 5533; +jTNE_0X02_0X07.AlarmLevel = 0x11; +jTNE_0X02_0X07.AlarmBatteryOthers = new List +{ + 1000,1001,1002 +}; +jTNE_0X02_0X07.AlarmEls = new List +{ + 2000,2001,2002 +}; +jTNE_0X02_0X07.AlarmEngines = new List +{ + 3000,3001,3002 +}; +jTNE_0X02_0X07.AlarmOthers = new List +{ + 4000,4001,4002 +}; +jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x07, jTNE_0X02_0X07); +//可充电储能装置电压数据 +JTNE_0x02_0x08 jTNE_0X02_0X08 = new JTNE_0x02_0x08(); +jTNE_0X02_0X08.BatteryAssemblies = new List(); +Metadata.BatteryAssembly batteryAssembly1 = new Metadata.BatteryAssembly(); +batteryAssembly1.BatteryAssemblyCurrent = 123; +batteryAssembly1.BatteryAssemblyNo = 0x01; +batteryAssembly1.BatteryAssemblyVoltage = 0x02; +batteryAssembly1.SingleBatteryCount = 55; +batteryAssembly1.ThisSingleBatteryBeginCount = 0x02; +batteryAssembly1.ThisSingleBatteryBeginNo = 111; +batteryAssembly1.SingleBatteryVoltages = new List { + 111,222,333 +}; +Metadata.BatteryAssembly batteryAssembly2 = new Metadata.BatteryAssembly(); +batteryAssembly2.BatteryAssemblyCurrent = 1234; +batteryAssembly2.BatteryAssemblyNo = 0x03; +batteryAssembly2.BatteryAssemblyVoltage = 0x05; +batteryAssembly2.SingleBatteryCount = 66; +batteryAssembly2.ThisSingleBatteryBeginCount = 0x02; +batteryAssembly2.ThisSingleBatteryBeginNo = 222; +batteryAssembly2.SingleBatteryVoltages = new List { + 444,555,666 +}; +jTNE_0X02_0X08.BatteryAssemblies.Add(batteryAssembly1); +jTNE_0X02_0X08.BatteryAssemblies.Add(batteryAssembly2); +jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x08, jTNE_0X02_0X08); + +//可充电储能装置温度数据 +JTNE_0x02_0x09 jTNE_0X02_0X09 = new JTNE_0x02_0x09(); +jTNE_0X02_0X09.BatteryTemperatures = new List(); + +Metadata.BatteryTemperature batteryTemperature1 = new Metadata.BatteryTemperature(); +batteryTemperature1.BatteryAssemblyNo = 0x01; +batteryTemperature1.Temperatures = new byte[] +{ + 0x01,0x02,0x03,0x04 +}; + +Metadata.BatteryTemperature batteryTemperature2 = new Metadata.BatteryTemperature(); +batteryTemperature2.BatteryAssemblyNo = 0x02; +batteryTemperature2.Temperatures = new byte[] +{ + 0x05,0x06,0x07,0x08 +}; + +jTNE_0X02_0X09.BatteryTemperatures.Add(batteryTemperature1); +jTNE_0X02_0X09.BatteryTemperatures.Add(batteryTemperature2); +jTNE_0X02.Values.Add(JTNE_0x02_Body.JTNE_0x02_0x09, jTNE_0X02_0X09); + +jTNEPackage.Bodies = jTNE_0X02; +var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString(); + +// 输出结果Hex: +2323020131323334353637383900000000000000000100D001040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA20802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A0902010004010203040200040506070867 +``` + +#### 2.手动解包: +``` unpackage +1.原包: +2323020131323334353637383900000000000000000100D001040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA20802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A0902010004010203040200040506070867 + +2.拆解 +23 23 --起始符 +02 --命令标识 +01 --应答标志 +31 32 33 34 35 36 37 38 +39 00 00 00 00 00 00 00 00 --VIN +01 --数据加密方式 +00 D0 --数据单元长度 + +01 --整车数据 +04 05 07 00 3A 00 00 1A +0A 00 64 00 63 03 06 02 +00 7B 02 03 +02 --驱动电机数据 +02 01 02 01 00 41 00 37 +03 00 EC 00 64 02 03 02 +00 42 02 36 05 08 58 00 65 +03 --燃料电池数据 +08 AE 00 6F 0C 96 00 03 +01 02 03 0D 1B 22 1A 0A +56 0D 08 65 02 +04 --发动机数据 +01 00 CB 00 66 +05 --车辆位置数据 +01 00 31 AD 03 00 12 D1 +CB +06 --极值数据 +11 15 00 7B 07 09 00 08 +32 12 42 11 32 06 +07 --报警数据 +11 00 00 15 9D 03 00 00 +03 E8 00 00 03 E9 00 00 +03 EA 03 00 00 07 D0 00 +00 07 D1 00 00 07 D2 03 +00 00 0B B8 00 00 0B B9 +00 00 0B BA 03 00 00 0F +A0 00 00 0F A1 00 00 0F +A2 +08 --可充电储能装置电压数据 +02 01 00 02 00 7B 00 37 +00 6F 03 00 6F 00 DE 01 +4D 03 00 05 04 D2 00 42 +00 DE 03 01 BC 02 2B 02 9A +09 --可充电储能装置温度数据 +02 01 00 04 01 02 03 04 +02 00 04 05 06 07 08 + +67 --校验位 + +``` + +#### 3.程序解包: +``` unpackage1 +1.原包: +string data="2323020131323334353637383900000000000000000100D001040507003A00001A0A00640063030602007B02030202010201004100370300EC00640203020042023605085800650308AE006F0C9600030102030D1B221A0A560D086502040100CB006605010031AD030012D1CB061115007B0709000832124211320607110000159D03000003E8000003E9000003EA03000007D0000007D1000007D20300000BB800000BB900000BBA0300000FA000000FA100000FA20802010002007B0037006F03006F00DE014D03000504D2004200DE0301BC022B029A0902010004010203040200040506070867"; + +2.将原包反序列化 +JTNEPackage jTNEPackage = JTNESerializer.Deserialize(data); +JTNE_0x02 jTNE_0X02 = jTNEPackage.Bodies as JTNE_0x02; + +//整车数据 +JTNE_0x02_0x01 jTNE_0X02_0X01 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x01] as JTNE_0x02_0x01; +Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x01, jTNE_0X02_0X01.TypeCode); +Assert.Equal(0x02, jTNE_0X02_0X01.Accelerator); +Assert.Equal(0x03, jTNE_0X02_0X01.Brakes); +Assert.Equal(0x04, jTNE_0X02_0X01.CarStatus); +Assert.Equal(0x05, jTNE_0X02_0X01.ChargeStatus); +Assert.Equal(0x06, jTNE_0X02_0X01.DCStatus); +Assert.Equal(0x07, jTNE_0X02_0X01.OperationMode); +Assert.Equal(123, jTNE_0X02_0X01.Resistance); +Assert.Equal(0x03, jTNE_0X02_0X01.SOC); +Assert.Equal(58, jTNE_0X02_0X01.Speed); +Assert.Equal(0x02, jTNE_0X02_0X01.Stall); +Assert.Equal((uint)6666, jTNE_0X02_0X01.TotalDis); +Assert.Equal(99, jTNE_0X02_0X01.TotalTemp); +Assert.Equal(100, jTNE_0X02_0X01.TotalVoltage); + +//驱动电机数据 +JTNE_0x02_0x02 jTNE_0X02_0X02 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x02] as JTNE_0x02_0x02; +Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x02, jTNE_0X02_0X02.TypeCode); +Assert.Equal(2, jTNE_0X02_0X02.ElectricalCount); +Metadata.Electrical electrical1 = jTNE_0X02_0X02.Electricals[0]; +Assert.Equal(0x01, electrical1.ElControlTemp); +Assert.Equal(100, electrical1.ElCurrent); +Assert.Equal(0x01, electrical1.ElNo); +Assert.Equal(65, electrical1.ElSpeed); +Assert.Equal(0x02, electrical1.ElStatus); +Assert.Equal(0x03, electrical1.ElTemp); +Assert.Equal(55, electrical1.ElTorque); +Assert.Equal(236, electrical1.ElVoltage); +Metadata.Electrical electrical2 = jTNE_0X02_0X02.Electricals[1]; +Assert.Equal(0x02, electrical2.ElControlTemp); +Assert.Equal(101, electrical2.ElCurrent); +Assert.Equal(0x02, electrical2.ElNo); +Assert.Equal(66, electrical2.ElSpeed); +Assert.Equal(0x03, electrical2.ElStatus); +Assert.Equal(0x05, electrical2.ElTemp); +Assert.Equal(566, electrical2.ElTorque); +Assert.Equal(2136, electrical2.ElVoltage); + +//燃料电池数据 +JTNE_0x02_0x03 jTNE_0X02_0X03 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x03] as JTNE_0x02_0x03; +Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x03, jTNE_0X02_0X03.TypeCode); +Assert.Equal(0x02, jTNE_0X02_0X03.DCStatus); +Assert.Equal(111, jTNE_0X02_0X03.FuelBatteryCurrent); +Assert.Equal(2222, jTNE_0X02_0X03.FuelBatteryVoltage); +Assert.Equal(3222, jTNE_0X02_0X03.FuelConsumptionRate); +Assert.Equal(6666, jTNE_0X02_0X03.HydrogenSystemMaxConcentrations); +Assert.Equal(0x56, jTNE_0X02_0X03.HydrogenSystemMaxConcentrationsNo); +Assert.Equal(3336, jTNE_0X02_0X03.HydrogenSystemMaxPressure); +Assert.Equal(0x65, jTNE_0X02_0X03.HydrogenSystemMaxPressureNo); +Assert.Equal(3355, jTNE_0X02_0X03.HydrogenSystemMaxTemp); +Assert.Equal(0x22, jTNE_0X02_0X03.HydrogenSystemMaxTempNo); +Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jTNE_0X02_0X03.Temperatures); + +//发动机数据 +JTNE_0x02_0x04 jTNE_0X02_0X04 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x04] as JTNE_0x02_0x04; +Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x04, jTNE_0X02_0X04.TypeCode); +Assert.Equal(0x01, jTNE_0X02_0X04.EngineStatus); +Assert.Equal(102, jTNE_0X02_0X04.FuelRate); +Assert.Equal(203, jTNE_0X02_0X04.Revs); + +//车辆位置数据 +JTNE_0x02_0x05 jTNE_0X02_0X05 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x05] as JTNE_0x02_0x05; +Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x05, jTNE_0X02_0X05.TypeCode); +Assert.Equal((uint)1233355, jTNE_0X02_0X05.Lat); +Assert.Equal((uint)3255555, jTNE_0X02_0X05.Lng); +Assert.Equal(0x01, jTNE_0X02_0X05.PositioStatus); + +//极值数据 +JTNE_0x02_0x06 jTNE_0X02_0X06 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x06] as JTNE_0x02_0x06; +Assert.Equal(0x12, jTNE_0X02_0X06.MaxTempBatteryAssemblyNo); +Assert.Equal(0x32, jTNE_0X02_0X06.MaxTempProbeBatteryNo); +Assert.Equal(0x42, jTNE_0X02_0X06.MaxTempProbeBatteryValue); +Assert.Equal(0x11, jTNE_0X02_0X06.MaxVoltageBatteryAssemblyNo); +Assert.Equal(0x15, jTNE_0X02_0X06.MaxVoltageSingleBatteryNo); +Assert.Equal(123, jTNE_0X02_0X06.MaxVoltageSingleBatteryValue); +Assert.Equal(0x11, jTNE_0X02_0X06.MinTempProbeBatteryNo); +Assert.Equal(0x06, jTNE_0X02_0X06.MinTempProbeBatteryValue); +Assert.Equal(0x07, jTNE_0X02_0X06.MinVoltageBatteryAssemblyNo); +Assert.Equal(0x09, jTNE_0X02_0X06.MinVoltageSingleBatteryNo); +Assert.Equal(0x08, jTNE_0X02_0X06.MinVoltageSingleBatteryValue); + +//报警数据 +JTNE_0x02_0x07 jTNE_0X02_0X07 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x07] as JTNE_0x02_0x07; +Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x07, jTNE_0X02_0X07.TypeCode); +Assert.Equal(0x11, jTNE_0X02_0X07.AlarmLevel); +Assert.Equal(3, jTNE_0X02_0X07.AlarmBatteryOthers.Count); +Assert.Equal(new List +{ + 1000,1001,1002 +}, jTNE_0X02_0X07.AlarmBatteryOthers); +Assert.Equal(3, jTNE_0X02_0X07.AlarmEls.Count); +Assert.Equal(new List +{ + 2000,2001,2002 +}, jTNE_0X02_0X07.AlarmEls); +Assert.Equal(3, jTNE_0X02_0X07.AlarmEngines.Count); +Assert.Equal(new List +{ + 3000,3001,3002 +}, jTNE_0X02_0X07.AlarmEngines); +Assert.Equal(3, jTNE_0X02_0X07.AlarmOthers.Count); +Assert.Equal(new List +{ + 4000,4001,4002 +}, jTNE_0X02_0X07.AlarmOthers); + +//可充电储能装置电压数据 +JTNE_0x02_0x08 jTNE_0X02_0X08 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x08] as JTNE_0x02_0x08; +Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x08, jTNE_0X02_0X08.TypeCode); +Assert.Equal(2, jTNE_0X02_0X08.BatteryAssemblyCount); + +Metadata.BatteryAssembly batteryAssembly1 = jTNE_0X02_0X08.BatteryAssemblies[0]; +Assert.Equal(123, batteryAssembly1.BatteryAssemblyCurrent); +Assert.Equal(0x01, batteryAssembly1.BatteryAssemblyNo); +Assert.Equal(0x02, batteryAssembly1.BatteryAssemblyVoltage); +Assert.Equal(55, batteryAssembly1.SingleBatteryCount); +Assert.Equal(111, batteryAssembly1.ThisSingleBatteryBeginNo); +Assert.Equal(3, batteryAssembly1.ThisSingleBatteryBeginCount); +Assert.Equal(new List { + 111,222,333 +}, batteryAssembly1.SingleBatteryVoltages); + +Metadata.BatteryAssembly batteryAssembly2 = jTNE_0X02_0X08.BatteryAssemblies[1]; +Assert.Equal(1234, batteryAssembly2.BatteryAssemblyCurrent); +Assert.Equal(0x03, batteryAssembly2.BatteryAssemblyNo); +Assert.Equal(0x05, batteryAssembly2.BatteryAssemblyVoltage); +Assert.Equal(66, batteryAssembly2.SingleBatteryCount); +Assert.Equal(222, batteryAssembly2.ThisSingleBatteryBeginNo); +Assert.Equal(3, batteryAssembly2.ThisSingleBatteryBeginCount); +Assert.Equal(new List { + 444,555,666 +}, batteryAssembly2.SingleBatteryVoltages); + +//可充电储能装置温度数据 +JTNE_0x02_0x09 jTNE_0X02_0X09 = jTNE_0X02.Values[JTNE_0x02_Body.JTNE_0x02_0x09] as JTNE_0x02_0x09; +Assert.Equal(JTNE_0x02_Body.JTNE_0x02_0x09, jTNE_0X02_0X09.TypeCode); +Assert.Equal(2, jTNE_0X02_0X09.BatteryTemperatureCount); + +Metadata.BatteryTemperature batteryTemperature1 = jTNE_0X02_0X09.BatteryTemperatures[0]; +Assert.Equal(0x01, batteryTemperature1.BatteryAssemblyNo); +Assert.Equal(4, batteryTemperature1.TemperatureProbeCount); +Assert.Equal(new byte[] +{ + 0x01,0x02,0x03,0x04 +}, batteryTemperature1.Temperatures); + +Metadata.BatteryTemperature batteryTemperature2 = jTNE_0X02_0X09.BatteryTemperatures[1]; +Assert.Equal(0x02, batteryTemperature2.BatteryAssemblyNo); +Assert.Equal(4, batteryTemperature2.TemperatureProbeCount); +Assert.Equal(new byte[] +{ + 0x05,0x06,0x07,0x08 +}, batteryTemperature2.Temperatures); + +``` + +### 举个栗子2 +``` create package +// 使用消息Id的扩展方法创建JTNEPackage包 +JTNEPackage jTNEPackage= JTNEMsgId.login.Create("123456789", JTNEAskId.CMD, new JTNE_0x01 +{ + PDATime = DateTime.Parse("2019-01-22 23:55:56"), + LoginNum = 1, + BatteryLength = 0x04, + SIM = "12345678998765432100", + BatteryNos = new List() + { + "1234", + "4567", + "9870" + } +}); +var hex = JTNESerializer.Serialize(jTNEPackage).ToHexString(); +//输出结果Hex: +232301FE313233343536373839000000000000000001002A130116173738000131323334353637383939383736353433323130300304313233343435363739383730FD +``` +### 举个栗子3 +``` config +// 全局配置 +JTNEGlobalConfig.Instance + //.SetDeviceMsgSNDistributed(//todo 实现IDeviceMsgSNDistributed设备流水号) + //.SetPlatformMsgSNDistributed(//todo 实现IPlatformMsgSNDistributed平台流水号) + //.SetDataBodiesEncrypt(//todo 实现IJTNEEncrypt消息数据体加密算法) + //.SetPlatformLoginEncrypt(//todo 实现IJTNEEncrypt平台登入加密算法) + // 注册自定义车载终端控制命令 + //.Register_JTNE0x82CustomBody(//todo 继承自JTNE_0x82_Body类) + // 注册自定义实时信息上报信息 + //.Register_JTNE0x02CustomBody(//todo 继承自JTNE_0x02_CustomBody类) + // 若为终端设置命令,则自定义终端设置命令,若为参数查询响应命令,则为自定义参数查询响应命令 + //.Register_JTNE0x81CustomBody(//todo 继承自JTNE_0x81_Body类) + // 若为终端设置命令,则自定义终端设置命令依赖对象,若为参数查询响应命令,则为自定义参数查询响应命令依赖对象 + //.Register_JTNE0x81CustomDepenedBody("依赖对象消息id","被依赖对象消息id") + // 跳过校验码验证 + .SetSkipCRCCode(true); +``` ## NuGet安装 | Package Name | Version | Downloads