问题标签 [teststand]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1539 浏览

c++builder - 使用 c++builder 为 LabView 导出 C 函数

我有一个从 VC2008 移植到 C++ Builder XE2 的 DLL。DLL 用于 LabVIEW 的 TestStand。

TestStand 在导入 VC2008 DLL 时,可以看到函数名称及其参数。当使用 C++ Builder DLL 时,它所看到的只是函数名而不是参数。所有导出都是 C 函数并使用extern "C" declspec( dllexport ).

有没有办法让出口正确?

我已经读过添加一个 TLB 文件就可以完成这项工作,如果这是真的,我如何创建一个只导出 C 函数的 TLB?

0 投票
2 回答
890 浏览

.net - 通过 .net 应用程序将 TestStand 结果写入外部数据库

我正在寻找一种解决方案,我必须通过可以在测试序列中访问的预定义​​ API 将 TestStand 测试的结果写入数据库。目前将测试结果写入数据库的方式是通过 ODBC 并将 SQL 语句显式写入 TestStand。我想改为在 .Net 中编写一个应用程序,并将这些 SQL 语句调用封装在其中。

这完全可行吗?我可以编写应用程序、构建 DLL、将其加载到 TestStand 并通过 .Net Adpater 使其可用于测试序列。

更糟糕的是,实际的 .Net 应用程序将使用将实际写入数据库的 web 服务。

这是我第一次使用 TestStand,我不确定我是否走在正确的轨道上。我筛选的大多数文档似乎都没有暗示通过第三方对象(.Net、Active X 或任何 DLL)外部化数据库交互。

非常感谢您对此的评论

谢谢你,肯。

0 投票
1 回答
2654 浏览

c# - 以编程方式在 TestStand 中创建容器数组

问题

我试图在 c# 中创建一个容器数组以作为测试结果传回 TestStand,但似乎没有一种简单的方法来完成这项任务。

动机

在 c# 中List<Dictionary<string,object>>,我的测试系统中包含结果,我希望这些结果显示在我的测试报告中。Dictionary<string,object>具有可变数量的不同类型的元素。

尝试的解决方案

如果给出:

在哪里

  • sequenceContext 是 NationalInstruments.TestStand.Interop.API.SequenceContext
  • destination 是我希望将结果保存在我的 TestStand 报告中的位置,即 Step.Result.TestResultDestination

我尝试了几种不同的方法来添加容器数组result,例如:

这会将容器数组添加到我的结果中,但是任何将元素插入容器数组的尝试都会导致异常。

想法?

0 投票
2 回答
155 浏览

arrays - gVim 和二维数组

在我的编程环境中,我有相当大的二维数组。它的尺寸是 90x40。

我必须通过从外部文件加载数据来填充这个数组。

加载数据的机制由一个绑定文件组成,我必须在其中进行如下样式的绑定:

很容易计算出我必须创建 3600 条部分唯一的线。

我认为我可以在 gVim 中创建 [..][..] 元素,然后在它们前面添加数组的名称。虽然添加前缀很容易,但我坚持创建 [..][..] 位。

在我的场景中,我想通过执行以下操作来解决这个问题:

  1. 创建 3600 行
  2. 在每行/行的末尾(通过使用:%s/$/\[ -- my expression 1 -- \]/g命令)添加从 0 到 89 的数字,以四十个元素(四十个零、四十个、四十二个等)为块
  3. 在每行/行的末尾(通过使用:%s/$/\[ -- my expression 2-- \]/g命令)添加从 0 到 39 的数字,以 40 个元素为一组(零、一、二、...、三十九、零、一、...等)。 )

我的表达式 1将计算为操作的商(number of line) mod 90

我的表达式 2将评估为操作提醒(number of line) mod 40

现在的问题是:

  1. 如何评价(number of line)
  2. 如何计算(number of line) mod XX表达式?
  3. 也许有更好的方法?
0 投票
6 回答
1339 浏览

c# - 从 C# 访问 XML 数据

我正在努力从 C# 访问存储在 XML 文件中的数据。我阅读了很多帖子——最近的帖子在这里——但仍然无法正常工作。

xml 节点如下所示:

我需要知道名为“StartTime”的属性的值是多少

编辑:上面的节点是 xml 文档中的众多节点之一。它嵌套在其他节点之间。我需要找到名称为“StartTime”的属性的所有值。

我使用 XAML。

EDIT2:我认为如果我显示更大的 xml 块我必须从中获取数据会更好。看起来 Kaz 的解决方案是最接近要求的解决方案,但如果我加载整个 xml,它会失败。

XML 文件:

0 投票
0 回答
699 浏览

.net - 拖放新的 .net dll 不会在 LabVIEW 中加载它

我正在使用 LabVIEW 8.5、Testand 4.0 和 Windows XP。

我一直在使用调用.Net dll(在v2.0中创建,非强类型,未在GAC中添加)的LabVIEW Vi,以及成功调用这些Vi的Testand序列。

随着 dll 的版本发生变化,我将新的 dll 拖放到相同的位置,一切都变得松散了。已经工作的 Vi 中断,如果我添加一个新 VI 并指向新的 dll,构造函数节点会抱怨“无法加载程序集”。

我尝试了一个解决方法:http: //digital.ni.com/public.nsf/allkb/3C5F47E9845C535286257C7100501990

我尝试了以下步骤:

  1. 关闭 LabVIEW 和项目
  2. 删除旧的dll
  3. 打开LabVIEW,打开项目,打开任何试图使用旧dll的VI。它找不到它,所以我停止加载 VI
  4. 关闭LabVIEW,将新的dll拖放到同一位置(以及该dll使用的其他一些dll和exe,但它们保持不变)
  5. 打开LabVIEW,打开项目,新建VI,添加Constructor节点并将其指向新的DLL
  6. 关闭 Vi 而不保存它,然后打开现有的 Vi 并将它们指向新的 dll
  7. 保存并关闭项目

问题是,这种解决方法有时有效,但多次无效。即使,如果我更改第 4 步,并将新的 DLL 及其依赖项拖放到新位置(稍后将其带回)并重复其他步骤,仍然不能确定性地解决问题。

我已经尝试升级到Lv2014,但问题仍然存在。此外,如果它在任何时候工作,我从 TS 运行相同的 VI(并且我升级到 Ts 2014,这本身意味着进行大量的流程模型更改和代码更改),它抱怨 dll 解析和失败的路径之一。我回到 LaBVIEW,现在它无法再次加载 dll。

我在这项工作中损失了将近一个月,因此感谢您提供任何帮助。我不敢相信 NI 没有对此的永久修复,或者如果有的话,除了我上面引用的那个之外,我不知道它。

要么我这样做不正确,要么 DLL 需要以特定方式在 VS 2010 中构建,或者在运行 LabVIEW/TS .net 服务种子以在复制新程序集时进行修改,我不知道。

0 投票
1 回答
2323 浏览

c# - 使用 C# 的 TestStand API

我正在一个项目中工作,我必须在 C# (WPF) 中使用 TestStand API。我以前没有在这个领域工作过,我找不到任何关于它的参考资料或材料。

我想使用 C# UI 从用户说 x 和 y 获得 2 个输入。现在我必须将这些 x 和 y 值发送​​到 TestStand,在那里我有一个相同类的 Function 成员,它将获取这些输入并添加两者。我的需要是,只要我在 UI 中输入 x 和 y 值并按下某个按钮(“保存更改”),值就应该填充到被调用函数的参数中。整个事情是一个自定义步骤。

任何想法都值得赞赏。如果您能推荐一些材料供我参考,我感到非常感谢。提前致谢。

0 投票
1 回答
515 浏览

c# - Testand - 使用 C# DLL 使用 C# Wrapper 使用 C DLL

有一个 C-Funktion 我用作 DLL。该函数由

在各自的头文件中。

包装器导入函数

包装器有一个方法,其中包含对该函数的调用

现在在 TestStand 中执行步骤时出现错误:

在调用 .NET 成员“SomeFunction”时发生异常:System.BadImageFormatException: Es wurde versucht, eine Datei mit einem falschen Format zu laden。(Ausnahme von HRESULT: 0x8007000B) bei SomeFunctionWrapperNameSpace.WrapperClass.SomeFunction(Byte[] array1) bei WrapperNameSpace.WrapperClass.SomeFunction(Byte[] array1, Byte[] array2) in SomeFunctionWrapper.cs:Zeile 33. bei SomeFunction(Byte[] SomeFunction.cs:Zeile 39 中的数组 1,字节 [] 数组 2)。

一些想法如何让 TestStand 接受这个 DLL?

0 投票
1 回答
1411 浏览

c# - TestStand - 使用 C# 的动作序列 - Dll - 无法实例化 Vector XL 驱动程序库

由于可能很少有人在 TestStand 和 Vector XLDriver(这里用于汽车 CAN 总线)方面有经验,我非常感谢有根据的猜测......

测试台 2014 64 位

我在序列中有一个操作步骤。它使用 C# Dll 的功能。该函数运行完美,但如果我尝试在函数之前的类范围中插入两行之一:

或者

它在 TestStand 中不起作用。从 C# Main() 调用函数时,后者工作正常。

在 TestStand 我收到以下信息

短语“Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt”。可以翻译为“对象引用尚未链接到对象实例”。

如果没有 XLDriver 行,它可以在 TestStand 中工作。在另一个 C# Main() 中使用它仍然可以工作。其他一切都没有改变。

vxlapi_NET.dll 调用 vxlapi.dll 或 vxlapi64.dll。由于我已经删除了 32 位版本并再次尝试,因此 vxlapi_NET.dll 文件可能不会调用错误的文件。

如果我在另一个使用 Dll 并编译为可执行文件的 C# 项目中使用我的 C#,我可以在 TestStand 中使用它。它完美地调用了 XL Driver。

那么在 TestStand 序列步骤中使用可执行文件或 C# Dll 的区别在哪里?

谢谢。

0 投票
1 回答
801 浏览

sequence - National Instruments Teststand 属性加载器

我在使用 Property Loader 时遇到了一些问题,让我来描述一下。

我有几个子序列的 MainSequence。我必须使用属性加载器根据扫描的数量加载具有测试限制的文件。我将此加载从 PreUUTLoop 移至 MainSequence,因为只有这样我才能访问确定要使用哪个文件的扫描数字。

限制文件包含取决于扫描数量的限制。定义的限制是指 MainSequence 和其他子序列中的步骤。

我注意到的是,属性加载器在放入 MainSequence 时工作正常(在 Setup 或 Main 中没有区别)。但是当我将属性加载器放在单独的子序列中(并将子序列放在 MainSequence 的 Setup 或 Main 中)时,它只加载 MainSequence 中子序列的限制。不加载直接在 MainSequence 中的步骤限制(即数字检查)。

在限制文件中,我有这样的东西:

MainSequence 看起来像这样:

设置限制:

子序列1:

子序列2:

所以 SubSeq1 中的 Step1 设置为在文件中。SubSeq2 中的 Step1 也已设置,但当 Property Loader 在 Subseq 中时未设置 Step3。我尝试在属性加载器中勾选当前执行的使用,但不起作用。我认为这是一些范围问题,但设置了其他子序列中的步骤。只有当我想在子序列中的属性加载器中设置 MainSequence 时才会发生这种情况。

我使用 NI Teststand 2014。并行模型。数字检查步骤是 Teststand 默认模块