예제 #1
0
 public virtual void UpdateFromMessage(IDTRequest msg)
 {
     FaultWindowOpened            = msg.FaultWindowOpen;
     FaultReadingFromMDS          = msg.FaultReadingMDS;
     FaultWritingToMDS            = msg.FaultWritingMDS;
     CommunicationErrorWithPRODIS = msg.CommunicationErrorWithPRODIS;
 }
예제 #2
0
        /**
         * /// <summary>   internal method to receive data</summary>
         * ///
         * /// <remarks>   Lishi, 06/11/2013.</remarks>
         * ///
         * /// <exception cref="SocketException">  Thrown when a Socket error condition occurs. </exception>
         **/
        private byte ManageReceive()
        {
            // try
            // {
            //(°°) inserita variabile che mi ritorna il valolre del servizio
            byte ServReq = 0;
            int  read    = _socket.Receive(_buffer, _buffer.Length, SocketFlags.None);

            if (read == 44)
            {
                //secondo le specifiche udp non dovrei poter ricevere mezzi pacchetti
                IDTRequest msg = new IDTRequest();
                msg.SetBuffer(_buffer);

                //Gestione del TOGGLE BYTE
                // Il PC scrive un numero nell'11 byte, poi appena vediamo quel numero scritto
                // nel byte 3 del messaggio che riceviamo dall'MFT, allora incrementiamo di 1
                // quel numero e al prossimo messaggio che invieremo, lo andremo a copiare sempre nel
                // byte 11.

                // Caso particolare: all'avvio il valore è zero, quindi noi
                // ce ne freghiamo e scriviamo 1.
                if (msg.ToggleByte == 0)
                {
                    _currentToggle = 1;
                }
                else
                {
                    // se vediamo che il valore che riceviamo è diverso da quello corrente, allora incremento di uno.
                    if (_currentToggle == msg.ToggleByte)
                    {
                        _currentToggle++;
                    }
                }
                //      byte nextT = (byte) ((msg.ToggleByte+ 1)%Byte.MaxValue);
                //  _currentToggle = msg.ToggleByte;
                // if (msg.ToggleByte == _currentToggle)

                //     _currentToggle = nextT>  _currentToggle ? nextT : _currentToggle;

                _lastReceivedCounter = msg.ContinuousMFTNumber;
                {
                    _incomming.Add(msg);
                }


                //Console.WriteLine(msg.ContinuousMFTNumber);
                //Log.Info(String.Format("Received MSG ToggleByte = {0} ContinuousMFTNumber ={1}", msg.ToggleByte, msg.ContinuousMFTNumber));
                Log.Info(String.Format("TOGGLE:{1:X2} MFT:{2:X2}  UDP RX : {0}", msg.ToHexString(), msg.ToggleByte, msg.ContinuousMFTNumber));

                _stDisconnection.Restart();

                OnMessageReceived(new IDTMessageReceivedArgs(msg));
                ServReq = msg.ServiceRequest;
            }

            return(ServReq);

            /*    }
             *  catch (SocketException ex)
             *  {
             *      if (ex.ErrorCode != (int) SocketError.WouldBlock)
             *          throw;
             *  }*/
        }