diff --git a/Source/EsuEcosMiddleman/HSI88USB/DeviceInterface.cs b/Source/EsuEcosMiddleman/HSI88USB/DeviceInterface.cs index bed18ad..8bc05f3 100644 --- a/Source/EsuEcosMiddleman/HSI88USB/DeviceInterface.cs +++ b/Source/EsuEcosMiddleman/HSI88USB/DeviceInterface.cs @@ -181,13 +181,13 @@ public async Task RunAsync() try { - _fs = new FileStream(_handle, FileAccess.ReadWrite, buffer.Length, isAsync: true); + _fs = new FileStream(_handle, FileAccess.ReadWrite, buffer.Length, isAsync: false); } catch (Exception ex) { ex.ShowException(); - Failed?.Invoke(this, EventArgs.Empty); + Failed?.Invoke(this, new DeviceInterfaceEventArgs(ex.GetExceptionMessages())); // highly fatal, no S88-data will be received nor handled return; @@ -211,6 +211,12 @@ public async Task RunAsync() //var d2 = new DeviceInterfaceData(Encoding.ASCII.GetString(buffer, 0, bytesRead)); //DataReceived?.Invoke(this, d2); + // query device information/version + Send($"v\r"); + bytesRead = _fs.Read(buffer, 0, buffer.Length); + var d2 = new DeviceInterfaceData(Encoding.ASCII.GetString(buffer, 0, bytesRead)); + DataReceived?.Invoke(this, d2); + var tkn = _cancellationToken.Token; while (!tkn.IsCancellationRequested) diff --git a/Source/EsuEcosMiddleman/Middleman.cs b/Source/EsuEcosMiddleman/Middleman.cs index e8aa2b4..d502cb3 100644 --- a/Source/EsuEcosMiddleman/Middleman.cs +++ b/Source/EsuEcosMiddleman/Middleman.cs @@ -176,10 +176,21 @@ private void SendCurrentHsi88States() private readonly ConcurrentDictionary _hsiStates = new ConcurrentDictionary(); + private bool _versionShown = false; + private void Hsi88DeviceOnDataReceived(object sender, DeviceInterfaceData data) { _cfgRuntime.Logger?.Log.Debug($"HSI-88: {data.Data}"); + if (!_versionShown && data.Data.StartsWith("V", StringComparison.OrdinalIgnoreCase)) + { + _versionShown = true; + + _cfgRuntime.Logger?.Log.Info($"HSI-88: {data.Data}"); + + return; + } + foreach (var it in data.States) { _cfgRuntime.Logger?.Log.Debug($"{it.Key} => {it.Value}"); @@ -294,7 +305,7 @@ private void TcpServerInstanceOnMessageReceived(object sender, MessageEventArgs } _cfgRuntime.Logger?.Log.Debug($"Ecos [out]: {eventargs.Message}"); - + _handler.SendToEcos(eventargs.Message); }