2013-10-04 3 views
0

ПроблемаПрограммным Создать массив контейнеров в TestStand

Я пытаюсь создать массив контейнеров в C# передать обратно в TestStand в качестве результатов испытаний, и не кажется, простой способ для выполнения этой задачи.

Мотивация

В C# У меня есть результаты, содержащиеся в List<Dictionary<string,object>> от моей тестовой системы, и я хотел бы, чтобы эти результаты показывают в моем протоколе испытаний. Dictionary<string,object> имеет переменное количество элементов разных типов.

Покушение Solutions

Если дано:

var result = sequenceContext.AsPropertyObject().EvaluateEx(destination, EvaluationOptions.EvalOption_NoOptions); 

Где

  • sequenceContext является NationalInstruments.TestStand.Interop.API.SequenceContext
  • назначения, где я хотел бы мои результаты будут сохранены в моем отчете TestStand, т.е. Step.Result.TestR esultDestination

Я попытался несколько различных методов, чтобы добавить массив контейнеров result, таких как:

var newPropertyObject = sequenceContext.Engine.NewPropertyObject(PropertyValueTypes.PropValType_Container, true, string.Empty, PropertyOptions.PropOption_InsertIfMissing); 
result.SetPropertyObject("TestResultDestination", PropertyOptions.PropOption_InsertIfMissing, newPropertyObject); 
result.SetFlags("TestResultDestination", PropertyOptions.PropOption_NoOptions, PropertyFlags.PropFlags_IncludeInReport | PropertyFlags.PropFlags_IsMeasurementValue); 

который добавляет множество контейнеров в мой результат, однако любая попытка затем вставить элемент в массив контейнеров приводит к исключению.

Мысли?

ответ

0

Я был близок, я пропускал несколько ключевых шагов:

if (!result.Exists("TestResultDestination", 0)) 
{ 
     //once we have added this element do not add it again, it will overwrite the other array elements 
     var newPropertyObject = sequenceContext.Engine.NewPropertyObject(PropertyValueTypes.PropValType_Container, true, string.Empty, PropertyOptions.PropOption_InsertIfMissing); 
     //for my example I only need 5 elements, set the dimension of the array           
     newPropertyObject.SetNumElements(5, 0); 
     result.SetPropertyObject("TestResultDestination", PropertyOptions.PropOption_InsertIfMissing, newPropertyObject); 
     result.SetFlags(newKey, PropertyOptions.PropOption_NoOptions, PropertyFlags.PropFlags_IncludeInReport | PropertyFlags.PropFlags_IsMeasurementValue); 
    } 

Затем можно приступить к работе с элементом массива, используя синтаксис массива, т.е. TestResultDestination[0] для хранения фактических результатов.