Newer
Older
BRServer / BRServer / HumiTagHandler.cs
root on 30 Mar 2020 1 KB elec first commit
using System;
using System.Collections.Generic;
using System.Collections;
using BRServer.Model;

namespace BRServer
{
    public class HumiTagHandler : TagHandler
    {
        public override bool isThisTag(Tag tag)
        {
            if (!(tag is UploadTag))
            {
                return false;
            }

            UploadTag uploadTag = tag as UploadTag;

            return uploadTag.BizType == 17 ? true : false;
        }

        public override void execute(CasicSession session, Tag tag, BR br)
        {
            //TODO LIST:解析数据,保存数据
            UploadTag BRTag = tag as UploadTag;
            int itv = BRTag.CollectInter;
            String collecTime = BRTag.CollectTime;
            int len = BRTag.Len;
            String dataValue = BRTag.DataValue;

            float humi = strHexToFloat(dataValue.Substring(0, 8));
            if (float.IsNaN(humi))
            {
                br.HUMIDITY = null;
            }
            else
            {
                br.HUMIDITY = humi;
            }

            session.Logger.Info("湿度数据上传TAG:oid:" + BRTag.Oid + " 采集间隔: " +
            itv + " 采集时间:" + collecTime + " 上传数值:" + humi);

        }

        //网络序列转float
        private float strHexToFloat(String src)
        {
            if (src.Length != 8)
                return 0;

            byte[] lBt ={
                                   byte.Parse(src.Substring(0,2),System.Globalization.NumberStyles.HexNumber),
                                   byte.Parse(src.Substring(2,2),System.Globalization.NumberStyles.HexNumber),
                                   byte.Parse(src.Substring(4,2),System.Globalization.NumberStyles.HexNumber),
                                   byte.Parse(src.Substring(6,2),System.Globalization.NumberStyles.HexNumber)                             
                               };
            float ss = BitConverter.ToSingle(lBt, 0);
            return ss;

        }

    }
}