Example #1
0
        /// <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);
        }
Example #2
0
        /// <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;
            }
        }
Example #3
0
        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));
        }
Example #4
0
        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);
            }
        }