Displaying data in IADs

1,055 views
Skip to first unread message

Balaji Kartikeyan

unread,
Jul 5, 2017, 3:54:34 PM7/5/17
to IADS
HI Group,
I am recently working on a smal project in IADS to log times automatically. the question I have is this:
Is there a way to display values from a csv file as a table in analysis window? ANd subsequently update the table as values change in CSV?


regards,
Balaji 

James Bretz

unread,
Jul 5, 2017, 4:06:59 PM7/5/17
to ia...@googlegroups.com

Hi Balaji,

 

Unfortunately we don’t have any displays to view a CSV file. You’d have to build your own custom display.

 

There are tutorials available here: http://iads.symvionics.com/programs.html

 

This might not be too difficult in C#. Maybe some of the other developers can post clues,

Jim

--
You received this message because you are subscribed to the Google Groups "IADS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to iads+uns...@googlegroups.com.
To post to this group, send email to ia...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/iads/a52a5590-e82e-48f7-ac3c-54f7b7524414%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Balaji Kartikeyan

unread,
Jul 12, 2017, 3:19:17 PM7/12/17
to IADS
Hi Jim,
I am looking at developing an activex control but I just wanted to mention that I want a resize-able table in the display , meaning i want to add new rows as more data become available.


regards,
Baljai 

James Bretz

unread,
Jul 13, 2017, 12:51:17 PM7/13/17
to ia...@googlegroups.com

Hi Balaji,

 

The good thing is that if you build your own display, you’re in complete control. You can make the table behave however you want. I’m sure the C# grid control has this capability.

Message has been deleted

Balaji Kartikeyan

unread,
Jul 14, 2017, 12:34:01 PM7/14/17
to IADS
Hi Jim,
Thank you for setting me in the right direction. I hope you understand that I am an intern and I am learning this software by developing these displays and helping my company to run displays efficiently using the capabilities of IADS.
 
I do have another question. Consider I have a group trigger params namely [param1 param2 param3]. I want to log the times everytime any one of this params are triggered.  Currently I am using this method:

1. via vbscript using an action object, wherein it runs the vbscript everytime each parameter is triggered and the vbscript subsequently captures the time and stores it. This requires action object for each parameter.

But, I want to reduce the number of action objects in the display, for my application I have like 10 of them right now, by combining the trigger params into data group. But if I do that,
1. Can I pass this data group as an argument to action object?Or any other display object so that everytime a parameter inside this data group is triggered it exports this datagroup to a file/vbscript?
2. Do u think its possible to develop an activeX control to take in input as a data group and trigger a export vbscript everytime a parameter inside the datagroup is triggered?

I also wanted to ask, can we fire off multiple vbscripts using the same action object? and if not, is it feasible to develop a display that does that by ourselves?

I hope I have explained myself well here. If not, I am happy to answer questions.

regards,
Balaji

James Bretz

unread,
Jul 14, 2017, 2:05:54 PM7/14/17
to ia...@googlegroups.com

Hi Balaji,

 

You can pass in the ‘name’ of the data group to the object through the ActionArg2 property. If I recall correctly, anything in the ActionArg2 property gets sent to the VB script as command line arguments.

 

Having said that, I don’t think it’s going to help your situation. If you pass in the DataGroup to the script, that implies that the script would need to check the parameters for triggering. To do that, it would have to run independently (and persistently) along with your window and watch the parameters in the group for a ‘trigger’. In other words, you’d have to rethink the whole operation.

 

I think your second question would be a better approach. It would be far easier to create a custom display to take in a DataGroup name, create those parameters, monitor for a trigger, and log that trigger. This is a bit more advanced that just accepting parameters from Iads because you need to create the parameters yourself using the Iads automation interface. It can certainly be done, but you’re in for a learning curve.

 

To answer the last question, you can’t fire off multiple VB scripts from the same action object in parallel… but in theory, you could make one script that calls N other scripts. I personally don’t know how to do that, but I’m sure it’s doable with a little searching  on the net. And finally, yes, you could build a display to do anything you want… but if you build the display, I’m not sure why you’d want to fire off scripts. You can just put the work into your display.

Balaji Kartikeyan

unread,
Jul 14, 2017, 4:49:56 PM7/14/17
to IADS
Thank you Jim,
I did realize that running the script continuously in the background is counter-productive for my application. 
The reason why I was aking to fire off multiple vbscripts is because one event triggers two separate actions, for eg:
Landing triggers an action to store landing time , among several other events (take off, taxi, engine starts and stops etc.,.), and then use it to calculate various times of the test like air time, engine time etc.
Landing also triggers another event where we have to log completely separate set of parameters (Which are test specific) , among which there are constants and some which needs to be monitored for some time before latching. 
well I dont think I am doing justice to the complexity of the task involved But i tried my best to explain.

I will keep you updated on how I my project is progressing.


Balaji

Balaji Kartikeyan

unread,
Jul 17, 2017, 11:36:21 AM7/17/17
to IADS
Hi Jim,
I have been trying to understand the examples from Symvionics support page (Building ActiveX display using C#) but I am not able to figure out how to use it to meet my needs. So I need your help in understanding this whole process:
1. In first stage, I want to read a csv file , which dynamically changes in size after every landing, and display it in datagrid control. I am not taking any input from IADS and i want to refresh this display every second. How do you think I can achieve this?
2. In the second stage, I want to take in a datagrooup , perform some calculations on that parameters and then update the datagrid with values. The questions here are:
      i. How do i pass on a datagroup name from IADS to the activeX control?
      ii. Can you give me an example of how it can be done?
     iii. I have seen a few scripts using the iadsautomationlib. What is that? and how can it help me?
I know that these are some basic questions but I need your help in understanding these in order to demonstrate full capability of IADS at my workplace.


regards,
Balaji

James Bretz

unread,
Jul 17, 2017, 1:11:54 PM7/17/17
to ia...@googlegroups.com

Balaji,

 

Unfortunately, I’m not very versed in C# programming, but I’ll try to help regardless. Maybe someone with more experience will pipe in.

 

As for as the first question, if you’re not using IADS data, you can probably use a ‘timer’. Basically, just google: C# timer example and read about how you would set them up. In fact, for most of these issues, google is going to be your best friend. All or most of the answers to the general C# question are out there, you just have to search for them.

 

For the second question, you can pass a DataGroup name through a string property in your C# display. You can then set that property using the properties sheet in Iads (or in theory, drop a string parameter on that property which contains the value). The tutorial covers how to build a property. Just change the type to string.

 

The IadsAutomationLib is a fairly large library with access function to the Iads application. You’ll end up using those functions to accept parameters into your display… or to be driven by Iads per each update and create your own parameters given a DataGroup. There is an example of using the interface in the tutorial Creating an ActiveX display with Every Sample in C#. We’ll go into that in more detail when you start this leg of the project.

Dale

unread,
Jul 17, 2017, 7:58:55 PM7/17/17
to IADS
Hi Balaji,

Regarding your question about logging the times of a group of parameters as they are triggered, you might want to look into our TextHistoryViewer display. If it's not already in your Display Builder, you may need to add it manually by right-clicking in the Display Builder "ActiveX Controls" tab and checking the IadsBusMessageDisplays.TextHistoryViewer entry.

The TextHistoryViewer is a tabular display that shows the history of a group of parameters - kind of like a StripChart but in a table format. It has a few different methods to display values, the one you would be interested in is "value change." When this method is set, anytime any of the parameters attached to the display change value a new row is added to the table with the corresponding time and value of the parameter(s) that changed at that time. This control can also log these time/values to an external file as you are playing back the data.

If you think this might help you and would like to give it a shot, try the following:

  1. Drag/drop the TextHistoryViewer control from your Display Builder to one of your Analysis Windows (you may need to add it to your Display Builder if it isn't already there using the method I outlined above).
  2. Drag/drop the individual parameters that you'd like to trigger off of (e.g. param1, param2, param3) onto the TextHistoryViewer control. When you drop each parameter onto the display, you'll get a popup menu with a list of values to attach the parameter to. You'll want to choose "Add Parameter" at the top for each one - this adds a new instance of that parameter to the display. As you add each parameter you'll see a new column created in the TextHistoryViewer for each one. Currently this control can display up to 10 different parameters at a time.
  3. Right-click on the TextHistoryViewer and select "Properties" to bring up the Property Sheet. From here you can adjust how it triggers rows and where it logs them to.
  4. For the "TriggerOutputType" property, select "ValueChange". This will trigger a row each time any of the attached parameters changes value.
  5. For the "LogFilePath" property, enter the full name and path to an external file you would like the values to be logged to (the control will automatically create this file). Example: C:\Folder1\TextHistoryOutput.csv
  6. For the "LogEntries" property, set the value to "True"
Go ahead and play back the data. As the values for the parameters you've attached to the TextHistoryViewer control change, a new row should be added that displays the time as well as the values of the parameters that change. This row should also simultaneously be written to the external file you've specified. You won't be able to view this file until you close IADS, as it maintains a lock on the file while the control is running.

This may not get you 100% of what you need, but it might solve one piece of the puzzle.

Dale

Dale Jones
IADS Software Developer
Phone:
- 661-277-4787 (Mon/Tue)
- 661-273-7003 x207 (Wed/Thu/Fri)

Balaji Kartikeyan

unread,
Jul 17, 2017, 10:15:09 PM7/17/17
to IADS
HI Dale,
Thank you for suggesting that method, I will definitely give it a try tomorrow. But the requirement right now is to have the ability to see those times as the test is in progress. I do have a question regarding custom displays in VS using c#. Can we use any type of template? (like Win forms etc.) or are we restricted to use only user control?

regards,
Balaji
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

Balaji Kartikeyan

unread,
Jul 18, 2017, 10:43:51 AM7/18/17
to IADS
HI Jim,
I attempted to build the progressBar using VS 2017. The build was successful but I faced the following problems when I tried to install it in IADS.
1. The regasm utility did not register the dll file and said Warning RA0000:no type was registered

2. The IADS did not recognize the dll file when I placed in IADS/ClientWorkstation

I also built another project to read a csv file cat3_data and present it in the form a datagridview. I faced the same problems as above.


I know you guys might be busy, but any help would be appreciated.

regards,
Balaji

Balaji Kartikeyan

unread,
Jul 18, 2017, 10:57:06 AM7/18/17
to IADS
Hi Dale, 
Please refer to my reply to Jim's post regarding the attempts I made.


regards,
Balaji

Balaji Kartikeyan

unread,
Jul 18, 2017, 11:23:29 AM7/18/17
to IADS
HI Dale,
I tried the method u suggested. It will be useful to keep track of triggers but unfortunately it will not be able to serve the purpose we want. Our requirement is 
based on an event , say landing, we have to note down values of few parameters like sink rate, pitch, roll etc and we have to calculate a few more and then freeze them after another event. finally, we have to group everything together and display in real time in IADS. With the parameter that are being calculated to be updated as they are calculated preferably at 1 Hz. 


regards,
Balaji

On Monday, 17 July 2017 18:58:55 UTC-5, Dale wrote:

James Bretz

unread,
Jul 18, 2017, 12:55:00 PM7/18/17
to ia...@googlegroups.com

Hi Balaji,

 

The TextHistoryViewer displays the data in realtime while the test is in progress. It also writes/logs the values to a csv file and triggers off of value change, some given time interval, or a Boolean equation. I think it’s exactly what you need.

 

As for the custom displays, you can do anything that’s available to you in C#,

Balaji Kartikeyan

unread,
Jul 18, 2017, 1:24:09 PM7/18/17
to IADS
HI Jim,
I will definitely take a look at it again. Maybe there was something which i missed. I apologize for barrage of messages yesterday. I was just so enthusiastic to get this thing to work. I do hope I can count on your expertise and advice to learn and use IADS to its maximum potential. 

regards,
Balaji

Dale

unread,
Jul 18, 2017, 1:33:57 PM7/18/17
to IADS
Hi Balaji,

I was able to get your DLL to register by setting the "ComVisible" property to "true" in AssemblyInfo.cs and rebuilding the DLL. When you run regasm to register it, you'll need to make sure you do it from an elevated command prompt (admin access). This worked for me on your WindowsFromsApp1 project (the progressbar project wouldn't build for me, there were some syntax errors in the code). Give that a try and see if it gets you any further.

Dale

Balaji Kartikeyan

unread,
Jul 18, 2017, 1:40:55 PM7/18/17
to IADS
Thank you dale,
Will do. I will update you and Jim once I make those changes.

regards,
Balaji

Balaji Kartikeyan

unread,
Jul 19, 2017, 10:42:04 AM7/19/17
to IADS
Hi Dale,
I did fix the code based on your advice and I was able to register the DLL using Regasm. I did move the dll file to system32 and sysWOW64 folder. 
After registering, When I opened IADS, the display was not added to the Activex Controls options. What am i Doing wrong? I guess I am making some mistake in placement of the file.

regards,
Balaji

On Tuesday, 18 July 2017 12:33:57 UTC-5, Dale wrote:

Balaji Kartikeyan

unread,
Jul 19, 2017, 10:50:58 AM7/19/17
to IADS

Balaji Kartikeyan

unread,
Jul 19, 2017, 12:33:21 PM7/19/17
to IADS
Hi Dale/Jim,

I found a fix for that dll-registered-but-not-showing-in-IADS problem. I used the RegAsm.exe in the framework64 folder of Microsoft.NET and then the display showed up in IADS. But now I have another issue. The display, when dropped into a new AW, just shows up as a square with no data inside it, it has the handles to expand it but they cannot be used. If we click outside in the AW then we will not even know that its there. I am kinda clueless about what might be the issue. Do u think it is because I used windows forms instead of user control? Is it because I have no timer set inside to initiate the file ? 

The project used is the same as the last update I provided. 

This work has been a great learning experience and I hope we can see it become successful, together.


regards,
Balaji

On Tuesday, 18 July 2017 12:33:57 UTC-5, Dale wrote:

Kathy Rodittis

unread,
Jul 19, 2017, 2:10:34 PM7/19/17
to ia...@googlegroups.com
Balaji-
If you don't use the /codebase switch on regain then you have to use gacutil on your assembly and
It has to have a "strong name".
So try that switch.
Kathy
_____
___________________________________
From: ia...@googlegroups.com [ia...@googlegroups.com] on behalf of Balaji Kartikeyan [chat.wi...@gmail.com]
Sent: Wednesday, July 19, 2017 9:33 AM
To: IADS
Subject: Re: [IADS] Displaying data in IADs

The IadsAutomationLib is a fairly large library with access function to the Iads application. You’ll end up using those functions to accept parameters into your display… or to be driven by Iads per each update and create your own parameters given a DataGroup. There is an example of using the interface in the tutorial Creating an ActiveX display with Every Sample in C#<http://iads.symvionics.com/downloads/SampleEveryDataPointDisplayCSharpDotNet.zip>. We’ll go into that in more detail when you start this leg of the project.
To view this discussion on the web visit https://groups.google.com/d/msgid/iads/a52a5590-e82e-48f7-ac3c-54f7b7524414%40googlegroups.com<https://groups.google.com/d/msgid/iads/a52a5590-e82e-48f7-ac3c-54f7b7524414%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "IADS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to iads+uns...@googlegroups.com.
To post to this group, send email to ia...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/iads/44792d81-9ac1-42b6-9c8c-adec53527371%40googlegroups.com<https://groups.google.com/d/msgid/iads/44792d81-9ac1-42b6-9c8c-adec53527371%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "IADS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to iads+uns...@googlegroups.com.
To post to this group, send email to ia...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/iads/e980dfae-7b86-4223-b02b-3fff31719376%40googlegroups.com<https://groups.google.com/d/msgid/iads/e980dfae-7b86-4223-b02b-3fff31719376%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "IADS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to iads+uns...@googlegroups.com.
To post to this group, send email to ia...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/iads/79d2161a-cd01-4cde-a662-30fb744deb1c%40googlegroups.com<https://groups.google.com/d/msgid/iads/79d2161a-cd01-4cde-a662-30fb744deb1c%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "IADS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to iads+uns...@googlegroups.com<mailto:iads+uns...@googlegroups.com>.
To post to this group, send email to ia...@googlegroups.com<mailto:ia...@googlegroups.com>.
To view this discussion on the web visit https://groups.google.com/d/msgid/iads/04ba440b-9ccd-4c25-82fe-6b576ea97fd3%40googlegroups.com<https://groups.google.com/d/msgid/iads/04ba440b-9ccd-4c25-82fe-6b576ea97fd3%40googlegroups.com?utm_medium=email&utm_source=footer>.

Balaji Kartikeyan

unread,
Jul 19, 2017, 2:31:38 PM7/19/17
to IADS
Hi Kathy,
I did try that switch. The results are the same. I am able to register and the display object shows up in Activex Controls but when I drag and drop it, even though there is an object that comes up it shows nothing as opposed to it showing a windows form with data from a csv file.

Dale

unread,
Jul 19, 2017, 3:37:18 PM7/19/17
to IADS
Balaji,

I think the problem in your code is that your Form1 class (in Form1.cs) is extending "Form" when it needs to instead be extending "UserControl". Try updating that class declaration on line 22 of Form1.cs to:

public partial class Form1 : UserControl

And see if that solves your problem. Also, I noticed that you are setting the size of your DataGridView to 1075x400 (in your Form_Load function). IADS controls default to 200x200 when initially dropped onto an Analysis Window, so this is likely to be too large of an initial size. You may want to adjust this to 200x200 for now, to ensure that it fits inside the IADS object's client area properly (you can resize later on if need be).

Give that a shot and see if it helps you make some more progress.

Dale

Balaji Kartikeyan

unread,
Jul 20, 2017, 9:36:38 AM7/20/17
to IADS
Hi Dale,
1. I did attempt to change the "form" to "Usercontrol" but VS is showing me some errors. I guess it maybe because I initiated the project from windows form rather than a User control class. I will try to redo the whole project as a usercontrol.
2. I have resized the datagridview size to 200,200.
3. I also wanted to ask you how to gain access to IADSAUTOMATIONLIB in my project. The reason I am asking is because I am developing all these usercontrols in a computer that does not have IADS. Do i have to add any files incase if I want to develop activex controls that involves some IADS objects?


regards,
Balaji

Dale

unread,
Jul 20, 2017, 3:52:14 PM7/20/17
to IADS
Hi Balaji,

The IADS Automation Library will only be available on a machine that has IADS installed. If you can get IADS installed on your development machine, you can include the library as a reference in your project that will give you access to the Automation Interface API. I'm not sure what version of Visual Studio you're using, but in 2015 you can add it by doing the following:
  1. RIght-click your project in the Solution Explorer and select Add->Reference...
  2. Click on the "COM" tier on the left
  3. Look for "IADS ClientWorkstation Object Library" in the list, select it, and press 'OK'.
"IadsAutomationLib" should now be visible in the list of references in your Solution Explorer. If you double-click on it the Object Browser should show you all of the objects/functions available to you.

Dale

Balaji Kartikeyan

unread,
Jul 20, 2017, 5:25:35 PM7/20/17
to IADS
HI Dale,
Thank you for that input. I will ask our people to install VS in the IADS machines. Incase if thats not possible, is it possible to add that library in a standalone machine by transferring a file (like some dll or somehing)?
Also, A very good news, I was able to successfully run my display in IADS. It reads a csv File and populates a datagrid. 
My next step will be to take in a trigger parameter from IADS and then populate this datagrid one second after the event.


The further action will be to import a datagroup, perform a bunch of calculations and then populate the screen with those updated results. 

I hope I can look forward to working with you more on this.

regards,
Balaji

Dale

unread,
Jul 20, 2017, 5:48:54 PM7/20/17
to IADS
Nice! Glad you've been able to make progress.

Unfortunately no, the Iads Automation Library is only available once IADS is installed. It can't be transferred to a computer without a valid IADS installation present.

Good luck moving forward, sounds like you're on the right track!

Dale

Balaji Kartikeyan

unread,
Jul 24, 2017, 2:39:52 PM7/24/17
to IADS
Hi Dale,
Now that I am able to see the diaplay in IADS and its successfully reading the file, I want to attach it to a parameter and look for a trigger by monitoring it continuously. I tried to comprehend the Every data point in C# but I am not able to make the meaning out of it. Can you help me in understanding the process? 

Dale

unread,
Jul 24, 2017, 4:13:27 PM7/24/17
to IADS
Hi Balaji,

Yeah, the documentation on that project is a little sparse. I'll try to explain what's going on. 

What you need to do is implement the following two interfaces in your class:

IadsAutomationLib.IAcceptIadsParameter
IadsAutomationLib.ISynchronizeOutput

You can see the SampleAxControlCSharpDotNet project is doing this on line 20 of EveryDataPointCSharp.cs.

The IAcceptIadsParameter interface allows a user to attach a parameter to the display. The ISynchronizeOutput interface defines the functions that will get called as each data point is processed and will allow you to read values in real time. You can see what functions each interface expects to be defined by doing a "Go To Definition" on them.

If you look at the code in EveryDataPointCSharp.cs, you'll see two #region directives defined - one for each of these interfaces. Inside each #region you'll find the implementation of the necessary functions for each interface. There are some comments in each function that should give you an idea of what's going on. It sounds like for what you want to do you'll only be monitoring a single parameter, so your implementation of these functions can probably follow what's in the project (it's set up to allow a single parameter to be attached). In fact, you may want to just start by copy/pasting those method implementations into your own project as a starting point (you'll need to also copy any member variables defined into your own class, such as mParameter and mThisDisplayIsInRealTime). You can probably omit the StreamWriter code (the mTr variable) for now, unless you want to write all of the attached parameter's values out to an external file.

Once you get the project rebuilt and re-registered with those interfaces implemented, re-drop your display onto your analysis window. You should now be able to drop a parameter onto your display by simply dragging/dropping a parameter from the IADS "ParameterTool" window. When you drop the parameter, you'll be presented with a popup menu that will have your attach point as an option (if you copy the project code, it will be called "AttachPoint1" - ultimately you can call it whatever you like). If you select that option from the popup menu, it will trigger several of the functions in the IAcceptIadsParameter interface in your code (you can place breakpoints here to confirm) and then as data is processed through the analysis window your PrepareOutput() function will be called repeatedly. It's inside PrepareOutput() that you'll eventually need to monitor the parameter for whatever trigger you want.

That's the basic idea behind the project. I'd suggest as a first step just getting the interfaces added and the functions implemented, and confirm that you can attach a parameter to the display. Once that's working, try to modify PrepareOutput() to do what you need with the parameter trigger.

Hope that helps!

Dale


On Monday, July 24, 2017 at 11:39:52 AM UTC-7, Balaji Kartikeyan wrote:
Hi Dale,

Balaji Kartikeyan

unread,
Jul 24, 2017, 4:21:54 PM7/24/17
to IADS
Thanks dale, That helps. I will look at the code again and try to implement it in my project. And will keep u updated on that. aslo, I have anther question, can we monitor a group of variables? or a data group?
I dont want to get into them right now but eventually I may have to.

regards,
Balaji

Dale

unread,
Jul 24, 2017, 4:43:32 PM7/24/17
to IADS
There's no inherent limit on the number of individual parameters you could attach through the IAcceptIadsParameter interface (that's where the AttachPointCount() function comes into play), so you should be able to monitor multiple parameters using this technique. It would require tweaking of some of the IAcceptIadsParameter functions, but should still be possible.

Dale
Message has been deleted
Message has been deleted

Balaji Kartikeyan

unread,
Jul 25, 2017, 11:27:59 AM7/25/17
to IADS
Hi Dale,
I ran into another trouble here. We wanted  to add a few more parameters to our output list and they were of ASCII type. When I used the extract data vb script from program examples, its reading those values as zero but they are to be name of airport and the runway. I am guessing it has to do with data type but not sure how to fix it. Can you help me out here , please.
I have attached the VB script, the ascii variables are the first two ones, airport and runway names.




regards,
Balaji
Extract - Copy.txt

Dale

unread,
Jul 25, 2017, 1:50:14 PM7/25/17
to IADS
Yep, you're correct - the Values() function doesn't support ASCII type parameters. For ASCII parameters you'll need to make use of the Values2() function. This works slightly differently than Values(), in that instead of returning the value directly you need to pass in an object reference as a parameter to store the values. 

Here's an example:

Dim strVal
Param.Values2 1, 0, strVal 

In this code, the 1 represents the number of points you're asking for, the 0 represents the time progression (0 = no change, 1 = advance parameter time forward, 2 = retract parameter time backward), and strVal is where the data values are stored. After calling this, strVal(0) should contain your ASCII value. 

Values2() works for non-ASCII parameters as well (ints, floats, doubles, etc.) so you should be able to replace your current code that calls Param.Values with this new code that calls Param.Values2. You'll just need to make sure not to call Round() on a string type, as that'd cause a type mismatch.

Dale

Balaji Kartikeyan

unread,
Jul 25, 2017, 3:03:49 PM7/25/17
to IADS
Hi Dale,
That worked like a charm! Just out of curiosity how can I know about all the functions that can be used in VBScript? Is there like a list or something that I can look into?
My aim here is to expand the capabilities of IADS here at Bombardier.

regards,
Balaji

Dale

unread,
Jul 25, 2017, 4:11:18 PM7/25/17
to IADS
That's great! Glad you got it working.

Unfortunately we don't have a document yet that details all of the classes/functions that are in the Automation Library. Your best bet would be to use your IDE's built in object/class viewer and just explore from there. For example - if you've added a reference to the Automation Library in your "WindowsFormsApp1" project in VS 2015, you can view all of the available classes/functions by double-clicking "IadsAutomationLib" in the "References" tier of your Solution Explorer. Alternatively, you could use Visual Studio's Intellisense to find out what functions are available as well. Example - somewhere in your C# code type "IadsAutomationLib.IParameter" (this is the parameter object that you're working with in VB) and "Go To Definition" on it. This should show you all of the functions in the IParameter class, and these would be the same whether you're calling them from a C# project or a VBScript (you'll see the various Values-related functions toward the bottom).

I'm not sure what editor you're using for VBScript (if it's something other than VS 2015) but many VB editors these days allow you to add references and browse them in a similar manner.

Dale

Balaji Kartikeyan

unread,
Jul 25, 2017, 4:25:34 PM7/25/17
to IADS
I am using notepad to edit my VBscripts, since I started building VBScripts before developing displays, But as u mentioned before we have to have IADS installed in the same computer as VS in order to gain access to IADSAutomationlib, which I have not but I am trying to get it installed. I am using VS 2010 express.
I will keep u posted on how my display s coming up and wil ask more questions, if I have any. 

Balaji Kartikeyan

unread,
Jul 27, 2017, 3:01:43 PM7/27/17
to IADS
HI Dale,
I ran into a small problem. I was trying to export a parameter from IADS using the script provided in example programs. It has been working fine with everything but for a few params which show a value in IADS display and when I export them they have completely different value. 
like for example a param1 is latched at 2.07 ft/sec but when i export it its showing 668.7.I am not able to debug this. But if  I replace the latched param with a constant value, its exporting fine.


regards,
Balaji

On Tuesday, 25 July 2017 15:11:18 UTC-5, Dale wrote:

Dale

unread,
Jul 27, 2017, 3:44:04 PM7/27/17
to IADS
Hi Balaji,

A few questions:
  1. Do the parameters that export the incorrect values have anything in common? What type of parameters are they (data type, TPP vs. Derived, periodic vs. aperiodic, etc.)?
  2. Do any of these parameters have a filter applied (you can check this in the ParameterDefaults table, look in the "FilterActive" column and see if it is set to "True"). Also, is there a filter applied on the display that you are viewing them on? For example, StripCharts can have a filter applied through their property sheets (look for the "FilterAlgorithm" property).
  3. Are you sure the time that you're exporting the value at matches the time you're viewing the parameter at on the AnalysisWindow? I'm guessing you double-checked this but can't hurt to ask.
Since you say that this only happens to certain parameters, my guess is that it's the filter settings for these parameters. I believe by default that sample export code will apply whatever filter (if any) that is defined in the ParameterDefaults table when it exports data for the parameter, but it won't apply any filters that are defined in individual displays. So for example, if you have a parameter with no filter applied in the PD table, but you're viewing it on a StripChart that is applying a filter, your exported values will differ from what you see on the StripChart because the exported values won't have that StripChart filter applied.

That's my best guess at the moment. Check those options and see if that's the culprit.

Dale

Balaji Kartikeyan

unread,
Jul 28, 2017, 12:46:41 PM7/28/17
to IADS
HI Dale,

1. Well all of them are derived parameters and they change value at a particular condition and then if those conditions are not emt then they tend to call upon themselves.Example param1 =  If(condition)?look for param2 value:Param1. Do you think the extract feature cannot get those kind of value?(Maybe its an absurd question yet I wanted to ask anyway)
2. None have any filter applied on screen, I dropped them onto a stripchart to continuously monitor their values, When the value shows 1.9 in stripchart, the extracted values vary from 668.6 - -2.9 or more
3.  I was aware that I must be tapping those values at the same time as the event occurs but since the values are latched should it matter when I pull the data? For example there a param1 whose value in stripchart at the time of event1 was 1.9 and it stayed there for almost a minute before resetting and I extracted the data at exactly when it turned 1.9 and it showed 55 in csv file. I checked for data jumps before and after the time of interest and I saw no anomaly. I am just wondering whether we are extracting it correctly or does the name of parameters matters (Some of ours have naming system like parameter1, parameter2 etc).
I have done hard work to come up with this display and I am stuck in extracting last 5 parameters. Hopefully we can resolve this together.

regards,
Balaji

Dale

unread,
Jul 28, 2017, 1:17:08 PM7/28/17
to IADS
Hmm, nothing you've mentioned here seems like it should be a problem. Would it be possible for you to pass along the config file that you're using so I can try to debug it on my end? If you'd rather not post it to the Google Group here you can email it to our support address: iadssupport (at) symvionics (dot) com. Alternatively if the config file itself is too large, could you export an AnalysisWindow with one of these parameters attached to a StripChart and send that over?

Dale

Dale

unread,
Jul 31, 2017, 1:09:18 PM7/31/17
to IADS
Balaji,

One other thing that might be the issue with these particular parameters: you say that they tend to "call upon themselves", which means they are history-dependent. In other words, they are using their own previous values to calculate new values, true? If that's the case, the problem might be that when one of these parameters is created in a script using the Automation Interface, a brand new instance of that parameter is created in the script with no history. So if it's a derived parameter that relies on it's own historical values it may not match the values you're seeing in your displays. You may want to try running these particular parameters as IAP parameters - doing this will create a data file for each one with a reliable history that will always match regardless of where the parameter is created. See the "Creating an IAP Derived Parameter" section of the Help System for details.

Dale

Balaji Kartikeyan

unread,
Jul 31, 2017, 3:27:22 PM7/31/17
to IADS
Hi Dale,
I will forward the config/AW file via email. I had to make sure that its ok according to company policy. 

Just a quick observations I made about the parameters.
I was able to extract data for 1/5 parameters that I have problem with. The key here was to know the exact timing.
Out the other 4 parameters,
All of them , in some or another, hold on to their previous value if the condition to update is not met.
2 of them has  running Max function which only stops when the  trigger condition is met (rather not met) 
The other two just reads a value off of a derived parameter which , as per my guess, tends to hold on to its value from previous step.


With regards,
Balaji

Dale

unread,
Jul 31, 2017, 7:59:37 PM7/31/17
to IADS
Yeah, try converting those 4 parameters to IAP and see if that fixes the problem. You'll have to set their DataSourceType values to IAP in the ParameterDefaults table, and then re-run the Playback Client with the following command-line arguments:

/local /iapderived

This will launch the IADS Derived Parameter Server, which will create an IADS data file for every IAP parameter in your PD table (they should be visible in the "Data" directory that is co-located with your config file). Re-run the Playback Client again WITHOUT those command-line arguments (which will launch the normal client application) and try the export again.

That's the short version, you can find more details on IAP parameters in the Help system under the topics "Creating an IAP Derived Parameter" and "Processing IAP Derived Parameters in Post Test".

Dale
Message has been deleted

Balaji Kartikeyan

unread,
Aug 1, 2017, 11:31:33 AM8/1/17
to IADS
Hello Dale,
I will definitely try the IAP route
I have a few quick questions:
1. Can IAP run in real time or is it a post processing tool? My display will be utilized during testing.

2. Will export function throw the same error if we use a dummy variable to store the value of one of the parameters with GetValueAtFunction?

Balaji
Message has been deleted

Dale

unread,
Aug 1, 2017, 1:45:11 PM8/1/17
to IADS
Hi Balaji,

1) Yes, IAP derived parameters can be run in both real-time and post-test. In fact, it's actually a little simpler if you're in real-time. You would simply create the IAP parameter through the Playback Client, restart your data source, and the server will automatically create any IAP parameter data files when it comes back up. No need for any command line switches in the real-time scenario.
2) Do you mean using the GetValueAtTime() function in your parameter's derived equation? You could try it, but I don't think this will change anything - ultimately the history of the parameter created in the export script will still differ from the parameter that has been run in the Playback Client, which sounds like the root of the problem here.

Dale

Balaji Kartikeyan

unread,
Aug 1, 2017, 5:11:25 PM8/1/17
to IADS
Hi Dale,
I figured out an unusual fix for the problem (it's a band-aid fix). I noticed that parameters under consideration were also monitored via a text box in the analysis window so, instead of reading the parameter I read in the value of the text box and it worked! 
This method is an easy fix but without it I was able to learn a lot more. 
 
I am also trying to go down the IAP route and see whether that one works.

regards,
Balaji
Message has been deleted

Balaji Kartikeyan

unread,
Aug 2, 2017, 5:13:03 PM8/2/17
to IADS
Hi Dale,
I tried to run the new display but faced the following issue:
Before I get into the issue I wanted to let you know that in our test environment we have 2 AW open and one running in the background. Now, one of the active AW has my display in it, say AW 2. One of the parameters that is being considered to export the data is param1, which is utilized to mark the landing event across all the windows, including the minimized one.
So the situation I have is that when I have the AW 1 open then my action objects, which triggers the data export in AW 2 and the minimized window with the param1,does not export data. But, if I close the AW 1 it works fine. I am wondering what might cause this issue? 
I have to also mention that with both AW 1 and AW 2 running the display updates drops to 29-30 frames/sec. 

Do you think its because of dropped packets? Or Is there any other underlying issue?
Other action objects are working fine. It's just this one. Also a point to notice is that this trigger param changes value for just , literally, a time-step. 

I think I have Incase if I am not clear here, please let me know I will try to elaborate.


regards,
Balaji

Dale

unread,
Aug 2, 2017, 5:52:54 PM8/2/17
to IADS
Hi Balaji,

I'll need a little more information to answer your questions - I'll email you shortly.

Dale
Message has been deleted

Balaji Kartikeyan

unread,
Aug 3, 2017, 10:27:28 AM8/3/17
to IADS
HI Dale,
I have forwarded the details to you from my official e-mail address. Please let me know if you have not received it, I will send it again.

Balaji

Balaji Kartikeyan

unread,
Aug 8, 2017, 5:28:18 PM8/8/17
to IADS
As a general update to the group.
The display I programmed with your help is now working great. It was a great learning opportunity and I am looking forward to further learning and expanding the use of IADS in flight testing environment. 
Reply all
Reply to author
Forward
0 new messages