0

NI ADCでいくつかの作業を行っています。現在、AO と AI から電圧を読み込んでいますがList<dynamic>、console.writeLine に問題があります。

プログラムは、コンパイル時ではなく実行時に、データを格納する場所を決定する必要があるため、動的型を使用しています。

そのため、リストの内容を印刷したいときはいつでも、私が何を求めているのかわからないので、選択した要素データではなく、保存されているタイプを返します。

public void createTask(DataGrid grid, List<Object> data, float sampleRate, int sampleAmount, ComboBox channel, float minRange, float maxRange)
        {
            using (Task myTask = new Task())
            {
                myTask.AIChannels.CreateVoltageChannel(channel.Text, "",
                    (AITerminalConfiguration)(-1), minRange, maxRange, AIVoltageUnits.Volts); // create the task to measure volts

                myTask.Timing.ConfigureSampleClock("", sampleRate, SampleClockActiveEdge.Rising, // create the timing
                    SampleQuantityMode.ContinuousSamples, sampleAmount);

                AnalogMultiChannelReader reader = new AnalogMultiChannelReader(myTask.Stream);

                myTask.Control(TaskAction.Verify);

                data.Add(reader.ReadSingleSample());

                Console.WriteLine(data[0]);
            }
        }

次に、これが出力されSystem.Double[]ます。要素のタイプではなく、要素が実際に格納しているものを出力するにはどうすればよいですか? 求めているものを得るためにさまざまな方法を試しましたが、C# の構文 (私は C++ を使用しています) に苦労しています。3 週間しか使用していません。

私はもう試した;

  • 鋳造
  • ToString() 変換
  • <double>CopyToを使用して、リスト全体の内容をリストにコピーします。

私はここで少し途方に暮れています。

4

3 に答える 3

1

したがって、double の配列内のリストの最初の項目です。その配列の値を表示したい場合は、それらを手動で繰り返し処理するか、オブジェクトが配列の場合は次のコードを使用して配列項目を出力し、それ以外の場合は項目の値を出力します。

        if (data[0].GetType().IsArray)
        {
            Console.WriteLine(string.Join(",", ((Array)data[0]).Cast<object>()));
        }
        else
        {
            Console.WriteLine(data[0]);
        }
于 2014-06-26T14:33:02.330 に答える