public override void Decompose(byte[] message, ref int offset, DataBaseUnit protocol) { var entity = (CanMessageData)protocol; //520 entity.CANID = message.ReadBigEndianUInt32(ref offset); entity.FP = message[offset++]; entity.DT = message.ReadBigEndianUInt64(ref offset); //DataTypeConversion.ConvertDateTimeToInt(message.ReadBytes6Time(ref offset)); entity.CDL = message[offset++]; int len = Convert.ToInt32(entity.CDL); //BitConverter.ToInt32(message, offset); byte[] buffer = new byte[8]; try { for (int i = 0; i < 8; i++) { buffer[i] = message[offset++]; } entity.CDATA = buffer; } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public override void CreateBodyBytes(DataBaseUnit entity, ref List <byte> buffer) { var singleEntity = (CanMessageData)entity; buffer.AddRange(singleEntity.CANID.EndianUInt32ToBytes()); buffer.Add(singleEntity.FP); var TimeStamp = singleEntity.DT.EndianULongToBytes(); buffer.AddRange(TimeStamp); buffer.Add(singleEntity.CDL); buffer.AddRange(singleEntity.CDATA); }
/// <summary> /// 向缓存数组中添加实体解析结果 /// </summary> /// <param name="unit">数据单元</param> /// <param name="byetsBuffer">目标字节缓存</param> public void CreateBytes(DataBaseUnit unit, ref List <byte> byetsBuffer) { var parserId = unit.DataType; if (!ProtocolParseDictionay.ContainsKey(parserId)) { throw new InvalidOperationException(string.Format("error: msgid'{0:X2}' is not exist", parserId)); } var parser = ProtocolParseDictionay[parserId]; //byetsBuffer.Add(unit.DataType); parser.CreateBodyBytes(unit, ref byetsBuffer); }
/// <summary> /// Get database by name. /// </summary> /// <param name="databaseName">Database name.</param> /// <returns>Database unit.</returns> public DataBaseUnit GetDataBase(string databaseName) { DataBaseUnit result = null; if (string.IsNullOrWhiteSpace(databaseName)) { return(null); } var dataBasesConfig = this._configManager.GetConfigFromService <DataBasesConfig>(this.GetDatabaseConfigName(), this.GetSystemName(), NodeDataType.Xml); if (dataBasesConfig != null && !dataBasesConfig.DatabaseGroups.IsNullOrEmpty()) { IList <DataBaseUnit> databaseUnits = dataBasesConfig.DatabaseGroups.SelectMany(group => group.DatabaseCollection).ToList(); if (databaseUnits != null && databaseUnits.Any()) { result = databaseUnits.FirstOrDefault(database => database.Name.Equals(databaseName, StringComparison.OrdinalIgnoreCase)); } } return(result); }
public abstract void CreateBodyBytes(DataBaseUnit entity, ref List <byte> buffer);
public abstract void Decompose(byte[] message, ref int offset, DataBaseUnit entity);
/// <summary> /// Initializes a new instance of the DataCommand class. /// </summary> /// <param name="database">Database descriptor.</param> /// <param name="dataCommand">Data command descriptor.</param> public DataCommand(DataBaseUnit database, DataCommandUnit dataCommand) { this.databaseConfig = database; this.dataCommandConfig = dataCommand; }