读取具有时间间隔/持续时间的.TDMS文件

时间:2016-03-30 15:23:22

标签: c#

我正在尝试开发一个应用程序来读取.tdms(National Instruments)文件,我正在使用" TDMSReader"包link to the package + use。除了那些使用设置持续时间或时间间隔的文件外,这种方法很好。

在.tdms示例文件I'm providing中,可以注意到该文件由五个通道组成,每个通道包含174080个项目。 (可以使用此excel add-in

查看文件的内容

但是,我提到的C#包并没有考虑到这一点,它只能读取等于" wf_samples"字段(10240),丢弃其余字段。有没有人找到解决方法如何阅读"长度"通道的属性并提取其余的数组值?

将.tdms文件转换为.csv

的代码示例
                //file.Fullname = full path to the .tdms file
                using (var output = new StreamWriter(File.Create(file.FullName + ".csv")))
                using (var tdms = new NationalInstruments.Tdms.File(file.FullName))
                {
                    tdms.Open();
                    List<object[]> All_Values = new List<object[]>();

                    //Headers
                    string channels = "";
                    foreach (var group in tdms)
                    {
                        foreach (var channel in group)
                        {
                            channels = channels + channel.Name + ";";
                            All_Values.Add(channel.GetData<object>().ToArray());
                        }
                    }
                    output.WriteLine(channels);

                    //Values
                    long cnt = tdms.First().Channels.First().Value.DataCount;
                    for (int i = 0; i < cnt; i++)
                    {
                        string values = "";
                        foreach (object[] columnValues in All_Values)
                        {
                            values = values + columnValues[i] + ";";
                        }
                        output.WriteLine(values);
                    }
                }

欢迎提供使用C#读取.tdms文件的任何其他替代方法。

编辑:TDMS示例文件:

NO Interval sample 这个工作正常

Interval Sample 这个丢弃了大多数数组值

1 个答案:

答案 0 :(得分:2)

我已为https://github.com/mikeobrien/TDMSReader提交了修复公关。迈克在https://www.nuget.org/packages/TDMSReader/上发布了新版本。