예제 #1
0
        public bool Disconnection(string sender, string destination)
        {
            bool RetVal = true;

            //Create a DotNetMQ Message to send
            var message = MDSClientInstance.CreateMessage();

            //Set destination application name
            message.DestinationApplicationName = destination;

            //Create a message
            var MsgData = new PLCConnectionData
            {
                MsgCode = MsgCodes.DisconnectPLC,
                PLCName = this.Name,
            };

            //Set message data
            message.MessageData = MDS.GeneralHelper.SerializeObject(MsgData);

            // message.MessageData = Encoding.UTF8.GetBytes(messageText);
            message.TransmitRule = MessageTransmitRules.NonPersistent;

            try
            {
                //Send message
                message.Send();
            }
            catch (Exception exc)
            {
                // non sono riuscito a inviare il messaggio
                Logger.WarnFormat("Disconnection() : Messaggio non inviato : {0}", exc.Message);
            }
            return(RetVal);
        }
예제 #2
0
        /// <summary>
        /// Connette un PLC
        /// </summary>
        /// <param name="ConnectionData">Dati di connessione</param>
        /// <returns>true set tutto ok, altrimenti false</returns>
        private bool ConnectPLC(PLCConnectionData ConnectionData)
        {
            bool RetValue = true;

            if (_PLCs.ContainsKey(ConnectionData.PLCName))
            {
                // log
                Logger.WarnFormat("PLC [{0}] already connected", ConnectionData.PLCName);
                RetValue = false;
            }
            else
            {
                try
                {
                    var plc = new Plc(ConnectionData.PLCName, ConnectionData.Cputype, ConnectionData.IpAddress, ConnectionData.Rack, ConnectionData.Slot, ConnectionData.Delay);

                    _PLCs.Add(ConnectionData.PLCName, plc);

                    // associo l'evento di changed value sui tags sottoscritti
                    plc.TagChangedValue += plc_TagChangedValue;
                }
                catch (Exception exc)
                {
                    // log
                    Logger.WarnFormat("PLC [{0}] error in connection : {1}", ConnectionData.PLCName, exc.Message);

                    RetValue = false;
                }
            }
            return(RetValue);
        }
예제 #3
0
        public bool Connection(string sender, string destination)
        {
            bool RetValue = true;

            //Create a DotNetMQ Message to send
            var message = MDSClientInstance.CreateMessage();

            //Set destination application name
            message.DestinationApplicationName = destination;

            //Create a message
            var MsgData = new PLCConnectionData
            {
                MsgCode   = MsgCodes.ConnectPLC,
                PLCName   = this.Name,
                IpAddress = this.IPAddress,
                Rack      = this.Rack,
                Slot      = this.Slot,
                Delay     = this.Delay
            };

            //Set message data
            message.MessageData = MDS.GeneralHelper.SerializeObject(MsgData);

            // message.MessageData = Encoding.UTF8.GetBytes(messageText);
            message.TransmitRule = MessageTransmitRules.NonPersistent;

            try
            {
                //Send message
                message.Send();
                Logger.InfoFormat(Texts._MSG_SENT_TO_ + " {0}", message.DestinationApplicationName);
            }
            catch (Exception exc)
            {
                // non sono riuscito a inviare il messaggio
                Logger.WarnFormat(Texts._MSG_NOT_SENT_ + " : {0}", exc.Message);
                RetValue = false;
            }
            return(RetValue);
        }