예제 #1
0
        /// <summary>
        /// Devuelve una instancia de LenzResponse.
        /// </summary>
        /// <param name="type">Tipo de respuesta recibida.</param>
        /// <param name="data">Información /bytes) recibida.</param>
        public LenzResponse(byte[] data)
        {
            // Controla el caso de no tener datos
            if (data == null)
            {
                _type   = SystemResponses.Unknown;
                _dataOk = false;
                return;
            }

            // Comprueba que los dos bytes corresponden a los frames LI-USB
            if (data[0] == 0xFF && (data[1] == 0xFD || data[1] == 0xFE))
            {
                // Copia los datos quitando los dos bytes (frame)
                _data = RemoveFrame(data);

                // Obtiene el tipo
                _type = GetResponseType();

                // Determina si los datos son válidos
                _dataOk = CheckData();
            }
            else
            {
                _type   = SystemResponses.Unknown;
                _dataOk = false;

                // throw new Exception("Los datos recibidos son incorrectos.");
            }
        }
예제 #2
0
        /// <summary>
        /// Espera una determinada respuesta.
        /// </summary>
        /// <param name="responseType">Tipo de respuesta esperada.</param>
        /// <returns>Un valor que indica si se ha obtenido la respuesta esperada dentro del timeout.</returns>
        private LenzResponse WaitForResponse(SystemResponses responseType)
        {
            Stopwatch watch = new Stopwatch();
            TimeSpan  span  = TimeSpan.FromSeconds(_reqTimeout);

            // Inicia la medida de tiempo para controlar el Timeout
            watch.Start();

            // Espera la respuesta apropiada
            while ((_response != null) && (_response.Type != responseType))
            {
                System.Windows.Forms.Application.DoEvents();

                // Si se supera el timeout se devuelve False
                if (watch.Elapsed > span)
                {
                    watch.Stop();
                    throw new Exception("System response timeout: expecting " + responseType.ToString() + " exceed timeout");
                }
            }

            // Detiene el reloj
            watch.Stop();

            return(_response);
        }
예제 #3
0
 public LenzResponse()
 {
     _type = SystemResponses.Unknown;
 }