Skip to content
Snippets Groups Projects
Commit 38e43f43 authored by Tim Übelhör's avatar Tim Übelhör
Browse files

Few fixes for loading channels in AvailableChannels area.

FileSamplesTable checks if valueref exists.
parent 6d3cf1a4
No related branches found
No related tags found
No related merge requests found
......@@ -49,7 +49,6 @@ namespace ModeliChart.Basics
}
// Definition of the buffer access.
private double GetBufferValue(double[] buffer, uint valueRef) =>
buffer[posByValueRef[valueRef]];
......@@ -136,6 +135,7 @@ namespace ModeliChart.Basics
// Buffer = Timestamp + values
var buffer = new double[bufferSize];
var zipped = from valueRef in valueRefs
where posByValueRef.ContainsKey(valueRef)
from value in values
select (valueRef, value);
foreach (var (valueRef, value) in zipped)
......@@ -154,6 +154,8 @@ namespace ModeliChart.Basics
/// <returns>DataTable: Time; valuerefs</returns>
public async Task<DataTable> GetValuesAsync(IEnumerable<IChannel> channels, double startTime, double endTime)
{
// Only use available channels
channels = channels.Where(c => posByValueRef.ContainsKey(c.ValueRef));
// Init res DataTable
var table = new DataTable();
var timeColumn = new DataColumn("Time", typeof(double));
......
......
......@@ -38,7 +38,7 @@ namespace ModeliChart.Files
{
var guids = from subDir in Directory.GetDirectories(directory)
where FmuLoader.DirectoryIsFmu(subDir)
select subDir;
select Path.GetFileName(subDir);
foreach (var guid in guids)
{
if (!modelsByGuid.ContainsKey(guid))
......
......
......@@ -5,7 +5,6 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace ModeliChart.LocalMode
{
......@@ -45,10 +44,10 @@ namespace ModeliChart.LocalMode
{
Name = instanceName;
Model = model;
// Create the arrays for value references and values
intVrs = FmuChannels.GetIntVrs(model.Channels).ToArray();
realVrs = FmuChannels.GetRealVrs(model.Channels).ToArray();
boolVrs = FmuChannels.GetBoolVrs(model.Channels).ToArray();
// Store each valueref once
intVrs = FmuChannels.GetIntVrs(model.Channels).Distinct().ToArray();
realVrs = FmuChannels.GetRealVrs(model.Channels).Distinct().ToArray();
boolVrs = FmuChannels.GetBoolVrs(model.Channels).Distinct().ToArray();
concatenatedVrs = intVrs.Concat(realVrs).Concat(boolVrs);
intValues = new int[intVrs.Length];
realValues = new double[realVrs.Length];
......@@ -91,7 +90,7 @@ namespace ModeliChart.LocalMode
fmu.Instantiate(Name, FmiWrapper_Net.Fmi2Type.fmi2CoSimulation, Model.Guid, resourceUri, false, true);
currentState = FmuState.Instantiated;
ConsoleLogger.WriteLine(Name, "Instantiated");
fmu.SetupExperiment(false, 0.0, 0.0, false, 10.0);
fmu.SetupExperiment(false, 0.0, 0.0, false, 0.0);
fmu.EnterInitializationMode();
currentState = FmuState.InitializationMode;
ConsoleLogger.WriteLine(Name, "Initialization mode");
......
......
......@@ -108,9 +108,16 @@ namespace ModeliChart.LocalMode
public async Task Play()
{
await Pause();
await Pause().ConfigureAwait(false);
await taskQueue.Add(() =>
{
if (simulationTask.IsCompleted)
{
simulationTask = RunSimulation(simulationCanceller.Token);
}
}
);
}
public async Task PlayFast(double interval)
{
......@@ -141,7 +148,7 @@ namespace ModeliChart.LocalMode
{
fmuInstance.Reset();
}
});
}).ConfigureAwait(false);
}
public Task AddChannelLink(LinearChannelLink channelLink)
......
......
......@@ -46,6 +46,7 @@ namespace ModeliChart.UI
this.ribbonPanelAutolad = new System.Windows.Forms.RibbonPanel();
this.ribChkAutoload = new System.Windows.Forms.RibbonCheckBox();
this.ribBtnReloadParam = new System.Windows.Forms.RibbonButton();
this.ribBtnClearAutoLoad = new System.Windows.Forms.RibbonButton();
this.ribbonPanelTabs = new System.Windows.Forms.RibbonPanel();
this.ribbonButtonAddTab = new System.Windows.Forms.RibbonButton();
this.ribbonPanelLogo = new System.Windows.Forms.RibbonPanel();
......@@ -161,6 +162,7 @@ namespace ModeliChart.UI
//
this.ribbonPanelAutolad.Items.Add(this.ribChkAutoload);
this.ribbonPanelAutolad.Items.Add(this.ribBtnReloadParam);
this.ribbonPanelAutolad.Items.Add(this.ribBtnClearAutoLoad);
this.ribbonPanelAutolad.Text = "Autoload Parameters";
//
// ribChkAutoload
......@@ -176,6 +178,13 @@ namespace ModeliChart.UI
this.ribBtnReloadParam.Text = "Reload Now";
this.ribBtnReloadParam.Click += new System.EventHandler(this.RibBtnReloadParameters_Click);
//
// ribBtnClearAutoLoad
//
this.ribBtnClearAutoLoad.Image = ((System.Drawing.Image)(resources.GetObject("ribBtnClearAutoLoad.Image")));
this.ribBtnClearAutoLoad.SmallImage = ((System.Drawing.Image)(resources.GetObject("ribBtnClearAutoLoad.SmallImage")));
this.ribBtnClearAutoLoad.Text = "Clear Parameters";
this.ribBtnClearAutoLoad.Click += new System.EventHandler(this.ribBtnClearAutoLoad_Click);
//
// ribbonPanelTabs
//
this.ribbonPanelTabs.Items.Add(this.ribbonButtonAddTab);
......@@ -446,5 +455,6 @@ namespace ModeliChart.UI
private System.Windows.Forms.RibbonTextBox ribTxtPort;
private System.Windows.Forms.RibbonPanel ribbonPanelTabs;
private System.Windows.Forms.RibbonButton ribbonButtonAddTab;
private System.Windows.Forms.RibbonButton ribBtnClearAutoLoad;
}
}
\ No newline at end of file
......@@ -771,6 +771,14 @@ namespace ModeliChart.UI
await SaveWorkspaceAsync();
}
private void ribBtnClearAutoLoad_Click(object sender, EventArgs e)
{
if (File.Exists(workspace.SettablesTxtPath))
{
File.Delete(workspace.SettablesTxtPath);
}
}
#endregion
}
}
......@@ -118,12 +118,6 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="ribbonButtonAddTab.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
</value>
</data>
<data name="btPlay.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
......@@ -160,6 +154,34 @@
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
</value>
</data>
<data name="ribBtnClearAutoLoad.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAYAAABXuSs3AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAAB80AAAfNAfmvmsYAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwa
AAACIklEQVRoQ+3ZW0sUcRzG8c08BIGWHU3LxKiQ3kXvojfSTTdBdWWEUkQkEoWIKF1UF93mhUUHOqeU
hw6K9Srq+4ALw/A4zm4zs/OHeeBzM+z8f7+F2fkftlalSpWw0oYLuIbzulBwVFO11YN6SZ2r+BtxEUVF
taK11Uvq/EL0ZrmEvKMa8brqJXWeIT6AXEZe0diupnpJnbP4AzeQnr2sozFdLfWgXhrKGWzADXgdWSX+
e6r7jXNoKqfhnne5jV1oNrr3BtzYmxjBf+UkVuEK3EFDr6utqOlxuDF/4hQyySCW4QpNoJHm1fQtuLF+
YBiZ5ji+wRWcQjt2ir7gJNwYaxhCLjmKz3CFp5HU/G7cg7v3KwaQa47gI1wDM+hAPGr6Adw9S+hHITmM
D3CNPEYX6tEXmYP77CL6UGgO4R1cQ0+wB514uHUtTo+cHr2WZD9ewjX2FI9i1+re4iBamn14Adeg8wYH
UIr0YAGu0ahX6EWpshfbrSrlObpRuqjxebimpZSNp31UXqM0j0qQP84gX4eagN7DNaYJSLNn0gT0BYVP
QElT/iyi6xWtU7R6dJ/VlH8MhUSLrE9wjSQtsu7D3VPIIivIZe0JJG0k1NhOSdpIfEfmGwlt3VbgCt5F
o1u3m3BjZbp1y2uzPAY3ZiabZR1PrMMVKO3xhE6QtjsQGkVWuQJXo6kDoWCP4II99Az2mDnYg3294oL8
K6VKlSotTa32D/AbnpD23qkMAAAAAElFTkSuQmCC
</value>
</data>
<data name="ribBtnClearAutoLoad.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
</value>
</data>
<data name="ribbonButtonAddTab.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
wwAADsMBx2+oZAAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
</value>
</data>
<data name="ribBtnLogo.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
......
......
......@@ -210,6 +210,16 @@ namespace ModeliChart.UI.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap cross {
get {
object obj = ResourceManager.GetObject("cross", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
/// </summary>
......
......
......@@ -230,4 +230,7 @@
<data name="rwth_irt_de_rgb_281x68" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\rwth_irt_de_rgb_281x68.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="cross" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cross.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
\ No newline at end of file
......@@ -187,6 +187,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup>
<None Include="Resources\cross.png" />
<None Include="Resources\rwth_irt_de_rgb_281x68.png" />
<None Include="Resources\appbar_reload_74x46.png" />
<None Include="Resources\appbar_playfast_74x46.png" />
......
......
......@@ -168,9 +168,8 @@ namespace ModeliChart.UserControls
return;
}
}
// no folder found -> create a new one
IChannel helperChannel = new Channel(currentName, 0, "", false);
IChannel helperChannel = new Channel(currentName, 0, "", false).WithModelInstanceName("");
ChannelNode helperNode = new ChannelNode(helperChannel, Simulation, DataRepository);
treeModel.Nodes.Add(helperNode);
// Now insert the Channel under this node, this is Root -> 1
......
......
......@@ -24,19 +24,18 @@ namespace ModeliChart.UserControls
public string Name => Channel.Name;
public string Description=> Channel.Description;
public string Description => Channel.Description ?? "";
public string DisplayedUnit=> Channel.DisplayedUnit;
public string DataSourceName => Channel.ModelInstanceName;
public string DisplayedUnit => Channel.DisplayedUnit ?? "";
public string DataSourceName => Channel.ModelInstanceName ?? "";
public string Value
{
get => dataRepository?.GetValues(Channel)
.LastOrDefault()
.Value
.ToString();
.ToString() ?? "";
set
{
if (Double.TryParse(value, out double parsedValue))
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment