Exemple #1
0
        protected void SendFeedback(byte[] feedbackData)
        {
            CANBusDataFrame aFrame = new CANBusDataFrame(CANSendType.Single, CANFrameType.Extern, CANFrameFormat.Data,
                                                         (uint)((Utility.BCD(Convert.ToUInt32(_RoomStatusChangerFloorNum))) << 21) + (Utility.BCD(Convert.ToUInt32(_RoomStatusChangerRoomNum) << (int)13)));

            aFrame.DataLength = Convert.ToByte(feedbackData.Length);
            for (int i = 0; i < aFrame.DataLength; i++)
            {
                aFrame.Data[i] = feedbackData[i];
            }

            try
            {
                _Connection.SendFrame(aFrame);
            }
            catch
            {
            }
        }
Exemple #2
0
        /// <summary>
        /// Send Data to ATM (a room) include the rooms default temperature and air conditioner default running status
        /// </summary>
        /// <param name="aRoom"></param>
        /// <param name="wakeUp"></param>
        protected virtual void SendDataToATM(Room aRoom)
        {
            CANBusDataFrame aFrame = new CANBusDataFrame(CANSendType.Single, CANFrameType.Extern, CANFrameFormat.Data,
                                                         (uint)((Utility.BCD(Convert.ToUInt32(aRoom.MyFloor.Number)) << 21) + (Utility.BCD(Convert.ToUInt32(aRoom.Number)) << (int)13)));

            aFrame.DataLength = 8;
            aFrame.Data[0]    = (byte)Utility.BCD(Convert.ToUInt32(aRoom.MyFloor.Number));
            aFrame.Data[1]    = (byte)(Utility.BCD(Convert.ToUInt32(aRoom.Number)));
            aFrame.Data[2]    = (byte)(Convert.ToByte(aRoom.MyAirConditioner.DefaultTemperature) +
                                       ((aRoom.MyAirConditioner.DefaultRunningStatus ? 0 : 1) * 128));
            BitArray array = new BitArray(8);

            switch (aRoom.HotelUsingStatus)
            {
            case HotelUsingStatusType.CheckOut:
                array[1] = true;
                break;

            case HotelUsingStatusType.Rented:
                array[0] = true;
                break;

            case HotelUsingStatusType.Vacant:
                array[2] = true;
                break;

            case HotelUsingStatusType.Empty:
                array[3] = true;
                break;

            case HotelUsingStatusType.Booked:
                array[4] = true;
                break;

            case HotelUsingStatusType.VIP:
                array[5] = true;
                break;

            case HotelUsingStatusType.Maintanent:
                array[7] = true;
                break;

            default:
                break;
            }
            // 睡眠模式设置
            array[6] = aRoom.AutoSleep && aRoom.IsSleepTime;
            //     array[7] = aRoom.MyAirConditioner.ApplyRunning;//空调开关设置
            array.CopyTo(aFrame.Data, 3);
            aFrame.Data[4] = 0;                                                         //(byte)aRoom.MyAirConditioner.RunningType; //每小时开关时间分布
            aFrame.Data[5] = aRoom.AutoSleep ? (byte)aRoom.ChangeTemperature : (byte)0; //睡眠温度调节: 1~5度范围调节
            aFrame.Data[6] = (aRoom.HotelUsingStatus == HotelUsingStatusType.Empty || aRoom.HotelUsingStatus == HotelUsingStatusType.Vacant) ? (byte)0 : (byte)128;


            int CheckSum = 0;

            for (int i = 0; i <= 6; i++)
            {
                CheckSum += aFrame.Data[i];
            }
            aFrame.Data[7] = (byte)(CheckSum % 256);

            try
            {
                _Connection.SendFrame(aFrame);
            }
            catch
            {
            }
        }