public async Task OpenAsync(string port, int baudRate) { if (IsOpen) { throw new InvalidOperationException( "The controller is already connected, please close the existing connection."); } _connection?.Dispose(); if (_connection != null) { _connection.Open(); return; } _connection = new SerialConnection(port, baudRate); try { Connect(port, baudRate); _connection.Open(); await Initialize(); } catch (Exception) { Close(); throw; } }
public void Close() { if (IsOpen) { _connection.MemberSerializing -= OnMemberSerializing; _connection.MemberSerialized -= OnMemberSerialized; _connection.MemberDeserializing -= OnMemberDeserializing; _connection.MemberDeserialized -= OnMemberDeserialized; _connection.Close(); _connection.Dispose(); _connection = null; } }