Skip to content

Commit

Permalink
fix: fix the 1st symbol not loaded error
Browse files Browse the repository at this point in the history
  • Loading branch information
randolfly committed Feb 24, 2025
1 parent 75a5cad commit 5a49ee9
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 27 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 1 addition & 3 deletions src/TwincatToolbox/Services/AdsComService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,7 @@ List<SymbolInfo> LoadSymbolTreeBFS(ISymbol root) {
symbolList.Add(new SymbolInfo(symbol));
}
}

// remove first element, which is the root symbol(virtual symbol)
symbolList.RemoveAt(0);

return symbolList;
}

Expand Down
24 changes: 13 additions & 11 deletions src/TwincatToolbox/ViewModels/DataLogViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ public List<SymbolInfo> SearchResultSymbols
}
}

private void UpdateSearchResultSymbols() {
private void UpdateSearchResultSymbols()
{
_searchResultSymbols = SearchSymbols(AvailableSymbols);

SearchResultSelectedSymbols.CollectionChanged -= OnSearchResultSelectedSymbolsChanged;
Expand All @@ -75,8 +76,7 @@ private void UpdateSearchResultSymbols() {

public ISukiDialogManager DialogManager { get; } = DialogManageService.DialogManager;

public DataLogViewModel(IAdsComService adsComService,
ILogDataService logDataService, ILogPlotService logPlotService)
public DataLogViewModel(IAdsComService adsComService, ILogDataService logDataService, ILogPlotService logPlotService)
: base("DataLog", MaterialIconKind.Blog, index: -1)
{
_adsComService = adsComService;
Expand All @@ -96,15 +96,15 @@ private void OnSearchResultSelectedSymbolsChanged(object? sender, NotifyCollecti
[RelayCommand]
private void OnGetAvailableSymbols()
{
if (_adsComService.GetAdsState() == TwinCAT.Ads.AdsState.Invalid)
if (_adsComService.GetAdsState() == AdsState.Invalid)
{
Debug.WriteLine("Ads server is not connected.");
return;
}

AvailableSymbols = _adsComService.GetAvailableSymbols();
AvailableSymbols.Sort((a, b) => a.Name.CompareTo(b.Name));
Debug.WriteLine("Available symbols: {0}", AvailableSymbols.Count());
AvailableSymbols.Sort((a, b) => string.Compare(a.Name, b.Name, StringComparison.Ordinal));
Debug.WriteLine("Available symbols: {0}", AvailableSymbols.Count);

if (_isFirstGetAvailableSymbols)
{
Expand Down Expand Up @@ -137,14 +137,15 @@ public List<SymbolInfo> SearchSymbols(IList<SymbolInfo> sourceList)
{
if (string.IsNullOrEmpty((SearchText))) return sourceList.ToList();
var searchResults = sourceList
.OrderByDescending(s=>GetSimilarityScore(SearchText, s))
.OrderByDescending(s => GetSimilarityScore(SearchText, s))
.ToList();
// Debug.WriteLine("Search results: {0}", searchResults.Count());

return searchResults;
}

public int GetSimilarityScore(string searchText, SymbolInfo symbolInfo) {
public int GetSimilarityScore(string searchText, SymbolInfo symbolInfo)
{
return Fuzz.PartialTokenSetRatio(searchText, symbolInfo.Name.ToLower());
}

Expand Down Expand Up @@ -240,7 +241,8 @@ private async Task StopLogAsync()
}

// todo: fix extract type error, such as REAL(length = 4) => BinaryPrimitives.ReadHalfLittleEndian(e.Data.Span);
private async void AdsNotificationHandler(object? sender, AdsNotificationEventArgs e) {
private async void AdsNotificationHandler(object? sender, AdsNotificationEventArgs e)
{
if (!_symbolsDict.TryGetValue(e.Handle, out var symbol))
{
Debug.WriteLine("Symbol not found for handle: {0}", e.Handle);
Expand Down
25 changes: 12 additions & 13 deletions src/TwincatToolbox/ViewModels/MainViewModel.cs
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO.Pipes;
using System.Linq;
using System.Threading.Tasks;

using Avalonia;
using Avalonia.Collections;
using Avalonia.Controls.ApplicationLifetimes;

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;

using SukiUI.Dialogs;

using TwinCAT.Ads;

using TwincatToolbox.Models;
using TwincatToolbox.Services;
using TwincatToolbox.Services.IService;
Expand All @@ -25,11 +21,11 @@ public partial class MainViewModel : ObservableObject
public IAvaloniaReadOnlyList<ViewModelBase> NavViews { get; }
[ObservableProperty] private ViewModelBase? _activeView;

[ObservableProperty] private string _netId = string.Empty;
[ObservableProperty] private string _portId = string.Empty;
[ObservableProperty] private string _netId;
[ObservableProperty] private string _portId;

private AdsConfig _adsConfig;
private IAdsComService _adsComService;
private readonly AdsConfig _adsConfig;
private readonly IAdsComService _adsComService;

[ObservableProperty] private string _adsStateText = string.Empty;
public ISukiDialogManager DialogManager { get; } = DialogManageService.DialogManager;
Expand Down Expand Up @@ -76,16 +72,19 @@ private async Task ScanAndSelectAdsRouteAsync() {
{
DataContext = new ScanAdsRouteViewModel()
};
if (App.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
var dialogResult = await dialog.ShowDialog<string>(desktop?.MainWindow);
if (dialogResult != null) NetId = dialogResult;
if (desktop.MainWindow != null)
{
var dialogResult = await dialog.ShowDialog<string>(desktop.MainWindow);
NetId = dialogResult;
}
Debug.WriteLine($"Selected NetId: {NetId}");
}
}

[RelayCommand]
private void OpenConfigFolder() {
private static void OpenConfigFolder() {
Process.Start(new ProcessStartInfo
{
FileName = AppConfig.FolderName,
Expand Down

0 comments on commit 5a49ee9

Please sign in to comment.