コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
 public abstract void CreateBodyBytes(DataBaseUnit entity, ref List <byte> buffer);
コード例 #6
0
 public abstract void Decompose(byte[] message, ref int offset, DataBaseUnit entity);
コード例 #7
0
ファイル: DataCommand.cs プロジェクト: Bart-Li/Projects
 /// <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;
 }