问题标签 [labwindows]

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 投票
0 回答
243 浏览

c - 防止用户从“保存文件”对话框操作文件夹

我在 Labwindows 中有一个应用程序,当用户单击“保存数据”按钮时,该按钮会启动文件选择对话框。出于安全原因,我想禁止用户右键单击“文件选择对话框”上的任何位置并能够删除/重命名现有文件和/或创建/删除现有文件夹/目录。

这可以在带有键盘钩子的窗口中完成,但认为在 Labwindows 中可能会更容易一些。我已经尝试将 allowMakeDirectory 属性设置为 0,但这什么也没做,并且“FileSelectPopupEx”函数没有要设置的“allowMakeDirectory”属性。

我正在 windows7 上开发并在 Vista 上运行该应用程序。

同样对于那些不知道大多数可以在 Windows 中完成的事情的人,例如调用 strcpy、GetLastError() 等,可以从 LabWindows 中调用。

任何建议,将不胜感激。

谢谢

0 投票
1 回答
1182 浏览

c++ - 自动填写表格并运行程序

一个朋友给我发了 3 个用 C 或 C++ 编写的程序。每个程序都有一个表格,填好表格,然后按下一个按钮来执行一些计算。这些程序是用我从未听说过的 LabWindows/CVI 编写的。他问我,是否可以自动填写表格并运行计算以获得输出。我说过一种方法是将程序修改为控制台程序并使用参数运行它(如果字段数量很少)。

是否存在可用于自动执行此类程序的工具,或者如果可能的话,LabWindows/CVI 除了修改源代码之外是否有任何可以帮助我的东西?

我提前感谢您的帮助。

0 投票
1 回答
325 浏览

thread-safety - 在 LabWindows/CVI 中使用 ThreadSafe 变量宏

我在 LabWindows/CVI 环境中使用线程安全变量宏,并观察到可以在线程安全变量被释放之前获得一个指针。(来自先前的请求)

因为我感兴趣保护的数据是 a struct,所以我无法显式设置嵌套级别,所以我假设嵌套级别保持在 0,即一旦发出单个线程安全指针,第二个请求将被拒绝直到第一个被释放。但是,在单步调试会话时,我发现这不是真的。DefineThreadSafeVar(CLI, SafeCli);通过继续使用 F8步入键继续执行语句,随后对指向线程安全变量的指针的请求被授予,而无需释放原始变量。

我的期望是,一旦发出指向线程安全变量的指针但尚未释放 ,这些宏应该会阻止访问

我的期望不正确吗?
还是我错误地执行了调用?

这是我的源代码:

0 投票
1 回答
261 浏览

sockets - 在 ATEasy 中使用 TCP

我想创建一个服务器端程序,ATEasy以便ATEasy测试将测试信息发送到LABWINDOWS\CVI将实现客户端的测试信息。

我的问题是,有人有关于如何将 TCP 套接字ATEasy用作服务器的好的教程或示例吗?

Winsock示例中的示例ATEasy不够好,很难理解。

0 投票
2 回答
307 浏览

c - 如何从 LabWindows\CVI C 代码或 CMD 命令获取当前运行的以太网速度

我正在开发具有几个以太网端口的测试设备。作为测试的一部分,我想在连接测试单元时检查以太网端口(10/100/1000)的当前速度。

我怎样才能得到这些信息?是否有可以提供此信息的 C 库或 CMD 命令?

0 投票
2 回答
118 浏览

c - 合并多个文件夹中的代码

早上好,

我正在处理遗留代码。该遗留代码由多个项目(带有 NI LabWindows CVI 的 C 语言)组成,从未在源代码控制系统中进行管理,而仅在文件夹中进行管理。随着时间的推移,它变得有点混乱,创建了这个文件夹的副本,并且根据所构建的项目对所有文件夹进行了更改。结果是,有 5 个文件夹,每个文件夹都包含不同的代码库,而这些代码库曾经是相同的代码。在所有文件夹中也修改了许多文件,因为它们用于多个项目。每个项目仅从 5 个文件夹中的 1 个构建(因此项目 A 仅构建在文件夹 1 中,项目 b 在文件夹 4 中等等)。它不仅是原始代码,而且是用户界面文件。

我希望到目前为止很清楚。

我的任务是将所有代码合并到一个代码库中(就像它最初开始的那样)。我想得到一些建议。

以下是计划: 1. 创建一个文件夹的基线版本,该文件夹应该是更改最多的文件夹。2. 创建 GIT 存储库来存储代码和所有更改 3. 使用文件差异软件浏览所有文件夹并将文件合并到基线版本中。(文件夹 1 是基线,将文件夹 2 合并到基线,将文件夹 3 合并到基线等)

你对这个计划有什么意见吗?什么是好的?坏的?有我可以使用的工具吗?

0 投票
0 回答
268 浏览

c - C - 调试模式不会确认回调事件

我正在尝试在 Labwindows/CVI 中编写一个简单的 UDP 传输程序。这个想法是它创建了 2 个 UDP 通道,使用一个将数据写入端口,另一个用于接收数据并打印出来。

这是接收端:

我的主要问题是,当我在调试模式下运行它时,从未调用显示的回调函数,即不打印“回调调用”,也不是在结果readChannel()调用中存储或打印任何数据。

但是,当作为 .exe 编译和执行时,它会按预期工作。每次在该端口上接收到数据时,回调都会执行。

会导致这种情况发生的调试版本和“发布”版本之间会有什么区别?

getchar()编辑:经过大量测试,我相信这与使用导致主线程挂起的函数等待消息有关。为什么它在发布模式下工作我不知道,但它可能与输出窗口(?)的差异有关。我的解决方案是删除回调并在它自己的线程上运行接收通道。这样线程总是在等待消息,使用:

UDPRead(readerChannel, 0, 0, UDP_WAIT_FOREVER, NULL, NULL)) < 0)

然后我的主线程可以根据需要接收消息。如果有人有任何其他信息,请告诉我。

0 投票
1 回答
129 浏览

c - Measure Volt DC from an Analog input into an array and Calculate Volt DC in RMS

I am developing Test automation in GeoTest ATEasy and LabWindows\CVI, in the tests i measure analog and digital outputs\inputs.

In one of the test i need to measure an Analog input which contains an audio signal - and verify its Hz and Volt DC RMS.

The audio Signal is 5Hz and 2 Volt DC in RMS.

I have the possibilty to measure multiple Volt samples into an array, but i need to decide what is the sample rate and the # of samples i want to sample.

After measuring, i need to verify that the signal is 5Hz and 2 Volt DC in RMS.

Any suggestion on how to analyze the data to see if the signal is actually 5Hz and 2 Volt DC in RMS?

I Need an algorithm, or a library function that can do these calculations.

What should my sample rate and # of samples (its also the size of the array) be?

0 投票
0 回答
733 浏览

c++ - 从 LabWindows/CVI 调用从 dll 导出的函数

我是 C/C++ 编程的新手,虽然我查看了 Microsoft 的帮助和其他 StackOverflow 问题,但我还没有找到问题的答案。

我正在尝试从我在 Visual Studio 2008 中制作的 DLL 调用导出的函数。它是从 VBA 宏和在 LabWindows/CVI 中制作的用户界面程序调用的。它适用于 VBA 宏,但是当我尝试加载 LabWindows 中的程序时,它会崩溃。

我尝试了静态和动态调用。这是我所拥有的:

DLL 中的函数以这种方式导出,_stdcall 因此 VBA 可以使用它和 __declspec(dllexport) 来摆脱 .def 文件。

输入字符串是一个非常长的字符数组。这是一种传递 +60 个字符串的方法(每个字符串用逗号“,”分隔)。然后在代码中,它们使用逗号 (",") 作为参考除以 strtok。这是必要的,因为函数中 VBA 的输入限制为 60。


当我尝试静态调用该函数(将 .lib 文件和 DLL 的标头添加到项目中)时,我收到以下错误。

静态调用的代码如下:

我尝试用他的修饰名称调用该函数,但它不起作用。

当我检查 DependencyWalker 函数的名称时,我得到了这个名称:

我也尝试在函数调用和定义上使用它,但没有成功。

我做错了什么?


当我尝试动态调用该函数时,程序崩溃了。DLL、头文件和.lib 放在项目文件夹中。

当我在程序崩溃时调试程序时,我发现我的 char * 中的逗号 (",") 被替换为 '\0',因此只有第一个字符串会到达 DLL。这可能是原因,但我只是不知道为什么逗号(“,”)被替换。

我也试过用装饰的名字来称呼它,但没有成功。

0 投票
3 回答
2199 浏览

c - 24 位有符号数据类型

我正在从 ublox GPS 模块接收 24 位长位域(4 字节消息的 3 个字节)的数据,我需要将这些 24 位数据域转换为带符号的十进制值,但我找不到关于如何在规范中执行此操作。我也知道模块附带的另一个程序的某些值。

对于正值,它似乎只是简单地将 24 位二进制数转换为 dec,仅此而已,例如0x000C19 = 3097and 0x000BD0 = 3024,但对于负数,我遇到了麻烦。2 的补码似乎不起作用。以下是一些已知值:0xFFFFC8 = -570xFCB9FE = -214528和。使用 2 的补码,每次转换都会减少几个数字(分别为 -56、-214530、-54213、-1464)。(十六进制数字用于避免每次都写 24 位数字。)0xFF2C3B = -542150xFFFA48 = -1462

提前感谢您的帮助!