Beispiel #1
0
        //private static S7Server.TSrvCallback TheReadCallBack;

        static void EventCallBack(IntPtr usrPtr, ref S7Server.USrvEvent uevent, int size)
        {
            Console.WriteLine(Server.EventText(ref uevent));
            Console.WriteLine("Code={0}, Params={1},{2},{3},{4}, RetCode={5}",
                              uevent.EvtCode, uevent.EvtParam1, uevent.EvtParam2, uevent.EvtParam3, uevent.EvtParam4,
                              uevent.EvtRetCode);
            if (uevent.EvtCode == S7Server.evcDataWrite)
            {
                PrintRWEvent(ref uevent);
            }
            else if (uevent.EvtCode == S7Server.evcDataRead)
            {
                PrintRWEvent(ref uevent);
            }
        }
 static void EventCallback(IntPtr usrPtr, ref S7Server.USrvEvent Event, int Size)
 {
     try
     {
         var msg = Server.EventText(ref Event);
         System.Console.WriteLine(msg);
     }
     catch (Exception ex)
     {
         Log.Logger.ExceptionLog(ex);
     }
 }
Beispiel #3
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 #4
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();
        }
        void EventCallback(IntPtr usrPtr, ref S7Server.USrvEvent Event, int Size)
        {
            var msg = Server.EventText(ref Event);

            Log.Logger.TraceLog(msg);
        }
Beispiel #6
0
        private static S7Server.TSrvCallback TheReadCallBack;  // <== Static var containig the callback

        // Here we use the callback to show the log, this is not the best choice since
        // the callback is synchronous with the client access, i.e. the server cannot
        // handle futher request from that client until the callback is complete.
        // The right choice is to use the log queue via the method PickEvent.

        static void EventCallback(IntPtr usrPtr, ref S7Server.USrvEvent Event, int Size)
        {
            Console.WriteLine(Server.EventText(ref Event));
        }