• 大小: 5KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: Matlab
  • 标签: MATLAB  TDMS  

资源简介

function BackData = ReadTDMSData(ChanNum,StartNum,NumToGet,filefolder,filepath) %参数依次为:通道号/开始数据号/结束数据号/文件路径/文件名 对NI官方给出的函数做了修改,直接返回数据值。需要放在ni官方文档中运行,需要改nilibddc.dll和nilibddc_m.h路径

资源截图

代码片段和文件信息

function BackData = ReadTDMSData(ChanNumStartNumNumToGetfilefolderfilepath)
%参数依次为:通道号/开始数据号/结束数据号/文件路径/文件名
%导入库和文件
%NilibddcLibInit(filefolderfilepath);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%调nilibddc库文件,读入数据文件%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Check if the paths to ‘nilibddc.dll‘ and ‘nilibddc_m.h‘ have been
%selected. If not prompt the user to browse to each of the files.

if exist(‘NI_TDM_DLL_Path‘‘var‘)==0
    %[dllfiledllfolder]=uigetfile(‘*dll‘‘Select nilibddc.dll‘);
    dllfile=‘nilibddc.dll‘;
    dllfolder=‘F:\MATLAB Program\Program\MATLAB_TDM_Example\dev\bin\64-bit‘;
    libname=strtok(dllfile‘.‘);
    NI_TDM_DLL_Path=fullfile(dllfolderdllfile);
end
if exist(‘NI_TDM_H_Path‘‘var‘)==0
    %[hfilehfolder]=uigetfile(‘*h‘‘Select nilibddc_m.h‘);
    hfile=‘nilibddc_m.h‘;
    hfolder =‘F:\MATLAB Program\Program\MATLAB_TDM_Example\dev\include\64-bit‘;
    NI_TDM_H_Path=fullfile(hfolderhfile);
end

%Prompt the user to browse to the path of the TDM or TDMS file to read
if isa(filepath‘numeric‘) && isa(filefolder‘numeric‘)
    if filepath == 0 && filefolder == 0
        [filepathfilefolder]=uigetfile({‘*.tdms‘;‘*.tdm‘}‘Select a TDM or TDMS file‘);
    end
end
Data_Path=fullfile(filefolderfilepath);

%Load nilibddc.dll (Always call ‘unloadlibrary(libname)‘ after finished using the library)
loadlibrary(NI_TDM_DLL_PathNI_TDM_H_Path);

%Open the file (Always call ‘DDC_CloseFile‘ when you are finished using a file)
fileIn = 0;
[errdummyVardummyVarfile]=calllib(libname‘DDC_OpenFileEx‘Data_Path‘‘1fileIn);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%获取组数,并对组赋句柄值%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Get channel groups
%Get the number of channel groups
numgrpsIn = 0;
[errnumgrps]=calllib(libname‘DDC_GetNumChannelGroups‘filenumgrpsIn);
%Get channel groups only if the number of channel groups is greater than zero
if numgrps>0
%Initialize an array to hold the desired number of groups
    pgrps=libpointer(‘int64Ptr‘zeros(1numgrps));
    [errgrps]=calllib(libname‘DDC_GetChannelGroups‘filepgrpsnumgrps);  %得到不同组的句柄值
end  
%%%%%%%%%这段为了获取numchans%%%%%%%%%%%
 numchansIn = 0;
[errnumchans]=calllib(libname‘DDC_GetNumChannels‘grps(1)numchansIn);
numgv = zeros(numgrpsnumchans);
fo

评论

共有 条评论