2016-03-30 27 views
1

私は "TDMSReader"パッケージlink to the package + useを使用している.tdms(National Instruments)ファイルを読み込むアプリケーションを開発しようとしています。設定された期間または時間間隔を使用するファイルを除いて、これは正常に動作します。時間間隔/期間を持つ.TDMSファイルを読む

.tdmsのサンプルファイルI'm providingでは、ファイルが5つのチャネルで構成され、それぞれ174080個のアイテムが格納されています。 (ファイルの内容は、このexcel add-inで見ることができます)しかし

、私が言及したC#のパッケージには、これを考慮に入れていない、それだけで「wf_samples」フィールドに等しいアイテムの量を読むことができます(10240 )、残りを捨てる。誰かがチャネルの "長さ"プロパティを読み取って残りの配列値を抽出する方法についての解決策を見つけましたか?私のコードの

例は、.tdmsファイルが

   //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読むための方法を提供する任意の他の代替.csvに変換します。

EDIT:TDMSサンプルファイル:

NO Interval sample この1つは罰金

Interval Sample に動作しますこの1つは、ほとんどのアレイのを破棄し、私はhttps://github.com/mikeobrien/TDMSReaderへの修正のためのPRを提出した

+0

tdmsサンプルファイル – labilbe

+0

私は2番目のリンクで行いましたが、ここで再び貼り付けています:http://speedy.sh/GAdKM/tdms-file-example.zip – Innat3

答えて

関連する問題