예제 #1
0
 static void ReadCallBack(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);
 }
예제 #2
0
        private void UpdateLogTimer_Tick(object sender, EventArgs e)
        {
            try
            {
                var form = (TextBox)this.tabDisplay.TabPages[0].Controls[0];
                if (form.Lines.Count() > 200)
                {
                    form.Clear();
                }

                var eventLog = new S7Server.USrvEvent();
                if (this.m_Server.PickEvent(ref eventLog))
                {
                    form.AppendText(this.m_Server.EventText(ref eventLog) + Environment.NewLine);
                    //var evtTime = Event.EvtTime;
                    //var evtSender = Event.EvtSender;
                    //var evtCode = Event.EvtCode;
                    //var cvtRetCode = Event.EvtRetCode;
                    //var evtParam1 = Event.EvtParam1;
                    //var evtParam2 = Event.EvtParam2;
                    //var evtParam3 = Event.EvtParam3;
                    //var evtParam4 = Event.EvtParam4;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
예제 #3
0
 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);
     }
 }
예제 #4
0
        private static S7Server.TSrvCallback TheReadCallBack;  // <== Static var containig the callback

        static void EventCallback(IntPtr usrPtr, ref S7Server.USrvEvent Event, int Size)
        {
            Console.WriteLine("Event Callback ");
            if (Event.EvtCode.Equals(S7Server.evcDataRead))
            {
                Console.WriteLine("Sent data to client.");
            }
            if (Event.EvtCode.Equals(S7Server.evcDataWrite))
            {
                Console.WriteLine("Received data from client.");
                HexDump(DB1, DB1.Length);
            }
        }
예제 #5
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);
            }
        }
예제 #6
0
        static void PrintRWEvent(ref S7Server.USrvEvent uevent)
        {
            StringBuilder builder = new StringBuilder();

            if (uevent.EvtCode == S7Server.evcDataRead)
            {
                builder.Append("[ READ  ] ");
            }
            else if (uevent.EvtCode == S7Server.evcDataWrite)
            {
                builder.Append("[ WRITE ] ");
            }
            else
            {
                return;
            }

            switch (uevent.EvtParam1)
            {
            case S7Server.S7AreaCT:
                builder.Append("Area: CT, ");
                break;

            case S7Server.S7AreaDB:
                builder.Append("Area: DB" + uevent.EvtParam2 + ", ");
                break;

            case S7Server.S7AreaMK:
                builder.Append("Area: MK, ");
                break;

            case S7Server.S7AreaPA:
                builder.Append("Area: PA, ");
                break;

            case S7Server.S7AreaPE:
                builder.Append("Area: PE, ");
                break;

            case S7Server.S7AreaTM:
                builder.Append("Area: TM, ");
                break;
            }
            builder.Append(string.Format("Start: {0}, Size: {1}", uevent.EvtParam3, uevent.EvtParam4));
            Console.WriteLine(builder.ToString());
        }
예제 #7
0
        public MainForm()
        {
            InitializeComponent();
            Server = new S7Server();
            Event  = new S7Server.USrvEvent();
            // Share some resources with our virtual PLC
            Server.RegisterArea(S7Server.srvAreaTM, // We are registering a DB
                                1,                  // Its number is 1 (DB1)
                                ref DB1,            // Our buffer for DB1
                                DB1.Length);        // Its size
            // Do the same for DB2 and DB3
            Server.RegisterArea(S7Server.srvAreaDB, 2, ref DB2, DB2.Length);
            Server.RegisterArea(S7Server.srvAreaDB, 3, ref DB3, DB3.Length);

            HexDump(DB1_Box, DB1, DB1.Length);
            HexDump(DB2_Box, DB2, DB2.Length);
            HexDump(DB3_Box, DB3, DB3.Length);
            LogTimer.Enabled = true;
        }
예제 #8
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();
        }
예제 #9
0
        void EventCallback(IntPtr usrPtr, ref S7Server.USrvEvent Event, int Size)
        {
            var msg = Server.EventText(ref Event);

            Log.Logger.TraceLog(msg);
        }
예제 #10
0
 static void ReadEventCallback(IntPtr usrPtr, ref S7Server.USrvEvent Event, int Size)
 {
     Console.WriteLine(Server.EventText(ref Event));
 }
예제 #11
0
        public Simulator()
        {
            InitializeComponent();

            server      = new S7Server();
            ServerEvent = new S7Server.USrvEvent();

            Action <string, int, int, int> add_ctrl = (name, db_nr, index, unit_nr) => {
                var ctrl = new SingleController()
                {
                    Name = name, DbNumber = db_nr, DBxx = DBxx[index]
                };
                ctrl.Dock       = DockStyle.Fill;
                ctrl.UnitNumber = unit_nr;

                ctrl.NewLogLine += (s, e) => AddLogLine(e);

                ctrl.CarrierMoves = (cnr, bridge, xval) =>
                {
                    foreach (Control ctl in tabs.Controls)
                    {
                        SingleController sc = (SingleController)ctl.Controls[0];
                        sc.NewCarrierPos(cnr, bridge, xval);
                    }
                };

                ctrl.TrolleyMoves = (tnr, trolley, lift, yval, active) =>
                {
                    foreach (Control ctl in tabs.Controls)
                    {
                        SingleController sc = (SingleController)ctl.Controls[0];
                        sc.NewTrolleyPos(tnr, trolley, lift, yval, active);
                    }
                };

                ctrl.SendMessageToMain = (message, msg, br, tr, li, te) =>
                {
                    foreach (Control ctl in tabs.Controls)
                    {
                        SingleController sc = (SingleController)ctl.Controls[0];
                        sc.MessageFromOtherUnit(ctrl.Name, message, msg, br, tr, li, te);
                    }
                };

                server.RegisterArea(S7Server.srvAreaDB, db_nr, ref DBxx[index], DBxx[index].Length);

                TabPage tp = new TabPage()
                {
                    Text = name
                };
                tp.Controls.Add(ctrl);
                tabs.Controls.Add(tp);
                ctrl.Init();
            };

            add_ctrl("Main cabinet", 159, 9, 10);
            add_ctrl("Carrier 1", 150, 0, 31);
            add_ctrl("Carrier 2", 151, 1, 32);
            add_ctrl("Trolley 1", 152, 2, 21);
            add_ctrl("Trolley 2", 153, 3, 22);
            add_ctrl("Trolley 3", 154, 4, 23);
            add_ctrl("IO table 1", 155, 5, 11);
            add_ctrl("IO table 2", 156, 6, 12);
            add_ctrl("IO table 3", 157, 7, 13);

            EventTimer.Enabled = true;

            TxtIP.Text = GetDefaultIp();
            StartBtn_Click(this, null);

            btnFaster_Click(this, null);
            btnFaster_Click(this, null);
        }
예제 #12
0
 static void ReadEventCallback(IntPtr usrPtr, ref S7Server.USrvEvent Event, int Size)
 {
     Console.WriteLine("ReadEvent Callback");
 }