/// <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."); } }
/// <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); }
public LenzResponse() { _type = SystemResponses.Unknown; }