Как использовать измерительную студию для интерфейса 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);
}
}