예제 #1
0
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = CharValue.GetHashCode();
         hashCode = (hashCode * 397) ^ ByteValue.GetHashCode();
         hashCode = (hashCode * 397) ^ SByteValue.GetHashCode();
         hashCode = (hashCode * 397) ^ ShortValue.GetHashCode();
         hashCode = (hashCode * 397) ^ UShortValue.GetHashCode();
         hashCode = (hashCode * 397) ^ IntValue;
         hashCode = (hashCode * 397) ^ (int)UIntValue;
         hashCode = (hashCode * 397) ^ LongValue.GetHashCode();
         hashCode = (hashCode * 397) ^ ULongValue.GetHashCode();
         hashCode = (hashCode * 397) ^ FloatValue.GetHashCode();
         hashCode = (hashCode * 397) ^ DoubleValue.GetHashCode();
         hashCode = (hashCode * 397) ^ DecimalValue.GetHashCode();
         hashCode = (hashCode * 397) ^ DateTimeValue.GetHashCode();
         hashCode = (hashCode * 397) ^ GuidValue.GetHashCode();
         hashCode = (hashCode * 397) ^ StringValue.GetHashCode();
         return(hashCode);
     }
 }
        /// <summary>
        /// 实时数据
        /// </summary>
        /// <param name="b"></param>
        /// 发送7e 7e 0e 01 00 12 34 56 00 00 00 00 17 09 27 10 12 10 01 00 00 00 02 00 00 00 03 00 04 00 05 00 06 00 01 00 02 00 03 00 04 00 05 00 02 00 00 00 00 00 00 01 00 02 00 03 00 00 00 04 00 00 00 00 7d 7d
        public static Byte[] OnResolveRealData(byte[] b, int bCount, TcpSocketClient client)
        {
            string tStr = ConvertData.ToHexString(b, 0, 2);

            if (tStr != "7E7E")
            {
                return(null);
            }
            Zhgd_iot_tower_current data = new Zhgd_iot_tower_current();

            #region 原协议
            //设备号
            data.sn = ConvertData.ToHexString(b, 5, 3);
            //司机卡号
            data.driver_id_code = ConvertData.ToHexString(b, 8, 4);
            //日期
            tStr = ConvertData.ToHexString(b, 12, 6);
            try
            {
                data.@timestamp = DPC_Tool.GetTimeStamp(DateTime.ParseExact(tStr, "yyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture));
            }
            catch
            {
                data.@timestamp = DPC_Tool.GetTimeStamp();
            }
            IntValue iv = new IntValue();
            //经度
            iv.bValue1 = b[18];
            iv.bValue2 = b[19];
            iv.bValue3 = b[20];
            iv.bValue4 = b[21];
            //data.Current.Longitude = (iv.iValue / 100000.0).ToString("0.00");
            //纬度
            iv.bValue1 = b[22];
            iv.bValue2 = b[23];
            iv.bValue3 = b[24];
            iv.bValue4 = b[25];
            //data.Current.Latitude = (iv.iValue / 100000.0).ToString("0.00");
            UShortValue s = new UShortValue();
            //高度
            s.bValue1   = b[26];
            s.bValue2   = b[27];
            data.height = double.Parse((s.sValue / 100.00).ToString("0.00"));
            //幅度
            s.bValue1  = b[28];
            s.bValue2  = b[29];
            data.range = double.Parse((s.sValue / 100.00).ToString("0.00"));
            ShortValue sv = new ShortValue();
            //转角
            sv.bValue1    = b[30];
            sv.bValue2    = b[31];
            data.rotation = double.Parse((sv.sValue / 10.00).ToString("0.00"));
            //重量
            s.bValue1   = b[32];
            s.bValue2   = b[33];
            data.weight = double.Parse((s.sValue / 100.00).ToString("0.00"));
            //风速
            s.bValue1       = b[34];
            s.bValue2       = b[35];
            data.wind_speed = double.Parse((s.sValue / 100.00).ToString("0.00"));
            data.wind_grade = ConvertWind.WindToLeve(s.sValue / 100.0f);
            if (data.wind_grade >= 13)
            {
                data.wind_grade = 12;
            }
            //倾角X
            sv.bValue1 = b[36];
            sv.bValue2 = b[37];
            data.dip_x = double.Parse((sv.sValue / 100.00).ToString("0.00"));
            //倾角Y
            sv.bValue1 = b[38];
            sv.bValue2 = b[39];
            data.dip_y = double.Parse((sv.sValue / 100.00).ToString("0.00"));
            //安全力矩
            s.bValue1 = b[40];
            s.bValue2 = b[41];
            //data.Current.Safetorque = (s.sValue / 10.00).ToString("0.00");
            //安全起重量
            s.bValue1 = b[42];
            s.bValue2 = b[43];
            //data.Current.SafeWeight = (s.sValue / 100.00).ToString("0.00");
            //倍率
            //data.Current.Times = Convert.ToInt32(b[44]).ToString();

            //限位控制器状态
            //s.bValue1 = b[51];
            //s.bValue2 = b[52];
            //data.Current.LimitStatus = Convert.ToString(s.sValue, 2).PadLeft(16, '0');
            //LimitFlag(data, data.Current.LimitStatus);

            ////传感器状态
            //s.bValue1 = b[53];
            //s.bValue2 = b[54];
            //data.Current.SensorStatus = Convert.ToString(s.sValue, 2).PadLeft(16, '0');

            //预警告码
            IntValue i = new IntValue();
            //i.bValue1 = b[55];
            //i.bValue2 = b[56];
            //i.bValue3 = b[57];
            //i.bValue4 = b[58];
            //string WarnType = Convert.ToString(i.iValue, 2).PadLeft(32, '0');

            //WarnFlag(data, WarnType);
            //报警告码
            i.bValue1 = b[59];
            i.bValue2 = b[60];
            i.bValue3 = b[61];
            i.bValue4 = b[62];
            string AlarmType = Convert.ToString(i.iValue, 2).PadLeft(32, '0'); //总共是32位右对齐
            AlarmFlag(data, AlarmType);                                        //报警码解析
            tStr = ConvertData.ToHexString(b, 64, 2);
            if (tStr != "7D7D")
            {
                return(null);
            }
            #endregion

            //进行数据put
            Tower_operation.Send_tower_Current(data);
            return(null);
        }
예제 #3
0
 //参数配置
 //7A 7A 01 00 02 04 32 00 31 32 33 34 35 36 37 38 17 10 31 17 34 00 17 10 31 01 00 01 01 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0a 00 0b 00 0c 00 0d 00 31 32 33 D4 18 7b 7b
 //7a 7a 01 00 02 04 00 00 00 00 7b 7b
 static public void ReceiveDispose_ParameterConfig(byte[] data, TcpSocketClient client)
 {
     try
     {
         Frame_ParameterConfig dataFrame = new Frame_ParameterConfig();
         //设备编号
         byte[] sn = new byte[8];   //设备编号
         for (int i = 0; i < 8; i++)
         {
             sn[i] = data[i];
         }
         dataFrame.DeviceNo = Encoding.ASCII.GetString(sn);  //获取设备编号ASCII
         //参数修改时间
         string tStr = ConvertData.ToHexString(data, 8, 6);
         try
         {
             dataFrame.ParameterUpdateTime = DateTime.ParseExact(tStr, "yyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture);
         }
         catch (Exception)
         {
             dataFrame.ParameterUpdateTime = DateTime.Now;
         }
         //安装时间
         tStr = ConvertData.ToHexString(data, 14, 3);
         try
         {
             dataFrame.InstallDate = DateTime.ParseExact(tStr, "yyMMdd", System.Globalization.CultureInfo.InvariantCulture);
         }
         catch (Exception)
         {
             dataFrame.InstallDate = DateTime.Now;
         }
         //额定载荷
         UShortValue us = new UShortValue();
         us.bValue1           = data[17];
         us.bValue2           = data[18];
         dataFrame.LoadRating = us.sValue;
         //预警系数
         dataFrame.EarlyAlarmCoefficient = data[19];
         //报警系数
         dataFrame.AlarmCoefficient = data[20];
         //空载AD1
         ShortValue s = new ShortValue();
         s.bValue1          = data[21];
         s.bValue2          = data[22];
         dataFrame.EmptyAD1 = s.sValue;
         //空载AD2
         s.bValue1          = data[23];
         s.bValue2          = data[24];
         dataFrame.EmptyAD2 = s.sValue;
         //空载AD3
         s.bValue1          = data[25];
         s.bValue2          = data[26];
         dataFrame.EmptyAD3 = s.sValue;
         //空载AD4
         s.bValue1          = data[27];
         s.bValue2          = data[28];
         dataFrame.EmptyAD4 = s.sValue;
         //空载AD
         s.bValue1         = data[29];
         s.bValue2         = data[30];
         dataFrame.EmptyAD = s.sValue;
         //标准重物AD1
         s.bValue1 = data[31];
         s.bValue2 = data[32];
         dataFrame.StandardLoadAD1 = s.sValue;
         //标准重物AD2
         s.bValue1 = data[33];
         s.bValue2 = data[34];
         dataFrame.StandardLoadAD2 = s.sValue;
         //标准重物AD3
         s.bValue1 = data[35];
         s.bValue2 = data[36];
         dataFrame.StandardLoadAD3 = s.sValue;
         //标准重物AD4
         s.bValue1 = data[37];
         s.bValue2 = data[38];
         dataFrame.StandardLoadAD1 = s.sValue;
         //标准重物AD
         s.bValue1 = data[39];
         s.bValue2 = data[40];
         dataFrame.StandardLoadAD = s.sValue;
         //标准重物
         s.bValue1 = data[41];
         s.bValue2 = data[42];
         dataFrame.StandardLoad = s.sValue;
         //倾角预警值
         s.bValue1 = data[43];
         s.bValue2 = data[44];
         dataFrame.AngleEarlyAlarm = s.sValue;
         //倾角报警值
         s.bValue1            = data[45];
         s.bValue2            = data[46];
         dataFrame.AngleAlarm = s.sValue;
         //软件版本号 ASCII
         byte[] SoftVersion = new byte[data.Length - 47];
         for (int i = 47, j = 0; i < data.Length; i++, j++)
         {
             SoftVersion[j] = data[i];
         }
         dataFrame.SoftVersion = Encoding.ASCII.GetString(SoftVersion);
         //拼接应答
         byte[] result = SendJoint_ParameterConfig(dataFrame);
         if (result != null)
         {
             client.SendBuffer(result);
         }
     }
     catch (Exception)
     { }
 }
예제 #4
0
        //实时数据
        //7A 7A 01 00 02 01 15 00 31 32 33 34 35 36 37 38 17 10 31 17 34 00 01 00 02 00 03 00 01 15 03 7B 7B
        //有报警7A 7A 01 00 02 01 15 00 31 32 33 34 35 36 37 38 17 10 31 17 34 00 01 00 02 00 03 00 0f DB E2 7B 7B
        static public void ReceiveDispose_Current(byte[] data, TcpSocketClient client, bool isCurrent)
        {
            try
            {
                Zhgd_iot_discharge_current dataFrame = new Zhgd_iot_discharge_current();
                //设备编号
                byte[] sn = new byte[8];   //设备编号
                for (int i = 0; i < 8; i++)
                {
                    sn[i] = data[i];
                }
                dataFrame.sn = Encoding.ASCII.GetString(sn);  //获取设备编号ASCII
                //RTC
                string tStr = ConvertData.ToHexString(data, 8, 6);
                try
                {
                    dataFrame.timestamp = DPC_Tool.GetTimeStamp(DateTime.ParseExact(tStr, "yyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture));
                }
                catch (Exception)
                {
                    dataFrame.timestamp = DPC_Tool.GetTimeStamp(DateTime.Now);
                }
                //当前载重
                UShortValue us = new UShortValue();
                us.bValue1       = data[14];
                us.bValue2       = data[15];
                dataFrame.weight = us.sValue;
                //倾角X
                ShortValue s = new ShortValue();
                s.bValue1       = data[16];
                s.bValue2       = data[17];
                dataFrame.dip_x = (double)((double)(s.sValue) / 100d);
                //倾角Y
                s.bValue1       = data[18];
                s.bValue2       = data[19];
                dataFrame.dip_y = (double)((double)(s.sValue) / 100d);
                //报警状态
                string        state = Convert.ToString(data[20], 2).PadLeft(8, '0');
                List <string> vs    = new List <string>();
                dataFrame.is_warning = "N";
                //  dataFrame.WeightWarning = (byte)(state[7] - 48);
                if ((byte)(state[6] - 48) == 1)
                {
                    vs.Add(Warning_type.重量告警); dataFrame.is_warning = "Y";
                }
                //dataFrame.WeightAlarm = (byte)(state[6] - 48);
                // dataFrame.AngleWarning = (byte)(state[5] - 48);
                if ((byte)(state[4] - 48) == 1)
                {
                    vs.Add(Warning_type.重量告警); dataFrame.is_warning = "Y";
                }
                //dataFrame.AngleAlarm = (byte)(state[4] - 48);
                //离线数据应答
                if (!isCurrent)
                {
                    byte[] result = SendJoint_OffLine();
                    if (result != null)
                    {
                        client.SendBuffer(result);
                    }
                }

                //进行数据put
                Discharge_operation.Send_discharge_Current(dataFrame);
            }
            catch (Exception)
            { }
        }
예제 #5
0
        /// <summary>
        /// 实时数据
        /// </summary>
        /// <param name="b"></param>
        /// 7A7A0103000144003132333435363738000000000000000000000000000102000841000000000000000000000000000000000F0000000000000000000000000000000000000000000000000006637B7B7A7A010300000E003132333435363738000102000841DC7F7B7B
        public static Byte[] OnResolveRealData(byte[] b, int bCount)
        {
            string tStr = ConvertData.ToHexString(b, 0, 2);

            if (tStr != "7A7A")
            {
                return(null);
            }
            Zhgd_iot_lift_current data = new Zhgd_iot_lift_current();

            //设备编号
            byte[] t = new byte[8];
            for (int i = 8, j = 0; i < 16; i++, j++)
            {
                t[j] = b[i];
            }
            data.sn = Encoding.ASCII.GetString(t);
            string str1 = b[19].ToString("X2") + b[18].ToString("X2") + b[17].ToString("X2") + b[16].ToString("X2");

            //司机工号
            for (int i = 20, j = 0; i < 28; i++, j++)
            {
                t[j] = b[i];
            }
            //日期
            tStr = ConvertData.ToHexString(b, 28, 6);
            try
            {
                data.timestamp = DPC.DPC_Tool.GetTimeStamp(DateTime.ParseExact(tStr, "yyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture));
            }
            catch
            {
                data.timestamp = DPC.DPC_Tool.GetTimeStamp(DateTime.Now);
            }
            //重量 吨
            UShortValue s      = new UShortValue();
            string      str    = b[35].ToString("X2") + b[34].ToString("X2");
            int         result = int.Parse(str, System.Globalization.NumberStyles.HexNumber);

            data.weight = double.Parse((result / 1000.00).ToString("0.00"));//设备发送单位:吨
            //当前额定载荷
            str    = b[37].ToString("X2") + b[36].ToString("X2");
            result = int.Parse(str, System.Globalization.NumberStyles.HexNumber);
            //data.RatedWeight = (result / 1000.00).ToString("0.00");//设备发送单位:吨
            //高度 m
            s.bValue1   = b[38];
            s.bValue2   = b[39];
            data.height = double.Parse((s.sValue / 10.00).ToString("0.00"));//设备发送单位:分米
            //速度 m/秒
            s.bValue1  = b[40];
            s.bValue2  = b[41];
            data.speed = double.Parse((s.sValue / 10.00).ToString("0.00"));//设备发送单位:分米//设备发送单位:分米/秒
            //楼层
            s.bValue1  = b[42];
            data.floor = int.Parse(s.sValue.ToString("0"));
            //人数
            s.bValue1    = b[43];
            data.peoples = int.Parse(s.sValue.ToString("0"));
            //传感器状态
            s.bValue1 = b[44];
            s.bValue2 = b[45];
            // data.SensorSet = Convert.ToString(s.sValue, 2).PadLeft(16, '0');
            //报警码
            s.bValue1 = b[46];
            s.bValue2 = b[47];
            //2字节: 0-重量预警 1-重量报警 2-顶层预警 3-顶层报警 4-蹲底 5-门打开 6-风速预警 7-风速报警 9-人数报警 10-防坠器报警
            //data.AlarmType = Convert.ToString(s.sValue, 2).PadLeft(16, '0');//2字节:0-顶层预警 1-底层预警 2-顶层报警 3-底层报警 4-重量预警 5-重量报警 6-偏载 7-风速预警 8-风速报警 9-门未关好
            string        alarm = Convert.ToString(s.sValue, 2).PadLeft(16, '0');
            List <string> vs    = new List <string>();

            data.is_warning = "N";
            if (alarm[14] == '1')
            {
                vs.Add(Warning_type.重量告警); data.is_warning = "Y";
            }
            if (alarm[8] == '1')
            {
                vs.Add(Warning_type.风速报警); data.is_warning = "Y";
            }
            if (alarm[7] == '1')
            {
                vs.Add(Warning_type.人数报警); data.is_warning = "Y";
            }
            if (alarm[6] == '1')
            {
                vs.Add(Warning_type.防坠器报警); data.is_warning = "Y";
            }
            data.warning_type = vs.ToArray();
            //继电器状态
            s.bValue1 = b[48];
            //  data.PowerStatu = s.sValue.ToString("0");
            //GPRS信号强度
            //  data.GprsSignal = ((sbyte)b[49]).ToString();
            ///门状态
            data.door_status = (b[50] + Convert.ToByte(64)).ToString();//b[50].ToString();/// 加192 Convert.ToInt32("11000000",2)

            //风力等级
            data.wind_grade = b[51];
            //风速
            s.bValue1       = b[52];
            s.bValue2       = b[53];
            data.wind_speed = double.Parse((s.sValue / 100.00).ToString("0.00")); //设备发送单位:cm/s 除以100得出m/s
            //倾角X
            short X = Convert.ToInt16(("0x" + b[55].ToString("X2") + b[54].ToString("X2")), 16);

            data.dip_x = double.Parse((X / 100.00).ToString("0.00"));  //倾角X 协议要求除以100
            //倾角Y
            short Y = Convert.ToInt16(("0x" + b[57].ToString("X2") + b[56].ToString("X2")), 16);

            data.dip_y = double.Parse((Y / 100.00).ToString("0.00"));  //倾角Y 协议要求除以100
            tStr       = ConvertData.ToHexString(b, 78, 2);
            //身份证号处理
            byte[] d = new byte[18];
            for (int i = 58, j = 0; i < 76; i++, j++)
            {
                d[j] = b[i];
            }
            data.driver_id_code = Encoding.ASCII.GetString(d).Replace("\0", "");
            if (tStr != "7B7B")
            {
                return(null);
            }

            //进行数据put
            Lift_operation.Send_Lift_Current(data);
            return(null);
        }
        /// <summary>
        /// 实时数据
        /// </summary>
        /// <param name="b"></param>
        /// <param name="bCount"></param>
        /// <param name="client"></param>
        /// <param name="df"></param>
        public static void OnResolveCurrent(byte[] b, int bCount, TcpSocketClient client)
        {
            string tStr = ConvertData.ToHexString(b, 0, 2);

            if (tStr != "7A7A")
            {
                return;
            }
            Zhgd_iot_dust_noise_current current = new  Zhgd_iot_dust_noise_current();

            byte[] t = new byte[8];
            for (int i = 8, j = 0; i < 16; i++, j++)
            {
                t[j] = b[i];
            }
            current.sn = Encoding.ASCII.GetString(t);
            tStr       = ConvertData.ToHexString(b, 16, 6);
            try
            {
                current.timestamp = DPC_Tool.GetTimeStamp(DateTime.ParseExact(tStr, "yyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture));
            }
            catch
            {
                current.timestamp = DPC_Tool.GetTimeStamp(DateTime.Now);
            }
            UShortValue s = new UShortValue();

            s.bValue1 = b[22];
            s.bValue2 = b[23];
            if (s.sValue.ToString() == "0")
            {
                current.pm2_5 = 5;
            }
            else
            {
                current.pm2_5 = s.sValue;
            }
            s.bValue1 = b[24];
            s.bValue2 = b[25];
            if (s.sValue.ToString() == "0")
            {
                current.pm10 = 5;
            }
            else
            {
                current.pm10 = s.sValue;
            }
            s.bValue1              = b[26];
            s.bValue2              = b[27];
            current.noise          = double.Parse((float.Parse(s.sValue.ToString()) / 10).ToString("0.0"));
            s.bValue1              = b[28];
            s.bValue2              = b[29];
            current.temperature    = double.Parse((float.Parse(s.sValue.ToString()) / 10).ToString("0.0"));
            s.bValue1              = b[30];
            s.bValue2              = b[31];
            current.humidity       = double.Parse((float.Parse(s.sValue.ToString()) / 10).ToString("0.0"));
            s.bValue1              = b[32];
            s.bValue2              = b[33];
            current.wind_speed     = double.Parse((float.Parse(s.sValue.ToString()) / 10).ToString("0.0"));
            s.bValue1              = b[34];
            s.bValue2              = b[35];
            current.wind_direction = s.sValue;
            //    current.GprsSignal = ((sbyte)b[36]).ToString();
            // current.automatic = b[37].ToString();
            //current.Manual = b[38].ToString();
            s.bValue1            = b[39];
            s.bValue2            = b[40];
            current.air_pressure = double.Parse((float.Parse(s.sValue.ToString()) / 100).ToString("0.00"));
            s.bValue1            = b[41];
            s.bValue2            = b[42];
            current.tsp          = s.sValue;
            Dust_noise_operation.Send_dust_noise_Current(current);
        }