MAT-File (Level 5 or 4) Import/ Converter to IADSdata - IAP Processing in Post Flight Server

129 views
Skip to first unread message

Ruben

unread,
Mar 2, 2015, 7:44:13 AM3/2/15
to ia...@googlegroups.com
Dear Madams and Sirs,
 
I have got 2 questions concerning data input into IADS
 
- is there a tool to convert multiple MATLAB files (time and 1 Parameter per file) to IADSdata files?
 
- is there a possibility to run the IAP Server (let the IAP Server create new IADSdata files) out of an existing Project consisting of various IADSdata files and a pfConfig?
(E.g. let Post Sever run through a Folder with A.IADSdata, B.IADSdata, C.IADSdata ... and let him create all the IAP Parameters like (A+B=IAP1.IADSdata) (C+D=IAP2.IADSdata...) )
 
Many thanks for the reply in advance and with best regards,
 
 
 
Ruben Fuchs

Adam Chant

unread,
Mar 2, 2015, 10:39:46 AM3/2/15
to ia...@googlegroups.com

Ruben,

The Data File interface API is available on our website at http://iads.symvionics.com/programs.html. With that API you will be able to write a program to generate iadsdata files. While I haven’t tried it, I would assume that you can call our API dll (COM object) within Matlab to produce the files.

 

Processing IAP Derived Parameters in Post Test

Generates .iadsData files for all IAP derived parameters in the configuration file; not applicable to Order Arrival (OA) IAP parameters that contain the SetTriggerParameter() function.

 

When the program starts, you will see the IAP processor window appear. It will compute all the IAP equations (without SetTriggerParam) and create data files for each parameter. After the process is complete, you can run the IADS Playback Client and examine the data (and modify the equations if the data looks incorrect). You will have to re-run the shortcut each time you change the equations to recalculate.

 

Command Line Entry

 

/iapDerived /local

 

To write out data files for IAP parameters:

1.      Create a shortcut from the “IADS Playback Client” icon (not the Post Test Data Server icon).

2.      Rename the shortcut to “Recompute IAP Equations”.

3.      Right-click on the shortcut > Properties.

4.      At the end of the Target line add “/iapDerived /local” ( "C:\Program Files\IADS\ClientWorkstation\Iads.exe" /iapDerived /local ).

5.      Click on the “Recompute IAP Equations” icon to start the program. Note: The program will overwrite all your existing (non SetTriggerParam) IAP parameter data files within the directory.

6.      Select the config file that defines the IAP parameters to be computed. Again, the data files within the directory will be overwritten during the computation.

 

 

Good luck,

 

Adam Chant
Symvionics, Inc.
IADS Application Engineer
(661) 273-7003 x 210

--
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/883e5210-bf1c-4834-b9ec-66d26ee8a903%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Ruben

unread,
Mar 2, 2015, 11:04:34 AM3/2/15
to ia...@googlegroups.com, ach...@symvionics.com
Thanks, Adam, for the detailed answer.
As I don't work with IADS on a daily basis, it is a great help to me.
I will try it as soon as possible.
 
Best regards, Ruben

Stephen Jones

unread,
Mar 24, 2026, 11:31:09 AM (11 days ago) Mar 24
to IADS
Has anyone been able to confirm that the API can be called within MATLAB to generate .iadsData files or if this feature been added to any of the Matlab Extensions that are included with IADS (similar to iadsread/iadswrite)?

Thank you,
Stephen

Chant, Adam

unread,
Mar 24, 2026, 2:07:31 PM (11 days ago) Mar 24
to ia...@googlegroups.com

Stephen,
The existing IADS MatLab interfaces do not have a method to directly make IADS files.

The Data File interface API is available on our website at https://defense-solutions.curtisswright.com/system/files/2023-10/IadsDataFileInterface.zip. With that API you will be able to write a MatLab script to generate iadsdata files. It would be my recommendation to look at the VBS example in the .zip as it uses the automation interface similar to how MatLab would.

 

IadsFile = actxserver(‘IadsDataFileInterface.DataFile’);

StartTime = actxserver(‘IadsTime.IadsTime’);

 

Then type in the following to see their exposed interfaces.

methodview(IadsFile)

methodView(IadsTime)

 

I’ll follow up with a sample MatLab 2025b sample script that is similar to the VBS example.

 

Thank you,

Adam Chant

Project Engineer

 

IADS - Palmdale, Defense Solutions Division

Curtiss-Wright

190 Sierra Court Suite A3, Palmdale, CA 93550 United States

T: 661.273.7003 x2210

ach...@curtisswright.com | www.curtisswright.com

From: ia...@googlegroups.com <ia...@googlegroups.com> On Behalf Of Stephen Jones
Sent: Tuesday, March 24, 2026 8:12 AM
To: IADS <ia...@googlegroups.com>
Subject: Re: [IADS] MAT-File (Level 5 or 4) Import/ Converter to IADSdata - IAP Processing in Post Flight Server [EXTERNAL]

 

WARNING: This message came from an external source. Please exercise caution and proper judgment when opening any attachments, clicking links or responding to this message.


 

--

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.


This e-mail and any files transmitted with it are proprietary and intended solely for the use of the individual or entity to whom they are addressed. If you have reason to believe that you have received this e-mail in error, please notify the sender and destroy this e-mail and any attached files. Please note that any views or opinions presented in this e-mail are solely those of the author and do not necessarily represent those of the Curtiss-Wright Corporation or any of its subsidiaries. Documents attached hereto may contain technology subject to government export regulations. Recipient is solely responsible for ensuring that any re-export, transfer or disclosure of this information is in accordance with applicable government export regulations. The recipient should check this e-mail and any attachments for the presence of viruses. Curtiss-Wright Corporation and its subsidiaries accept no liability for any damage caused by any virus transmitted by this e-mail.

For information about how we process personal data and monitor communications, please visit https://www.curtisswright.com/privacy-notice/default.aspx

Adam Chant

unread,
Mar 24, 2026, 3:25:48 PM (11 days ago) Mar 24
to IADS
Here is a sample function to write and read parameters in MatLab 2025b: Locates files in local user TEMP Folder and I'm not 100% sure the 

function DataTesterMatlab
clc;
IadsFile = actxserver('IadsDataFileInterface.DataFile');
StartTime = actxserver('IadsTime.IadsTime');
cleanupObj = onCleanup(@()cleanupCom(IadsFile, StartTime)); %#ok<NASGU>
disp('Created COM objects successfully.');
nPts = 100;
nTime = 105;
outDir = fullfile(tempdir, 'IadsDataFileTest');
if ~isfolder(outDir)
mkdir(outDir);
end
disp(['Using output folder: ', outDir]);
floatParamName = 'ParmFloat';
longParamName = 'Parm64bit';
% Float path: use SINGLE, not double
sampleF32 = single(0:nPts-1);
% 64-bit path
sampleI32Hi = int32(zeros(1, nPts));
sampleI32Lo = int32(0:nPts-1);
% Build time array
timeArray = cell(1, nTime);
disp('Creating time objects...');
for k = 1:nTime
t = actxserver('IadsTime.IadsTime');
invoke(t, 'PutTime', 86400, 0);
timeArray{k} = t;
end
disp('Time object array created.');
%% Write float parameter
disp('--- Write: AppendData (float) ---');
safeClose(IadsFile);
try
invoke(IadsFile, 'Create', outDir, floatParamName);
disp('Create succeeded');
% Vendor sample uses IadsFloat32Type + IadsAsyncType and passes VT_R4 data
% In MATLAB the closest match is a SINGLE array. :contentReference[oaicite:2]{index=2}
IadsFile.SampleRate = 50.0;
IadsFile.DataType = 0;
IadsFile.DataFormat = 2;
disp('Float properties set');
invoke(StartTime, 'PutTime', 86400, 0);
IadsFile.StartTimeVB = StartTime;
disp('StartTime assigned');
invoke(IadsFile, 'WriteHeader');
disp('WriteHeader succeeded');
[~, actualPtsOutFloat, ~] = invoke( ...
IadsFile, ...
'AppendData', ...
int32(nPts), ...
sampleF32, ...
int32(0), ...
timeArray);
disp('AppendData succeeded');
disp('actualPtsOutFloat =');
disp(actualPtsOutFloat);
catch ME
warning('DataTester:AppendDataFloat', '%s', ME.message);
end
safeClose(IadsFile);
%% Read float parameter back
disp('--- Read: ReadData (float) ---');
safeClose(IadsFile);
try
invoke(IadsFile, 'OpenExisting', outDir, floatParamName);
disp('OpenExisting succeeded');
invoke(StartTime, 'PutTime', -1, 0);
disp('StartTime assigned');
% ReadData in the C++ sample returns data, actual points, and IRIG time
% through output VARIANTs. :contentReference[oaicite:3]{index=3}
[dataReadFloat, actualPtsReadFloat, ~] = invoke( ...
IadsFile, ...
'ReadData', ...
StartTime, ...
int32(nPts), ...
[], ...
int32(0), ...
timeArray);
disp('ReadData succeeded');
disp('actualPtsReadFloat =');
disp(actualPtsReadFloat);
if isnumeric(dataReadFloat) || islogical(dataReadFloat)
disp('First 10 float samples read back:');
disp(dataReadFloat(1:min(10, numel(dataReadFloat))));
else
disp('ReadData returned non-numeric payload:');
disp(class(dataReadFloat));
end
catch ME
warning('DataTester:ReadDataFloat', '%s', ME.message);
end
safeClose(IadsFile);
%% Write 64-bit parameter
disp('--- Write: AppendData64 ---');
safeClose(IadsFile);
try
invoke(IadsFile, 'Create', outDir, longParamName);
disp('Create succeeded');
IadsFile.SampleRate = 50.0;
IadsFile.DataType = 0;
IadsFile.DataFormat = 3;
disp('Long properties set');
invoke(StartTime, 'PutTime', 86400, 0);
IadsFile.StartTimeVB = StartTime;
disp('StartTime assigned');
invoke(IadsFile, 'WriteHeader');
disp('WriteHeader succeeded');
[~, ~, actualPtsOutLong, ~] = invoke( ...
IadsFile, ...
'AppendData64', ...
int32(nPts), ...
sampleI32Hi, ...
sampleI32Lo, ...
int32(0), ...
timeArray);
disp('AppendData64 succeeded');
disp('actualPtsOutLong =');
disp(actualPtsOutLong);
catch ME
warning('DataTester:AppendData64', '%s', ME.message);
end
safeClose(IadsFile);
%% Read 64-bit parameter back
disp('--- Read: ReadData64 ---');
safeClose(IadsFile);
try
invoke(IadsFile, 'OpenExisting', outDir, longParamName);
disp('OpenExisting succeeded');
invoke(StartTime, 'PutTime', -1, 0);
disp('StartTime assigned');
[dataReadHi, dataReadLo, actualPtsReadLong, ~] = invoke( ...
IadsFile, ...
'ReadData64', ...
StartTime, ...
int32(nPts), ...
[], ...
[], ...
int32(0), ...
timeArray);
disp('ReadData64 succeeded');
disp('actualPtsReadLong =');
disp(actualPtsReadLong);
disp('First 10 high words read back:');
disp(dataReadHi(1:min(10, numel(dataReadHi))));
disp('First 10 low words read back:');
disp(dataReadLo(1:min(10, numel(dataReadLo))));
catch ME
warning('DataTester:ReadData64', '%s', ME.message);
end
safeClose(IadsFile);
%% Cleanup
for k = 1:numel(timeArray)
try
delete(timeArray{k});
catch
end
end
disp('Done.');
end
function safeClose(IadsFile)
try
invoke(IadsFile, 'Close');
catch
end
end
function cleanupCom(IadsFile, StartTime)
try
invoke(IadsFile, 'Close');
catch
end
try
delete(IadsFile);
catch
end
try
delete(StartTime);
catch
end
end

Here is a function to create a boilerplate config of those parameters: (lacks User, Desktop or AnalysisWindows)

function CreateBoilerplatePfConfig(outDir)
% CreateBoilerplatePfConfig.m
% Creates a simple IADS V5 config named "pfConfig" in outDir
% and adds:
% - ParmFloat
% - Parm64bit
%
% If outDir is omitted or empty, defaults to tempdir:
% C:\Users\<current_user>\AppData\Local\Temp\IadsDataFileTest\
if nargin < 1 || isempty(outDir)
outDir = fullfile(tempdir, 'IadsDataFileTest');
end
if ~isfolder(outDir)
mkdir(outDir);
end
cfgPath = fullfile(outDir, 'pfConfig');
% IADS enum values
IADS_FLOATING_POINT = 2;
IADS_LONG = 3;
IADS_TPP = 1;
cfg = actxserver('IadsConfigInterface.IadsConfig');
cleanupObj = onCleanup(@()localCleanup(cfg)); %#ok<NASGU>
disp(['Creating config: ', cfgPath]);
try
invoke(cfg, 'OpenMessageLog', fullfile(outDir, 'pfConfig_msglog.txt'), true);
catch
end
invoke(cfg, 'Create', cfgPath, true);
defs = get(cfg, 'ParameterDefaults');
% Keep returned parameter objects alive until after SaveTable()
% Do not delete() them before saving.
% -------------------------
% Add ParmFloat
% -------------------------
p1 = invoke(defs, 'Add', 'ParmFloat', IADS_FLOATING_POINT, 50.0);
try, set(p1, 'ParamGroup', 'Group'); catch, end
try, set(p1, 'ParamSubGroup', 'SubGroup'); catch, end
try, set(p1, 'ShortName', 'ParmFloat'); catch, end
try, set(p1, 'LongName', 'MATLAB Float Parameter'); catch, end
try, set(p1, 'Units', 'EU'); catch, end
try, set(p1, 'DataSourceType', IADS_TPP); catch, end
% Optional but useful if your installation accepts it
try, set(p1, 'DataSourceArguement', ''); catch, end
% -------------------------
% Add Parm64bit
% -------------------------
p2 = invoke(defs, 'Add', 'Parm64bit', IADS_LONG, 50.0);
try, set(p2, 'ParamGroup', 'Group'); catch, end
try, set(p2, 'ParamSubGroup', 'SubGroup'); catch, end
try, set(p2, 'ShortName', 'Parm64bit'); catch, end
try, set(p2, 'LongName', 'MATLAB 64-bit Parameter'); catch, end
try, set(p2, 'Units', 'Counts'); catch, end
try, set(p2, 'DataSourceType', IADS_TPP); catch, end
% Always save the ParameterDefaults table explicitly
invoke(defs, 'SaveTable');
% Save and close the config
invoke(cfg, 'Save');
invoke(cfg, 'Close', true);
disp('pfConfig created successfully.');
disp(['Saved at: ', cfgPath]);
% Release local references after save/close
clear p1 p2 defs
end
function localCleanup(cfg)
try
invoke(cfg, 'Close', true);
catch
end
try
delete(cfg);
catch
end
end

Chant, Adam

unread,
Mar 24, 2026, 3:35:02 PM (11 days ago) Mar 24
to ia...@googlegroups.com

Apologies, I’m not 100% sure the 64Bit parameter example is size formatted correctly. I also had some trouble getting MatLab to properly identify the Group and SubGroup, but it may be that I’m missing some preliminary table calls before

adding parameters to the Parameter Defaults table. One of our Developers may review the code and provide additional direction if necessary.

Thank you,

Adam Chant

Project Engineer

 

IADS - Palmdale, Defense Solutions Division

Curtiss-Wright

190 Sierra Court Suite A3, Palmdale, CA 93550 United States

T: 661.273.7003 x2210

ach...@curtisswright.com | www.curtisswright.com

From: 'Adam Chant' via IADS <ia...@googlegroups.com>
Sent: Tuesday, March 24, 2026 12:26 PM
To: IADS <ia...@googlegroups.com>
Subject: Re: [IADS] MAT-File (Level 5 or 4) Import/ Converter to IADSdata - IAP Processing in Post Flight Server [EXTERNAL]

 

WARNING: This message came from an external source. Please exercise caution and proper judgment when opening any attachments, clicking links or responding to this message.


 

Here is a sample function to write and read parameters in MatLab 2025b: Locates files in local user TEMP Folder and I'm not 100% sure the 

--

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.

Reply all
Reply to author
Forward
0 new messages