Skip to content

Commit 0594a42

Browse files
committed
Upgraded the projects to .NET 10 and fixed the binding errors.
1 parent 1b165fc commit 0594a42

3 files changed

Lines changed: 26 additions & 11 deletions

File tree

README.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SignalBench v0.2.3.2
1+
# SignalBench v0.2.3
22

33
**A professional-grade telemetry decoding and analysis workbench for satellite, aerospace, automotive, and industrial test engineers.**
44

@@ -21,7 +21,7 @@ The project has recently undergone a major architectural overhaul to support a "
2121
- **Plugin Infrastructure**: Implemented a robust `PluginLoader` service in the Core. The app now dynamically scans a `Plugins/` directory on startup, loading any DLL that implements the `IPlugin` interface.
2222
- **Visualization Refactor**: Refactored the internal "Tab" system to be entirely generic. The UI no longer assumes every tab is a `PlotView`. By implementing `ITabViewModel` and `ITabFactory`, developers can now add entirely new view types (e.g., 3D Models, Maps, Gauges) via plugins.
2323

24-
## 🚀 Features
24+
## Features
2525

2626
- **Workspace-Centric UI**: Top-level tabbed architecture. Each tab is a complete workspace with its own independent data source (File, Serial, or Network), signal selection sidebar, and plot configuration.
2727
- **Intelligent Data Import**: Specialized, format-aware dialogs for Delimited Text (CSV, TSV, etc.) and Binary data. Includes live data previews, custom delimiter/header configuration, and validation.
@@ -113,16 +113,19 @@ Streaming settings are **per-workspace (per-tab)**. You can stream from multiple
113113
## 📋 Requirements & Setup
114114

115115
- **Platform**: Windows, Linux, macOS (Cross-platform via Avalonia)
116-
- **Runtime**: .NET 9.0 SDK
116+
- **Runtime**: .NET 10.0 SDK
117+
- **IDE**: Visual Studio 2026 (or JetBrains Rider / VS Code with .NET 10 support)
117118
- **Dependencies**:
118-
- Avalonia UI
119+
- Avalonia UI (v11.3+)
119120
- ScottPlot (v5.1+)
120121
- YamlDotNet
121122
- Microsoft.Data.Sqlite
122123
- NCalcSync
123124

124125
### Building from Source
125126

127+
The project uses the modern .NET 10 artifacts layout. Build results are centralized in the `artifacts/` directory at the root of the solution.
128+
126129
```bash
127130
dotnet build SignalBench.sln
128131
```
@@ -133,6 +136,11 @@ dotnet build SignalBench.sln
133136
dotnet test
134137
```
135138

139+
### Development Notes
140+
141+
- **Central Package Management (CPM)**: All NuGet package versions are managed centrally in `Directory.Packages.props`.
142+
- **SDK Portability**: The `SignalBench.SDK` project uses `VersionOverride` for its dependencies to ensure it can be safely referenced as a source project from external solutions.
143+
136144
---
137145

138146
*Built for engineers who need results, not fluff.*

SignalBench/Converters/GeneralConverters.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,14 @@ public class ValueWithUnitConverter : IMultiValueConverter
6969
if (values.Count < 1 || values[0] == null || values[0] is not double d) return "n/a";
7070

7171
string val = d.ToString("G5");
72-
if (values.Count > 1 && values[1] is string unit && !string.IsNullOrEmpty(unit))
72+
string? unit = null;
73+
if (values.Count > 1)
74+
{
75+
if (values[1] is string s) unit = s;
76+
else if (values[1] is SignalBench.ViewModels.SignalItemViewModel item) unit = item.Unit;
77+
}
78+
79+
if (!string.IsNullOrEmpty(unit))
7380
{
7481
return $"{val} {unit}";
7582
}

SignalBench/Views/SignalStatsView.axaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<TextBlock.Text>
4040
<MultiBinding Converter="{StaticResource ValueWithUnitConverter}">
4141
<Binding Path="Min"/>
42-
<Binding Path="SelectedSignal.Unit"/>
42+
<Binding Path="SelectedSignal"/>
4343
</MultiBinding>
4444
</TextBlock.Text>
4545
</TextBlock>
@@ -50,7 +50,7 @@
5050
<TextBlock.Text>
5151
<MultiBinding Converter="{StaticResource ValueWithUnitConverter}">
5252
<Binding Path="Max"/>
53-
<Binding Path="SelectedSignal.Unit"/>
53+
<Binding Path="SelectedSignal"/>
5454
</MultiBinding>
5555
</TextBlock.Text>
5656
</TextBlock>
@@ -61,7 +61,7 @@
6161
<TextBlock.Text>
6262
<MultiBinding Converter="{StaticResource ValueWithUnitConverter}">
6363
<Binding Path="Mean"/>
64-
<Binding Path="SelectedSignal.Unit"/>
64+
<Binding Path="SelectedSignal"/>
6565
</MultiBinding>
6666
</TextBlock.Text>
6767
</TextBlock>
@@ -72,7 +72,7 @@
7272
<TextBlock.Text>
7373
<MultiBinding Converter="{StaticResource ValueWithUnitConverter}">
7474
<Binding Path="Std"/>
75-
<Binding Path="SelectedSignal.Unit"/>
75+
<Binding Path="SelectedSignal"/>
7676
</MultiBinding>
7777
</TextBlock.Text>
7878
</TextBlock>
@@ -83,7 +83,7 @@
8383
<TextBlock.Text>
8484
<MultiBinding Converter="{StaticResource ValueWithUnitConverter}">
8585
<Binding Path="Rms"/>
86-
<Binding Path="SelectedSignal.Unit"/>
86+
<Binding Path="SelectedSignal"/>
8787
</MultiBinding>
8888
</TextBlock.Text>
8989
</TextBlock>
@@ -94,7 +94,7 @@
9494
<TextBlock.Text>
9595
<MultiBinding Converter="{StaticResource ValueWithUnitConverter}">
9696
<Binding Path="P2p"/>
97-
<Binding Path="SelectedSignal.Unit"/>
97+
<Binding Path="SelectedSignal"/>
9898
</MultiBinding>
9999
</TextBlock.Text>
100100
</TextBlock>

0 commit comments

Comments
 (0)