Как использовать измерительную студию для интерфейса USB-порта

Могу ли я использовать Measurement studio C# в visual studio, чтобы взять цифровой сигнал с USB-порта (из системы сбора данных) и построить его, и как я могу это сделать? Я только попытался использовать это, чтобы построить сигнал шума, но я не мог использовать это, чтобы взять сигнал от порта.

         // Declare and initialize an instance of WhiteNoiseSignal.
        WhiteNoiseSignal whiteNoise = new WhiteNoiseSignal();
        // Store the generated data in a double array named data.
        double[] data = whiteNoise.Generate(1000.0, 256);
        // Use the PlotY method to plot the data.
        plot.PlotY(data);

это код, который я использую.

1 ответ

Лиза, В зависимости от того, какое устройство у тебя есть, нужно настроить цифровой или аналоговый входной канал. Затем вы создаете задачу для наблюдения за интересующими вас портами и ждете, пока она не перезвонит, когда получение завершится. Что-то вроде этого:

public void CreateAnalogInputTask()
{
try
{
    // create a new task
    myAITask = new Task();

    // create a new virtual channel
    myAITask.AIChannels.CreateVoltageChannel("Dev1/ai0, "", AITerminalConfiguration.Differential, -10, 10, AIVoltageUnits.Volts);

    // configure the timing
    myAITask.Timing.ConfigureSampleClock("",
        AISampleRate,
        SampleClockActiveEdge.Rising,
        SampleQuantityMode.ContinuousSamples,
        numberOfAISamples);
    myAITask.Stream.Buffer.InputBufferSize = 10000000;

    // verify the task
    myAITask.Control(TaskAction.Verify);

    // create the analogReader object
    analogInReader = new AnalogMultiChannelReader(myAITask.Stream);
    analogInReader.SynchronizeCallbacks = false;
    arAnalogInReader = analogInReader.BeginReadWaveform(numberOfAISamples, AnalogInputRead, myAITask);
}
catch (Exception ex)
{
    log.Error("", ex);

    if (myAITask != null)
        myAITask.Dispose();
}
}

А затем прочитайте данные при вызове этого обратного вызова:

public void AnalogInputRead(IAsyncResult ar)
{

    try
    {
        try
        {
            myAIdata = analogInReader.EndReadWaveform(ar);
        }
        catch (DaqException ex)
        {
            if (ex.Error != 88710)
                throw;
            else
                log.Debug("DaqException 88710 ignored", ex);
        }

        for (int i = 0; i < numberOfAISamples; i++)
        {           
            myData[i] = myAIdata[0].Samples[i].Value;
        }
    }
    catch (Exception ex)
    {
        log.Error("", ex);
    }
}
Другие вопросы по тегам