Exemple #1
0
        public void StartServer()
        {
            TcpServerChannel channelTcpServer = new TcpServerChannel("TcpServerChannel", 9988);
            MultipleFormatterByteArrayInterpreter interpreter = new MultipleFormatterByteArrayInterpreter("Interpreter");

            interpreter.SetTailers(new byte[] { 0xAA, 0x55 });
            interpreter.SetHeaders(new byte[] { 0x55, 0xAA });

            /////////////////////////////////////////////////////////////////////////////////////////

            ByteArrayFormatter formatter_F1 = new ByteArrayFormatter("Formatter1", 1);

            ByteArrayCompositeValueItem byteArrayCompositeValueItem_F1 = new ByteArrayCompositeValueItem("F1_ByteArrayCompositeValueItem1");

            byteArrayCompositeValueItem_F1.AddItem(new ByteArrayStringItem("F1_NodeName", 1, 6, Encoding.ASCII));
            byteArrayCompositeValueItem_F1.AddItem(new ByteArrayInt32Item("F1_NodeId", 0));
            byteArrayCompositeValueItem_F1.AddItem(new ByteArrayInt16Item("F1_Temperature", 2));
            byteArrayCompositeValueItem_F1.AddItem(new ByteArrayDoubleItem("F1_Longitude", 3));
            byteArrayCompositeValueItem_F1.AddItem(new ByteArrayByteItem("F1_Reserved", 4));

            ByteArrayLoopItem byteArrayLoopItem_F1 = new ByteArrayLoopItem("F1_byteArrayLoopItem1", 1, byteArrayCompositeValueItem_F1);

            formatter_F1.AddItem(new ByteArrayInt32Item("F1_Type", 0));
            formatter_F1.AddItem(byteArrayLoopItem_F1);

            /////////////////////////////////////////////////////////////////////////////////////////

            ByteArrayFormatter formatter_F2 = new ByteArrayFormatter("Formatter2", 2);

            formatter_F2.AddItem(new ByteArrayInt32Item("F2_Type", 0));
            formatter_F2.AddItem(new ByteArrayStringItem("F2_NodeName", 2, 6, Encoding.ASCII));
            formatter_F2.AddItem(new ByteArrayInt32Item("F2_NodeId", 1));
            formatter_F2.AddItem(new ByteArrayInt16Item("F2_Temperature", 3));
            formatter_F2.AddItem(new ByteArrayDoubleItem("F2_Longitude", 4));
            formatter_F2.AddItem(new ByteArrayByteItem("F2_Reserved", 5));

            ///////////////////////////////////////////////////////////////////////////////////////////////

            ByteArrayTypedFormatterFilter byteArrayTypedFormatterFilter = new ByteArrayTypedFormatterFilter("ByteArrayTypedFormatterFilter", 0);

            //the index we use 0 meaning the Type Id is the index[0] in the input buffer without header.

            interpreter.AddFormatter(formatter_F1);
            interpreter.AddFormatter(formatter_F2);
            interpreter.AddFormatterFilter(byteArrayTypedFormatterFilter);

            ByteArrayAdapter baa = new ByteArrayAdapter("ByteArrayAdapter", channelTcpServer, interpreter, Program.ShowEnvelop);

            baa.Setup();
        }
Exemple #2
0
        public void StartServer()
        {
            TcpServerChannel channelTcpServer = new TcpServerChannel("TcpServerChannel", 9988);
            MultipleFormatterByteArrayInterpreter interpreter = new MultipleFormatterByteArrayInterpreter("Interpreter");

            interpreter.SetTailers(new byte[] { 0xAA, 0x55 });
            interpreter.SetHeaders(new byte[] { 0x55, 0xAA });

            /////////////////////////////////////////////////////////////////////////////////////////

            ByteArrayFormatter formatter_F1 = new ByteArrayFormatter("Formatter1", 1);

            ByteArrayCompositeValueItem byteArrayCompositeValueItem_F1 = new ByteArrayCompositeValueItem("F1_ByteArrayCompositeValueItem1");
            byteArrayCompositeValueItem_F1.AddItem(new ByteArrayStringItem("F1_NodeName", 1, 6, Encoding.ASCII));
            byteArrayCompositeValueItem_F1.AddItem(new ByteArrayInt32Item("F1_NodeId", 0));
            byteArrayCompositeValueItem_F1.AddItem(new ByteArrayInt16Item("F1_Temperature", 2));
            byteArrayCompositeValueItem_F1.AddItem(new ByteArrayDoubleItem("F1_Longitude", 3));
            byteArrayCompositeValueItem_F1.AddItem(new ByteArrayByteItem("F1_Reserved", 4));

            ByteArrayLoopItem byteArrayLoopItem_F1 = new ByteArrayLoopItem("F1_byteArrayLoopItem1", 1, byteArrayCompositeValueItem_F1);

            formatter_F1.AddItem(new ByteArrayInt32Item("F1_Type", 0));
            formatter_F1.AddItem(byteArrayLoopItem_F1);

            /////////////////////////////////////////////////////////////////////////////////////////

            ByteArrayFormatter formatter_F2 = new ByteArrayFormatter("Formatter2", 2);

            formatter_F2.AddItem(new ByteArrayInt32Item("F2_Type", 0));
            formatter_F2.AddItem(new ByteArrayStringItem("F2_NodeName", 2, 6, Encoding.ASCII));
            formatter_F2.AddItem(new ByteArrayInt32Item("F2_NodeId", 1));
            formatter_F2.AddItem(new ByteArrayInt16Item("F2_Temperature", 3));
            formatter_F2.AddItem(new ByteArrayDoubleItem("F2_Longitude", 4));
            formatter_F2.AddItem(new ByteArrayByteItem("F2_Reserved", 5));

            ///////////////////////////////////////////////////////////////////////////////////////////////

            ByteArrayTypedFormatterFilter byteArrayTypedFormatterFilter = new ByteArrayTypedFormatterFilter("ByteArrayTypedFormatterFilter", 0);
            //the index we use 0 meaning the Type Id is the index[0] in the input buffer without header.

            interpreter.AddFormatter(formatter_F1);
            interpreter.AddFormatter(formatter_F2);
            interpreter.AddFormatterFilter(byteArrayTypedFormatterFilter);

            ByteArrayAdapter baa = new ByteArrayAdapter("ByteArrayAdapter", channelTcpServer, interpreter, Program.ShowEnvelop);
            baa.Setup();
        }
        private object GetFormatterFilter(XElement element)
        {
            string filterType = GetAttribute(element, "Type");
            string filterName = GetAttribute(element, "Name");

            if (filterType == "ByteArrayTypedFormatterFilter")
            {
                int formatterTypeIndex = int.Parse(GetAttribute(element, "FormatterTypeIndex"));

                ByteArrayTypedFormatterFilter filter = new ByteArrayTypedFormatterFilter(filterName, formatterTypeIndex);

                if (element.Element("FormatterFilter") != null)
                {
                    foreach (var subFilterElement in element.Elements("FormatterFilter"))
                    {
                        IFormatterFilter <byte[]> subFilter = (IFormatterFilter <byte[]>)GetFormatterFilter(subFilterElement);
                    }
                }

                return(filter);
            }
            else if (filterType == "ByteArrayLengthGreatThanFormatterFilter")
            {
                int length = int.Parse(GetAttribute(element, "Length"));

                ByteArrayLengthGreatThanFormatterFilter filter = new ByteArrayLengthGreatThanFormatterFilter(filterName, length);

                if (element.Element("FormatterFilter") != null)
                {
                    foreach (var subFilterElement in element.Elements("FormatterFilter"))
                    {
                        IFormatterFilter <byte[]> subFilter = (IFormatterFilter <byte[]>)GetFormatterFilter(subFilterElement);
                    }
                }

                return(filter);
            }
            else if (filterType == "ByteArrayLengthEqualFormatterFilter")
            {
                int length = int.Parse(GetAttribute(element, "Length"));

                ByteArrayLengthEqualFormatterFilter filter = new ByteArrayLengthEqualFormatterFilter(filterName, length);

                if (element.Element("FormatterFilter") != null)
                {
                    foreach (var subFilterElement in element.Elements("FormatterFilter"))
                    {
                        IFormatterFilter <byte[]> subFilter = (IFormatterFilter <byte[]>)GetFormatterFilter(subFilterElement);
                    }
                }

                return(filter);
            }
            else if (filterType == "Custom")
            {
                string customTypeName = GetAttribute(element, "CustomTypeName");
                Type   type           = Type.GetType(customTypeName);

                object[] args = null;

                if (element.Elements("Parameter") != null)
                {
                    args = new object[element.Elements("Parameter").Count()];
                    int i = 0;
                    foreach (var paraElement in element.Elements("Parameter"))
                    {
                        string pType  = GetAttribute(paraElement, "Type");
                        string pValue = GetAttribute(paraElement, "Value");
                        object p      = Convert.ChangeType(pValue, Type.GetType(pType));
                        args[i] = p;
                        i++;
                    }
                }

                object custom = System.Activator.CreateInstance(type, args);

                return(custom);
            }
            else
            {
                throw new UnknownElementException("Unknown FormatterFilter type:" + filterType);
            }
        }
Exemple #4
0
        private object GetFormatterFilter(XElement element)
        {
            string filterType = GetAttribute(element, "Type");
            string filterName = GetAttribute(element, "Name");

            if (filterType == "ByteArrayTypedFormatterFilter")
            {
                int formatterTypeIndex = int.Parse(GetAttribute(element, "FormatterTypeIndex"));

                ByteArrayTypedFormatterFilter filter = new ByteArrayTypedFormatterFilter(filterName, formatterTypeIndex);

                if (element.Element("FormatterFilter") != null)
                {
                    foreach (var subFilterElement in element.Elements("FormatterFilter"))
                    {
                        IFormatterFilter<byte[]> subFilter = (IFormatterFilter<byte[]>)GetFormatterFilter(subFilterElement);
                    }
                }

                return filter;
            }
            else if (filterType == "ByteArrayLengthGreatThanFormatterFilter")
            {
                int length = int.Parse(GetAttribute(element, "Length"));

                ByteArrayLengthGreatThanFormatterFilter filter = new ByteArrayLengthGreatThanFormatterFilter(filterName, length);

                if (element.Element("FormatterFilter") != null)
                {
                    foreach (var subFilterElement in element.Elements("FormatterFilter"))
                    {
                        IFormatterFilter<byte[]> subFilter = (IFormatterFilter<byte[]>)GetFormatterFilter(subFilterElement);
                    }
                }

                return filter;
            }
            else if (filterType == "ByteArrayLengthEqualFormatterFilter")
            {
                int length = int.Parse(GetAttribute(element, "Length"));

                ByteArrayLengthEqualFormatterFilter filter = new ByteArrayLengthEqualFormatterFilter(filterName, length);

                if (element.Element("FormatterFilter") != null)
                {
                    foreach (var subFilterElement in element.Elements("FormatterFilter"))
                    {
                        IFormatterFilter<byte[]> subFilter = (IFormatterFilter<byte[]>)GetFormatterFilter(subFilterElement);
                    }
                }

                return filter;
            }
            else if (filterType == "Custom")
            {
                string customTypeName = GetAttribute(element, "CustomTypeName");
                Type type = Type.GetType(customTypeName);

                object[] args = null;

                if (element.Elements("Parameter") != null)
                {
                    args = new object[element.Elements("Parameter").Count()];
                    int i = 0;
                    foreach (var paraElement in element.Elements("Parameter"))
                    {
                        string pType = GetAttribute(paraElement, "Type");
                        string pValue = GetAttribute(paraElement, "Value");
                        object p = Convert.ChangeType(pValue, Type.GetType(pType));
                        args[i] = p;
                        i++;
                    }
                }

                object custom = System.Activator.CreateInstance(type, args);

                return custom;
            }
            else
            {
                throw new UnknownElementException("Unknown FormatterFilter type:" + filterType);
            }
        }