Exemplo n.º 1
0
 private void KNXUart_OnKNXEvent(KNXNetworkLayerTemplate caller, KNXNetworkLayerTemplate.KnxPacketEvents uartEvent)
 {
     if (uartEvent == KNXNetworkLayerTemplate.KnxPacketEvents.DeviceOnline)
     {
         GetCurrentGroupValueStatus();
     }
 }
Exemplo n.º 2
0
        public FaHGroupMonitor(KNXNetworkLayerTemplate kNXUart, KNXAddress GroupToMonitor)
        {
            knxGroupToMonitor = GroupToMonitor;

            this.kNXUart = kNXUart;
            this.kNXUart.OnKNXMessage += KNXUart_OnKNXMessage;
            this.kNXUart.OnKNXEvent   += KNXUart_OnKNXEvent;

            GetCurrentGroupValueStatus();
        }
Exemplo n.º 3
0
        private static void KNXUart_OnKNXMessage(KNXNetworkLayerTemplate caller, KNXBaseTypes.KNXmessage Message, KNXNetworkLayerTemplate.KnxPacketEvents uartEvent)
        {
            if (Message.ControlField.RepeatFrame)
            {
                //Repeatframe
                return;
            }
            if (Message.SourceAddress == SysApEmulator.KnxAddress)
            {
                //Self
                return;
            }

            switch (devLearnState)
            {
            case DeviceLearningState.deviceDiscovery:
                if (Message.Payload.Apdu.apduType == KNXAdpu.ApduType.DeviceDescriptorResponse)
                {
                    Message.Payload.ReadablePayloadPacket = new FAHDeviceDescriptorResponse(Message.Payload);
                    bool more;
                    ((FAHDeviceDescriptorResponse)Message.Payload.ReadablePayloadPacket).SaveToDevice(ref deviceToLearn, out more);
                    devLearnState = DeviceLearningState.deviceDiscoveryResponse;
                    return;
                }
                break;

            case DeviceLearningState.deviceReadSettings:
                if (Message.SourceAddress == deviceToLearn.KnxAddress)
                {
                    if (Message.ControlField.RepeatFrame)
                    {
                        //For now ignore
                        return;
                    }
                    knxMsgtoProcess = Message;
                }
                break;

            default:
                Console.Write(string.Format("{0} ", Message.HeaderAsString));
                Message.Payload.ReadablePayloadPacket.PrintUnaccountedBytes();
                break;
            }
        }
Exemplo n.º 4
0
        private void KNXUart_OnKNXMessage(KNXNetworkLayerTemplate caller, KNXBaseTypes.KNXmessage Message, KNXNetworkLayerTemplate.KnxPacketEvents uartEvent)
        {
            if (Message.ControlField.RepeatFrame)
            {
                return;
            }

            if (Message.TargetAddress == knxGroupToMonitor)
            {
                FahPayloadInterpeter.TryToInterpret(ref Message);

                switch (Message.Payload.Apdu.apduType)
                {
                case KNXAdpu.ApduType.GroupValueWrite:
                    FAHGroupValueWrite fAHGroupValueWrite = new FAHGroupValueWrite(Message.Payload);
                    Console.Write("GroupMonitor: {0}; {1} ", Message.Timestamp.ToString(KNXHelpers.DateTimeFormat), Message.HeaderAsString);
                    data = fAHGroupValueWrite.MessageData;
                    OnGroupValueChange?.Invoke(this, data);
                    Message.Payload.ReadablePayloadPacket.PrintUnaccountedBytes(false);
                    break;

                case KNXAdpu.ApduType.GroupValueRead:
                    FAHGroupValueRead fAHGroupValueRead = new FAHGroupValueRead(Message.Payload);
                    Console.Write("GroupMonitor: {0}; {1} ", Message.Timestamp.ToString(KNXHelpers.DateTimeFormat), Message.HeaderAsString);
                    Message.Payload.ReadablePayloadPacket.PrintUnaccountedBytes(false);
                    break;

                case KNXAdpu.ApduType.GroupValueResponse:
                    FAHGroupValueResponse fAHGroupValueReponse = new FAHGroupValueResponse(Message.Payload);
                    Console.Write("GroupMonitor: {0}; {1} ", Message.Timestamp.ToString(KNXHelpers.DateTimeFormat), Message.HeaderAsString);
                    data = fAHGroupValueReponse.MessageData;
                    OnGroupValueChange?.Invoke(this, data);
                    Message.Payload.ReadablePayloadPacket.PrintUnaccountedBytes(false);
                    break;

                default:
                    Console.WriteLine("???" + Message.Payload.Apdu.apduType);
                    break;
                }
            }
        }
Exemplo n.º 5
0
        private void Form1_Load(object sender, EventArgs e)
        {
            /*
             * KNXUartConnection rkNXUart  = new KNXUartConnection(AppSettings.Default.ComPort)
             * {
             *  AllowWrite = true
             * };
             * if (!rkNXUart.ResetAndInit())
             * {
             *  throw new Exception("Cannot init");
             * }
             * kNXUart = rkNXUart;
             */
            TCPknxClient tCPknxClient = new TCPknxClient("172.16.16.20", 9998);

            kNXUart = tCPknxClient;

            fahABB7001 = new FaHVirtualDevice(kNXUart, "ABB700C00001");
            fahABB7001.ConsolePrintMessages = true;
            //fahABB7002 = new FaHVirtualDevice(kNXUart, "ABB700C00002");
            fah0xf80x83 = new FaHGroupMonitor(kNXUart, new KNXAddress(0xf8, 0x83));
            fah0x940x20 = new FaHGroupMonitor(kNXUart, new KNXAddress(0x94, 0x20));
            fah0xE00x31 = new FaHGroupMonitor(kNXUart, new KNXAddress(0xE0, 0x31));
            //fah0x550x13 = new FaHGroupMonitor(kNXUart, new KNXAddress(21779));
            fah0xf80x83.OnGroupValueChange += Group_OnGroupValueChange;
            fah0x940x20.OnGroupValueChange += Group_OnGroupValueChange;
            fah0xE00x31.OnGroupValueChange += Group_OnGroupValueChange;

            fahABB7001.OnActorChange += Switch_OnActorChange;
            //fahABB7002.OnActorChange += Switch_OnActorChange;

            fahABB7001.StartFaHDevice();


            //fahABB7002.StartFaHDevice();
        }
Exemplo n.º 6
0
 private void KNXUart_OnKNXEvent(KNXNetworkLayerTemplate caller, KNXNetworkLayerTemplate.KnxPacketEvents uartEvent)
 {
     this.EventLog.WriteEntry("KNX Service Event: " + uartEvent.ToString());
 }
Exemplo n.º 7
0
 private void KNXUart_OnKNXMessage(KNXNetworkLayerTemplate caller, KNXBaseTypes.KNXmessage Message, KNXNetworkLayerTemplate.KnxPacketEvents uartEvent)
 {
     Console.WriteLine("KNXLineData");
     tCPknxServer.SendKNXMessage(Message.toByteArray());
 }
Exemplo n.º 8
0
        private static void KNXUart_OnKNXMessage(KNXNetworkLayerTemplate caller, KNXBaseTypes.KNXmessage Message, KNXNetworkLayerTemplate.KnxPacketEvents uartEvent)
        {
            stdOut.WriteOut(Message);
            try
            {
                FahPayloadInterpeter.TryToInterpret(ref Message);

                if (Message.Payload.Apdu.apduType == KNXAdpu.ApduType.FunctionPropertyStateResponse)
                {
                    Message.Payload.ReadablePayloadPacket = ((FAHFunctionPropertyStateResponse)Message.Payload.ReadablePayloadPacket).ProcessPayload(lastRequestedPropertyControl, ByteDataParm);

                    if (((FAHFunctionPropertyStateResponse)Message.Payload.ReadablePayloadPacket).resultCode != KNXHelpers.knxPropertyReturnValues.CommandNotSupported)
                    {
                        /*
                         * bool more;
                         * if (!((FAHFunctionPropertyStateResponse)Message.Payload.ReadablePayloadPacket).SaveToDevice(ref fahDevToLearn, out more))
                         * {
                         *  Console.BackgroundColor = ConsoleColor.Red;
                         *  Console.Write("Not saved: ");
                         *  Console.BackgroundColor = ConsoleColor.Black;
                         * }*/
                    }
                }
                else if (Message.Payload.Apdu.apduType == KNXAdpu.ApduType.FunctionPropertyCommand)
                {
                    ((FAHFunctionPropertyCommand)Message.Payload.ReadablePayloadPacket).GetPropertyControlForReply(ref ByteDataParm, ref lastRequestedPropertyControl);
                }

                string ret = string.Format("{0}; {1} ", Message.Timestamp.ToString(KNXHelpers.DateTimeFormat), Message.HeaderAsString);
                Console.Write(ret);
                Message.Payload.ReadablePayloadPacket.PrintUnaccountedBytes(false);

                switch (Message.Payload.Apdu.apduType)
                {
                case KNXAdpu.ApduType.IndividualAddressSerialNumberWrite:
                    var fasnw = Message.Payload.ReadablePayloadPacket as FAHIndividualAddressSerialNumberWrite;

                    /*
                     * bool more;
                     * fasnw.SaveToDevice(ref fahDevToReturn, out more);
                     */
                    //Succes
                    return;

                case KNXAdpu.ApduType.DeviceDescriptorRead:
                    //LastCreatedMsg = FAHDeviceDescriptorResponse.CreateResponse(fahDevToReturn, Message.SourceAddress);
                    return;

                case KNXAdpu.ApduType.GroupValueWrite:
                    return;

                case KNXAdpu.ApduType.FunctionPropertyCommand:
                    var fpc = Message.Payload.ReadablePayloadPacket as FAHFunctionPropertyCommand;

                    /*KNXmessage k = fpc.ProcessAndCreateResponse(fahDevToReturn);
                     * if (k != null)
                     * {
                     *  LastCreatedMsg = k;
                     * }*/
                    break;

                case KNXAdpu.ApduType.DeviceDescriptorResponse:
                    FAHDeviceDescriptorResponse fAHDeviceDescriptorResponse = Message.Payload.ReadablePayloadPacket as FAHDeviceDescriptorResponse;

                    /*bool mi;
                     * fAHDeviceDescriptorResponse.SaveToDevice(ref fahDevToLearn, out mi);
                     *
                     * var z = fAHDeviceDescriptorResponse.FahDeviceAddress;
                     * if (fAHDeviceDescriptorResponse.FahDeviceAddress == fahDevToReturn.FaHAddress)
                     * {
                     *  if (LastCreatedMsg.ToHexString() != Message.ToHexString())
                     *  {
                     *      Console.BackgroundColor = ConsoleColor.Blue;
                     *      Console.WriteLine("Gen: {0}", LastCreatedMsg.ToHexString());
                     *      Console.BackgroundColor = ConsoleColor.Red;
                     *      Console.WriteLine("Err: {0}", Message.ToHexString());
                     *  }
                     *  Console.BackgroundColor = ConsoleColor.Black;
                     *  Console.WriteLine("------------------------------------------------------------------------------------------------------------------------------------");
                     *  LastCreatedMsg = new KNXmessage(knxControlField.KnxPacketType.KNX_PacketShort);
                     *
                     * }
                     */
                    break;

                default:
                    /*if (LastCreatedMsg.ToHexString() != Message.ToHexString())
                     * {
                     *  Console.BackgroundColor = ConsoleColor.Blue;
                     *  Console.WriteLine("Gen: {0}", LastCreatedMsg.ToHexString());
                     *  Console.BackgroundColor = ConsoleColor.Red;
                     *  Console.WriteLine("Err: {0}", Message.ToHexString());
                     * }*/
                    Console.BackgroundColor = ConsoleColor.Black;
                    Console.WriteLine("------------------------------------------------------------------------------------------------------------------------------------");
                    LastCreatedMsg = new KNXmessage(knxControlField.KnxPacketType.KNX_PacketShort);
                    break;
                }
            }
            catch (Exception e)
            {
                Console.Write("Error parsing: " + e);
            }
        }
Exemplo n.º 9
0
 private static void KNXUart_OnKNXEvent(KNXNetworkLayerTemplate caller, KNXNetworkLayerTemplate.KnxPacketEvents uartEvent)
 {
     Console.WriteLine("[" + uartEvent + "]");
 }