/// <summary> /// 发送转换后的查询命令 /// </summary> /// <param name="fun"></param> /// <param name="classroom"></param> /// <param name="nodeAdd"></param> /// <param name="onoff"></param> /// <returns></returns> public EquipmentResult SendConvertSearchCmd(byte fun, string classroom) { classroom = string.IsNullOrEmpty(classroom) ? "00" : classroom; EquipmentResult oa = new EquipmentResult(); try { byte[] cmd = { 0x55, 0x02, 0, 0, fun, 0, 0x01, 0 }; byte[] bclassroom = classroom.StrToHexByte(); byte[] bnodeAdd = "00".StrToHexByte(); bclassroom.CopyTo(cmd, 2); bnodeAdd.CopyTo(cmd, 5); cmd = cmd.ActuatorCommand(); SendSearchCmd(cmd); ClassRoom classRoom = null; classRoom = Init(classRoom); oa.Status = true; oa.ResultCode = ResultCode.Ok; } catch (Exception exception) { oa.Status = false; oa.ErrorData = exception.Message; oa.ResultCode = ResultCode.Error; ExceptionHelper.AddException(exception); } return(oa); }
/// <summary> /// 控制多个设备 /// </summary> /// <param name="list">设备信息集合</param> /// <param name="onoff">开or关</param> /// <param name="equipmentType">设备类型</param> public void ControlMultiEquipment(List <EquipmentDto> list, string onoff, string equipmentType) { try { foreach (var item in list) { byte fun = (byte)equipmentType.GetFunByEquipmentType(); byte b; if (equipmentType == EquipmentType.LAMP) //控制灯的功能码 { //该灯节点ID有多个灯设备 if (list.Count(u => u.F_EquipmentNo == item.F_EquipmentNo) > 1) { b = (byte)(onoff == StateType.OPEN ? 0x03 : 0x00); b |= 1 << 7; } else //该灯节点ID只有单个灯设备 { b = (byte)(onoff == StateType.OPEN ? 0x01 : 0x00); } } else if (equipmentType == EquipmentType.CURTAIN || equipmentType == EquipmentType.WINDOW) { b = (byte)(onoff == StateType.OPEN ? 0x04 : onoff == StateType.STOP ? 0x05 : 0x00); } else //其它传感器的功能码 { b = (byte)(onoff == StateType.OPEN ? 0x01 : 0x00); } byte[] cmd = { 0x55, 0x02, 0, 0, fun, 0, 0x01, b }; byte[] bclassroom = item.F_RoomNo.StrToHexByte(); byte[] bnodeAdd = item.F_EquipmentNo.StrToHexByte(); bclassroom.CopyTo(cmd, 2); bnodeAdd.CopyTo(cmd, 5); cmd = cmd.ActuatorCommand(); SendCmd(cmd); Thread.Sleep(TimeSpan.FromMilliseconds(200)); } } catch (Exception e) { throw e; } }
public ActionResult SetElectronicClock(string classroom, string nodeAdd) { EquipmentResult oa = new EquipmentResult(); try { byte fun = (byte)Convert.ToInt32(AppSettingUtils.GetValue("Clock")); byte[] classAddr = classroom.StrToHexByte(); byte[] nodeAddr = nodeAdd.StrToHexByte(); //获取当前时间 DateTime currentTime = Convert.ToDateTime(DatetimeExtened.GetNetDateTime()); //转换时间格式 string year = (currentTime.Year % 100).ToString(); string month = currentTime.Month < 10 ? "0" + currentTime.Month : currentTime.Month.ToString(); string day = currentTime.Day < 10 ? "0" + currentTime.Day : currentTime.Day.ToString(); string hour = currentTime.Hour < 10 ? "0" + currentTime.Hour : currentTime.Hour.ToString(); string minute = currentTime.Minute < 10 ? "0" + currentTime.Minute : currentTime.Minute.ToString(); string second = currentTime.Second < 10 ? "0" + currentTime.Second : currentTime.Second.ToString(); string date = $"{year} {month} {day}"; //日期部分 byte[] yMd = date.StrToHexByte(); //将日期部分转为byte[]类型 string time = $"{hour} {minute} {second}"; //时间部分 byte[] hms = time.StrToHexByte(); //将时间部分转为byte[]类型 byte week = (byte)(Convert.ToInt32(currentTime.DayOfWeek.ToString("d"))); byte[] cmd = { 0x55, 0x02, 0, 0, fun, 0, 0x0D, 0, 0, 0, week, 0, 0, 0, 0x23, 0, 0, 0x70, 0, 0 }; classAddr.CopyTo(cmd, 2); nodeAddr.CopyTo(cmd, 5); yMd.CopyTo(cmd, 7); hms.CopyTo(cmd, 11); cmd = cmd.ActuatorCommand(); PortService.SendCmd(cmd); oa.Status = true; oa.Message = "时间同步成功"; oa.ResultCode = ResultCode.Ok; } catch (Exception exception) { ExceptionHelper.AddException(exception); oa.Status = false; oa.ResultCode = ResultCode.Error; oa.Message = "时间同步失败"; oa.ErrorData = exception.Message; } return(Json(oa)); }
private void Process(string classroom, string nodeAdd) { try { byte fun = (byte)Convert.ToInt32(AppSettingUtils.GetValue("Clock")); byte[] classAddr = classroom.StrToHexByte(); byte[] nodeAddr = nodeAdd.StrToHexByte(); //获取当前时间 DateTime currentTime = Convert.ToDateTime(DatetimeExtened.GetNetDateTime()); //转换时间格式 string year = (currentTime.Year % 100).ToString(); string month = currentTime.Month < 10 ? "0" + currentTime.Month : currentTime.Month.ToString(); string day = currentTime.Day < 10 ? "0" + currentTime.Day : currentTime.Day.ToString(); string hour = currentTime.Hour < 10 ? "0" + currentTime.Hour : currentTime.Hour.ToString(); string minute = currentTime.Minute < 10 ? "0" + currentTime.Minute : currentTime.Minute.ToString(); string second = currentTime.Second < 10 ? "0" + currentTime.Second : currentTime.Second.ToString(); string date = $"{year} {month} {day}"; //日期部分 byte[] yMd = date.StrToHexByte(); //将日期部分转为byte[]类型 string time = $"{hour} {minute} {second}"; //时间部分 byte[] hms = time.StrToHexByte(); //将时间部分转为byte[]类型 byte week = (byte)(Convert.ToInt32(currentTime.DayOfWeek.ToString("d"))); byte[] cmd = { 0x55, 0x02, 0, 0, fun, 0, 0x0D, 0, 0, 0, week, 0, 0, 0, 0x23, 0, 0, 0x70, 0, 0 }; classAddr.CopyTo(cmd, 2); nodeAddr.CopyTo(cmd, 5); yMd.CopyTo(cmd, 7); hms.CopyTo(cmd, 11); cmd = cmd.ActuatorCommand(); PortService.SendCmd(cmd); } catch (Exception exception) { ExceptionHelper.AddException(exception); } }