问题标签 [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.
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?
.net - 通过 .net 应用程序将 TestStand 结果写入外部数据库
我正在寻找一种解决方案,我必须通过可以在测试序列中访问的预定义 API 将 TestStand 测试的结果写入数据库。目前将测试结果写入数据库的方式是通过 ODBC 并将 SQL 语句显式写入 TestStand。我想改为在 .Net 中编写一个应用程序,并将这些 SQL 语句调用封装在其中。
这完全可行吗?我可以编写应用程序、构建 DLL、将其加载到 TestStand 并通过 .Net Adpater 使其可用于测试序列。
更糟糕的是,实际的 .Net 应用程序将使用将实际写入数据库的 web 服务。
这是我第一次使用 TestStand,我不确定我是否走在正确的轨道上。我筛选的大多数文档似乎都没有暗示通过第三方对象(.Net、Active X 或任何 DLL)外部化数据库交互。
非常感谢您对此的评论
谢谢你,肯。
c# - 以编程方式在 TestStand 中创建容器数组
问题
我试图在 c# 中创建一个容器数组以作为测试结果传回 TestStand,但似乎没有一种简单的方法来完成这项任务。
动机
在 c# 中List<Dictionary<string,object>>
,我的测试系统中包含结果,我希望这些结果显示在我的测试报告中。Dictionary<string,object>
具有可变数量的不同类型的元素。
尝试的解决方案
如果给出:
在哪里
- sequenceContext 是 NationalInstruments.TestStand.Interop.API.SequenceContext
- destination 是我希望将结果保存在我的 TestStand 报告中的位置,即 Step.Result.TestResultDestination
我尝试了几种不同的方法来添加容器数组result
,例如:
这会将容器数组添加到我的结果中,但是任何将元素插入容器数组的尝试都会导致异常。
想法?
arrays - gVim 和二维数组
在我的编程环境中,我有相当大的二维数组。它的尺寸是 90x40。
我必须通过从外部文件加载数据来填充这个数组。
加载数据的机制由一个绑定文件组成,我必须在其中进行如下样式的绑定:
很容易计算出我必须创建 3600 条部分唯一的线。
我认为我可以在 gVim 中创建 [..][..] 元素,然后在它们前面添加数组的名称。虽然添加前缀很容易,但我坚持创建 [..][..] 位。
在我的场景中,我想通过执行以下操作来解决这个问题:
- 创建 3600 行
- 在每行/行的末尾(通过使用
:%s/$/\[ -- my expression 1 -- \]/g
命令)添加从 0 到 89 的数字,以四十个元素(四十个零、四十个、四十二个等)为块 - 在每行/行的末尾(通过使用
:%s/$/\[ -- my expression 2-- \]/g
命令)添加从 0 到 39 的数字,以 40 个元素为一组(零、一、二、...、三十九、零、一、...等)。 )
我的表达式 1将计算为操作的商(number of line) mod 90
我的表达式 2将评估为操作提醒(number of line) mod 40
现在的问题是:
- 如何评价
(number of line)
- 如何计算
(number of line) mod XX
表达式? - 也许有更好的方法?
c# - 从 C# 访问 XML 数据
我正在努力从 C# 访问存储在 XML 文件中的数据。我阅读了很多帖子——最近的帖子在这里——但仍然无法正常工作。
xml 节点如下所示:
我需要知道名为“StartTime”的属性的值是多少
编辑:上面的节点是 xml 文档中的众多节点之一。它嵌套在其他节点之间。我需要找到名称为“StartTime”的属性的所有值。
我使用 XAML。
EDIT2:我认为如果我显示更大的 xml 块我必须从中获取数据会更好。看起来 Kaz 的解决方案是最接近要求的解决方案,但如果我加载整个 xml,它会失败。
XML 文件:
.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
我尝试了以下步骤:
- 关闭 LabVIEW 和项目
- 删除旧的dll
- 打开LabVIEW,打开项目,打开任何试图使用旧dll的VI。它找不到它,所以我停止加载 VI
- 关闭LabVIEW,将新的dll拖放到同一位置(以及该dll使用的其他一些dll和exe,但它们保持不变)
- 打开LabVIEW,打开项目,新建VI,添加Constructor节点并将其指向新的DLL
- 关闭 Vi 而不保存它,然后打开现有的 Vi 并将它们指向新的 dll
- 保存并关闭项目
问题是,这种解决方法有时有效,但多次无效。即使,如果我更改第 4 步,并将新的 DLL 及其依赖项拖放到新位置(稍后将其带回)并重复其他步骤,仍然不能确定性地解决问题。
我已经尝试升级到Lv2014,但问题仍然存在。此外,如果它在任何时候工作,我从 TS 运行相同的 VI(并且我升级到 Ts 2014,这本身意味着进行大量的流程模型更改和代码更改),它抱怨 dll 解析和失败的路径之一。我回到 LaBVIEW,现在它无法再次加载 dll。
我在这项工作中损失了将近一个月,因此感谢您提供任何帮助。我不敢相信 NI 没有对此的永久修复,或者如果有的话,除了我上面引用的那个之外,我不知道它。
要么我这样做不正确,要么 DLL 需要以特定方式在 VS 2010 中构建,或者在运行 LabVIEW/TS .net 服务种子以在复制新程序集时进行修改,我不知道。
c# - 使用 C# 的 TestStand API
我正在一个项目中工作,我必须在 C# (WPF) 中使用 TestStand API。我以前没有在这个领域工作过,我找不到任何关于它的参考资料或材料。
我想使用 C# UI 从用户说 x 和 y 获得 2 个输入。现在我必须将这些 x 和 y 值发送到 TestStand,在那里我有一个相同类的 Function 成员,它将获取这些输入并添加两者。我的需要是,只要我在 UI 中输入 x 和 y 值并按下某个按钮(“保存更改”),值就应该填充到被调用函数的参数中。整个事情是一个自定义步骤。
任何想法都值得赞赏。如果您能推荐一些材料供我参考,我感到非常感谢。提前致谢。
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?
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 的区别在哪里?
谢谢。
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 默认模块