예제 #1
0
 //----------------------------------------------------------------------
 private void LogEvent(EMQLogID aIndex, string aStr)
 {
     if (logging != EMQLog.None)
     {
         logger.Log((int)aIndex, aStr);
     }
 }
예제 #2
0
 private void LogEvent(ETemiLogItems index, string str)
 {
     if (logging != ETemiLogging.None)
     {
         logger.Log((int)index, str);
     }
 }
예제 #3
0
        public void Log(EEthernetLogItem item, string str)
        {
            switch (Logging)
            {
            case EEthernetLogging.None:
                break;

            case EEthernetLogging.Event:
                if ((item != EEthernetLogItem.Send) && (item != EEthernetLogItem.Receive))
                {
                    logger.Log((int)item, str);
                }
                break;

            case EEthernetLogging.All:
                logger.Log((int)item, str);
                break;
            }
        }
예제 #4
0
        public void Log(EListenerLogItem item, string str)
        {
            switch (Logging)
            {
            case EListenerLogging.None:
                break;

            case EListenerLogging.Event:
            case EListenerLogging.All:
                logger.Log((int)item, str);
                break;
            }
        }
예제 #5
0
        private void Send(ClientRow client)
        {
            try
            {
                lock (server.Udp)
                {
                    server.Devices.Lock();
                    try
                    {
                        packet.Clear();
                        packet.Command = EServerCommand.DeviceValues;
                        packet.IArg1   = (server.Devices.PowerMeterConnected == true) ? 1 : 0;
                        packet.IArg2   = (server.Devices.RecorderConnected == true) ? 1 : 0;
                        packet.IArg3   = (server.Devices.ControllerConnected == true) ? 1 : 0;
                        packet.IArg4   = (server.Devices.PlcConnected == true) ? 1 : 0;

                        Buffer.BlockCopy(
                            server.Devices.Bytes, 0, packet.Bytes, 17, server.Devices.Bytes.Length);
                    }
                    finally
                    {
                        server.Devices.Unlock();
                    }

                    server.Udp.Send(packet.Bytes, packet.Length, client.IpPoint);
                }

                if (Logging == ESenderLogging.All)
                {
                    logger.Log((int)ESenderLogItem.Send,
                               "To {0} - Command : {1}, PowerMeter : {2}, Recorder : {3}, Controller : {4}, Plc : {5}",
                               client.IpPort, packet.Command.ToString(), packet.IArg1, packet.IArg2, packet.IArg3, packet.IArg4);
                }
            }
            catch (Exception e)
            {
                logger.Log((int)ESenderLogItem.Exception, e.ToString());
            }
        }
예제 #6
0
        protected override void Execute()
        {
            byte[]     bytes   = null;
            IPEndPoint ipPoint = new IPEndPoint(IPAddress.Any, 0);

            // Thread 종료 신호가 들어올때 까지 루프
            while (Terminated == false)
            {
                try
                {
                    if ((server != null) && (server.Udp != null))
                    {
                        lock (server.Udp)
                        {
                            if (server.Udp.Available > 0)
                            {
                                bytes = server.Udp.Receive(ref ipPoint);
                            }
                            else
                            {
                                bytes = null;
                            }
                        }

                        if (bytes != null)
                        {
                            packet.Clear();
                            Array.Copy(bytes, 0, packet.Bytes, 0, bytes.Length);

                            CommandExecute(ipPoint);
                        }
                    }
                }
                catch (Exception e)
                {
                    logger.Log((int)EListenerLogItem.Exception, e.ToString());
                    DisconnectClient(ipPoint);
                }

                // 제어권 양보
                Yield();
            }
        }