public DNP3UserLayerHandler(DNP3Handler dNP3Handler)
        {
            if (dNP3Handler == null)
            {
                throw new ArgumentNullException();
            }

            this.dNP3Handler = dNP3Handler;
        }
Exemplo n.º 2
0
        public CommunicationEngine(string address, int port)
        {
            DNP3Handler = new DNP3Handler();

            IPAddress ipAddress = IPAddress.Parse(address);

            server = new TcpListener(ipAddress, port);
            server.Start();

            Task.Factory.StartNew(() => ProcessRequests());
        }
        public DNP3UserLayerHandler(DNP3Handler dNP3Handler, DBContext database)
        {
            if (dNP3Handler == null)
            {
                throw new ArgumentNullException();
            }
            if (database == null)
            {
                throw new ArgumentNullException();
            }

            this.dNP3Handler = dNP3Handler;
            this.database    = database;
        }
Exemplo n.º 4
0
        void ProcessRequest(TcpClient client)
        {
            DataLinkHandler dataLinkHandler = new DataLinkHandler();

            Byte[] bytes = new Byte[1000];

            NetworkStream stream = client.GetStream();

            byte actualLen = 0;

            int i = 0;

            while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
            {
                byte len = bytes[2];

                actualLen = (byte)(2 + 1 + 5 + 2); // start + len + ctrl + dest + source + crc

                len -= 5;                          // minus header

                while (len > 0)
                {
                    if (len < 16)
                    {
                        // last chunk
                        actualLen += (byte)(len + 2);
                        break;
                    }

                    actualLen += (byte)(16 + 2);
                    len       -= 16;
                }

                byte[] message = new byte[actualLen];

                for (i = 0; i < actualLen; i++)
                {
                    message[i] = bytes[i];
                }

                List <UserLevelObject> userLevelObjects = dataLinkHandler.PackUp(message);

                if (userLevelObjects == null)
                {
                    continue;
                }

                DNP3Handler          dNP3Handler = new DNP3Handler();
                DNP3UserLayerHandler userLayer   = new DNP3UserLayerHandler(dNP3Handler);
                List <byte[]>        segments    = userLayer.ReadAllAnalogInputPointsResponse(userLevelObjects);

                int offset = 0;

                foreach (byte[] segment in segments)
                {
                    try
                    {
                        stream.Write(segment, offset, segment.Count());
                    }
                    catch (Exception e) { }
                }
            }
        }