public EquipmentInfo() { 制冷压缩机 = new EquipmentParameter(); 照明设备 = new EquipmentParameter(); 除雾设备 = new EquipmentParameter(); 广告灯 = new EquipmentParameter(); 工控机显示器机箱风扇 = new EquipmentParameter(); 预留设备1 = new EquipmentParameter(); 预留设备2 = new EquipmentParameter(); }
/// <summary> /// 查询制冷压缩机/照明/除雾/广告灯/工控机等设备控制策略参数 /// </summary> /// <param name="boxNo">机柜编号</param> /// <param name="equipmentType">设备类型(0:制冷压缩机, 2:照明设备, 3:除雾设备, 4:广告灯, 5:工控机/显示器/机箱风扇, 6:预留设备1, 7:预留设备2)</param> /// <returns>策略参数集合</returns> public EquipmentParameter QueryEquipment(int boxNo, int equipmentType) { string msg = null; EquipmentParameter equipmentParameter = new EquipmentParameter(); List<byte> sendData = new List<byte>() { 0x01, 0x03, 0x15, (byte)boxNo, (byte)equipmentType, 0x00 }; CommonUtil.CalCheckCode(sendData); byte[] recData = ReadPort(sendData.ToArray()); if (recData.Length >= 4 && recData[0] == 0x01 && recData[1] == 0x0C && recData[2] == 0x15 && CommonUtil.ValidCheckCode(recData)) { switch (recData[3]) { case 0x00: #region 目标温度值 equipmentParameter.目标温度值 = (recData[4] >= 128 ? -recData[4] % 128 : recData[4]).ToString() + "℃"; #endregion #region 控制模式 switch (recData[5]) { case 0x00: equipmentParameter.控制模式 = "定时开启"; break; case 0x01: equipmentParameter.控制模式 = "全时段开启"; break; case 0x02: equipmentParameter.控制模式 = "全时段关闭"; break; default: throw new Exception("未知状态"); } #endregion #region 定时时间段1 if (recData[5] == 0) //定时开启 { equipmentParameter.定时时间段1 = recData[6].ToString() + ":" + recData[7].ToString("00") + "-" + recData[8].ToString() + ":" + recData[9].ToString("00"); } #endregion #region 定时时间段2 if (recData[5] == 0) //定时开启 { equipmentParameter.定时时间段2 = recData[10].ToString() + ":" + recData[11].ToString("00") + "-" + recData[12].ToString() + ":" + recData[13].ToString("00"); } #endregion equipmentParameter.IsOK = true; break; case 0x01: equipmentParameter.IsOK = false; equipmentParameter.ErrorMsg = "不存在该机柜编号"; break; case 0x03: equipmentParameter.IsOK = false; equipmentParameter.ErrorMsg = "不存在控制回路"; break; default: equipmentParameter.IsOK = false; equipmentParameter.ErrorMsg = "未知状态"; break; } } else if (IsRunning(recData, out msg) || !IsConnected(recData, out msg)) { throw new Exception("货机正在执行操作,请稍后检测"); } else { throw new Exception("货机返回的数据格式不正确"); } return equipmentParameter; }