Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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);
            }
        }