コード例 #1
0
ファイル: ByteConverter.cs プロジェクト: zenglc/BACsharp
        public static object GetAppTagValue(byte[] apdu, int startIndex, BacNetTag metaTag, ref int len)
        {
            object res = null;

            switch (metaTag.Number)
            {
            case 1:     //UNSIGNED_INT
                var boolValue = new BacNetBool(metaTag);
                res = boolValue;
                break;

            case 2:     //UNSIGNED_INT
                var uIntValue = new BacNetUInt(apdu, len, metaTag.Length, ref len);
                res = uIntValue;
                break;

            case 3:     //SIGNED_INT
                var intValue = new BacNetInt(apdu, len, metaTag.Length, ref len);
                res = intValue;
                break;

            case 4:     //REAL
                var realValue = new BacNetReal(apdu, len, metaTag.Length, ref len);
                res = realValue;
                break;

            case 5:     //DOUBLE
                var doubleValue = new BacNetDouble(apdu, len, metaTag.Length, ref len);
                res = doubleValue;
                break;

            case 7:     //CHARACTER STRING
                var str = new BacNetString(apdu, len, metaTag.Length, ref len);
                res = str;
                break;

            case 9:     //ENUMERATION
                var enumValue = new BacNetEnumeration(apdu, len, metaTag.Length, ref len);
                res = enumValue;
                break;

            case 11:     //TIME
                var time = new BacNetTime(apdu, len, ref len);
                res = time;
                break;

            case 12:     //OBJECT IDENTIFIER
                var obj = new BacNetObject(apdu, len, ref len);
                res = obj;
                break;
            }
            return(res);
        }
コード例 #2
0
        public byte[] GetBytes()
        {
            ArrayList res = new ArrayList();

            res.Add((byte)((byte)BacNetEnums.BACNET_PDU_TYPE.PDU_TYPE_CONFIRMED_SERVICE_REQUEST | (1 << 1)));
            res.Add((byte)84);

            res.Add((byte)InvokeId);
            res.Add((byte)BacNetEnums.BACNET_CONFIRMED_SERVICE.SERVICE_CONFIRMED_SUBSCRIBE_COV);


            //Process ID
            var processIdTag = new BacNetTag {
                Class = true, Length = (byte)ProccessId.GetLength(), Number = 0
            };

            res.AddRange(processIdTag.GetBytes());
            res.AddRange(ProccessId.GetBytes());

            //Object ID
            var objectTag = new BacNetTag {
                Class = true, Length = 4, Number = 1
            };

            res.AddRange(objectTag.GetBytes());
            res.AddRange(ObjectId.GetObjectBytes());

            //Issue Confirmed Notifications
            var icn = new BacNetBool();

            icn.Value = false;
            var icnTag = new BacNetTag {
                Class = true, Length = (byte)icn.GetLength(), Number = 2
            };

            res.AddRange(icnTag.GetBytes());
            res.AddRange(icn.GetBytes());

            //Lifetime
            var lifeTime = new BacNetUInt();

            lifeTime.Value = 360;
            var lifeTimeTag = new BacNetTag {
                Class = true, Length = (byte)lifeTime.GetLength(), Number = 3
            };

            res.AddRange(lifeTimeTag.GetBytes());
            res.AddRange(lifeTime.GetBytes());

            return((byte[])res.ToArray(typeof(byte)));
        }