public Response SendCommand(Byte cmd) { lock (threadLock) { var result = SearchAndSendCommand(cmd); if (result == Response.ErrorSendCmd) { result = SearchAndSendCommand(cmd); } TransmissionComplete?.Invoke(); if (!isUpdated) { return(result); } isUpdated = false; if (lastSuccessedPortName == null) { OnDisconnected(); } else { var status = GetStatus(lastSuccessedPortName); if (lastStatus != null && status != null && !lastStatus.Equals(status)) { OnUpdated(lastStatus = status); } if (lastStatus == null && status != null) { OnUpdated(lastStatus = status); } if (lastStatus != null && status == null) { OnUpdated(lastStatus); } OnConnected(status); } return(result); } }
public Status GetStatus() { lock (threadLock) { var result = SearchAndGetStatus() ?? SearchAndGetStatus(); if (lastStatus != null && result != null && !lastStatus.Equals(result)) { OnUpdated(lastStatus = result); } if (lastStatus == null && result != null) { OnUpdated(lastStatus = result); } if (lastStatus != null && result == null) { OnUpdated(lastStatus = null); } TransmissionComplete?.Invoke(); if (!isUpdated) { return(result); } isUpdated = false; if (lastSuccessedPortName == null) { OnDisconnected(); } else { OnConnected(result); } return(result); } }