Beispiel #1
0
        private void EventTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                while (server.PickEvent(ref ServerEvent))
                {
                    if ((ServerEvent.EvtCode == S7Server.evcDataWrite) &&        // write event
                        (ServerEvent.EvtRetCode == 0) &&                         // succesfully
                        (ServerEvent.EvtParam1 == S7Server.S7AreaDB))            // it's a DB
                    {
                        foreach (Control ctrl in tabs.Controls)
                        {
                            SingleController sc = (SingleController)ctrl.Controls[0];
                            sc.UpdatePlcCounter();

                            if (ServerEvent.EvtParam2 == sc.DbNumber) // right DB
                            {
                                sc.HandleDBEvent(ServerEvent);
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
        }
Beispiel #2
0
        private void LogTimer_Tick(object sender, EventArgs e)
        {
            // For event logging this method (a timer and PickEvent) is better than
            // the events callback used into the Server console demo.
            // Here we are using the internal Server message queue without
            // disturbing the client handshake.
            while (Server.PickEvent(ref Event))
            {
                if (EventsLog.Lines.Count() > 256)
                {
                    EventsLog.Clear();
                }
                EventsLog.AppendText(Server.EventText(ref Event) + "\n");

                // Example of how use the parameters inside the event struct.
                // Here we check if our DB were changed and, if yes, update the
                // related textbox.


//                if ((Event.EvtCode == S7Server.evcDataWrite) &&   // write event
//                   (Event.EvtRetCode == 0) &&                    // succesfully
//                    (Event.EvtParam1 == S7Server.S7AreaDB))       // it's a DB

                if ((Event.EvtCode == S7Server.evcDataWrite) &&   // write event
                    (Event.EvtRetCode == 0))
                {
                    switch (Event.EvtParam2)
                    {
                    case 1: HexDump(DB1_Box, DB1, DB1.Length);
                        break;

                    case 2: HexDump(DB2_Box, DB2, DB2.Length);
                        break;

                    case 3: HexDump(DB3_Box, DB3, DB3.Length);
                        break;
                    }
                }
            }
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            System.Console.Out.WriteLine("S7 Server starting up");
            Event = new S7Server.USrvEvent();
            Srv   = new S7Server();
            Srv.RegisterArea(S7Server.srvAreaDB,  // We are registering a DB
                             1,                   // Its number is 1 (DB1)
                             DB1,                 // Our buffer for DB1
                             DB1.Length);         // Its size

            TheEventCallBack = new S7Server.TSrvCallback(EventCallback);
            TheReadCallBack  = new S7Server.TSrvCallback(ReadEventCallback);
            Srv.SetEventsCallBack(TheEventCallBack, IntPtr.Zero);
            Srv.SetReadEventsCallBack(TheReadCallBack, IntPtr.Zero);

            Srv.EventMask = Srv.EventMask & 1; // Mask 00000000
            Srv.EventMask = Srv.EventMask | S7Server.evcDataRead;
            Srv.EventMask = Srv.EventMask | S7Server.evcDataWrite;

            int Error = Srv.Start();

            if (Error == 0)
            {
                Console.WriteLine("Press ESC to stop");
                do
                {
                    while (!Console.KeyAvailable)
                    {
                        while (Srv.PickEvent(ref Event))
                        {
                            Console.Out.WriteLine(Srv.EventText(ref Event));
                        }
                    }
                } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
                Srv.Stop();
            }

            System.Console.Out.WriteLine("Enter any key to quit");
            System.Console.ReadKey();
        }