问题标签 [cvi]

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 投票
1 回答
2159 浏览

python - NI CVI 与 Python

我想将 Python IDLE-esque 命令提示界面集成到现有的 NI-CVI (LabWindows) 应用程序中。我尝试关注 Python.org 的讨论,但似乎迷失在细节中。有没有像我这样的傻瓜的资源?

0 投票
1 回答
1361 浏览

svn - 有没有人有使用 National Instruments CVI 和源代码控制的经验?

我正在使用 NI 的 Labwindows CVI,并且正在尝试集成源代码控制。据说它适用于任何适合 MS API (MSSCC/SCC) 的东西,但我在实践中没有发现这种情况。如果有一个 SVN 服务可以很好地配合它,我会很高兴,但我想这要求太多了。

0 投票
2 回答
1198 浏览

c - 什么可能导致 Labwindows/CVI C 程序讨厌数字 2573?

使用视窗

所以我正在从二进制文件中读取无符号整数数据值的列表。该文件包含按顺序列出的许多数据集。这是从指向其开头的 char* 读取单个数据集的函数:

其中 read_dataset 在这样的上下文中:

一切都顺利进行,直到我的循环读取数字 2573。突然之间,它开始吐出随机和巨大的数字。

例如,应该是什么

变成

如果您认为这些十六进制数字看起来很可疑,那您是对的。原来改变的值的十六进制值真的很熟悉:

所以显然这个数字 2573 导致我的流指针获得一个字节。这一直存在,直到下一个数据集被加载和解析,上帝禁止它包含数字 2573。我检查了许多发生这种情况的位置,我检查的每个位置都从 2573 开始。

我承认我在 C 的世界里没有那么有才华。可能导致这种情况的原因对我来说是完全不透明的。

0 投票
1 回答
228 浏览

compiler-construction - 如何检测 Windows XP 或 Windows 2000 操作系统以运行 CVI 可执行文件

我正在使用 NI LabWindows CVI 8.1 编译和构建我需要在 Windows XP 和 Windows 2000 操作系统上运行的可执行程序。我使用 Windows XP 编译和构建可执行文件。到目前为止,我得到的信息是我需要如下声明:

我需要知道确切的语法是什么以及放置它的位置(比如放置它的头文件或源文件)。

0 投票
1 回答
1291 浏览

command - 在 LabWindows/CVI 中通过 RS232 向 Fasttrack Supreme 发送 ATD 命令

我从事基于 FASTRACK SUPREME 的项目,该项目必须通过串行 RS232 接收命令。这

问题是:当我使用 HyperTerm 命令 ATDxxxxxxxxx;工作正常。当我使用 CVI RS232 库时,没有任何反应。是否有可能我的命令仍然被阻止

串行缓冲区?这是我的代码:

问题出在哪里?请帮忙!谢谢。

0 投票
8 回答
41178 浏览

c - 如何提高 memcpy 的性能

概括:

memcpy 似乎无法在我的系统上以超过 2GB/秒的速度在真实或测试应用程序中传输。我可以做些什么来获得更快的内存到内存副本?

完整详情:

作为数据捕获应用程序的一部分(使用一些专门的硬件),我需要将大约 3 GB/秒的数据从临时缓冲区复制到主内存中。为了获取数据,我为硬件驱动程序提供了一系列缓冲区(每个 2MB)。硬件 DMA 将数据发送到每个缓冲区,然后在每个缓冲区已满时通知我的程序。我的程序清空缓冲区(memcpy 到另一个更大的 RAM 块),并将处理后的缓冲区重新发布到卡上以再次填充。我在使用 memcpy 足够快地移动数据时遇到问题。似乎内存到内存的复制速度应该足够快,可以在我正在运行的硬件上支持 3GB/秒。Lavalys EVEREST 为我提供了 9337MB/秒的内存复制基准测试结果,但我无法通过 memcpy 获得接近这些速度的任何地方,即使在一个简单的测试程序中也是如此。

我通过在缓冲区处理代码中添加/删除 memcpy 调用来隔离性能问题。如果没有 memcpy,我可以运行完整的数据速率——大约 3GB/秒。启用 memcpy 后,我的速度被限制在大约 550Mb/秒(使用当前编译器)。

为了在我的系统上对 memcpy 进行基准测试,我编写了一个单独的测试程序,它只在某些数据块上调用 memcpy。(我在下面发布了代码)我已经在我正在使用的编译器/IDE(National Instruments CVI)以及 Visual Studio 2010 中运行了它。虽然我目前没有使用 Visual Studio,但我愿意如果它会产生必要的性能,则进行切换。但是,在盲目移动之前,我想确保它可以解决我的 memcpy 性能问题。

Visual C++ 2010:1900 MB/秒

NI CVI 2009:550 MB/秒

虽然 CVI 明显比 Visual Studio 慢我并不感到惊讶,但 memcpy 性能如此之低让我感到惊讶。虽然我不确定这是否可以直接比较,但这远低于 EVEREST 基准带宽。虽然我不需要那么高的性能,但至少需要 3GB/秒。当然,标准库的实现不会比任何 EVEREST 使用的更糟糕!

在这种情况下,我能做些什么来让 memcpy 更快?


硬件细节:AMD Magny Cours - 4x 八核 128 GB DDR3 Windows Server 2003 Enterprise X64

测试程序:

编辑:如果您有额外的 5 分钟时间并想做出贡献,您可以在您的机器上运行上述代码并将您的时间作为评论发布吗?

0 投票
2 回答
912 浏览

unit-testing - NI Lab Windows CVI 有哪些可用的测试框架?

我被迫使用 NI Lab Windows CVI,我很想使用 TDD。但是我找不到该 IDE 的任何测试框架。有没有已知的解决方案?

0 投票
2 回答
689 浏览

c++ - 链接器错误 LNK2019 可追溯到 __stdcall 我认为我得到了正确的库 - 我能做些什么来解决这个问题?

我尝试将 LabCVI 项目移植到 MSVS 2010 C++ Express。有一行代码如下所示:

发生链接器错误:LNK2019 "_InitCVIRTEEx@12" - 所有相关标头都已包含 cpp 语句:

我将错误追溯到这些片段,我为您组合了这些片段:

总结一下:

此调用应在 cvirt.lib 中定义 - 添加到 Librarypaths (CVI2009\extlib\msvc) 链接器错误仍然发生,我只是不明白为什么。

应该以不同的方式添加库吗?我如何验证这确实是正确的库?错误是否意味着完全不同的东西?

0 投票
2 回答
4391 浏览

cvi - 如何检查 lib 文件?

我有一个包含 390 个库的列表,需要将一个软件从实验室 CVI 移植到 Visual C。这些依赖关系让我很生气。

我不能全部导入它们,那将是矫枉过正 - 并且并非所有它们都是唯一的和/或根本可以加载。

有没有一种简单的方法来确定 lib 文件需要什么调用?有这方面的编辑吗?

0 投票
3 回答
543 浏览

c - 如何在没有dirent.h的情况下访问C90中的目录?

我在 C90 的基础上在 LabCVI 工作。

手头的坦克是在“..\data”目录和子目录中找到“*.spec”文件的绝对路径。

我知道有解释我如何使用 dirent.h 来做到这一点,但我需要在没有 dirent.h 的情况下做到这一点。这个(第一部分第二部分)教程不是我想要的。LabCVI 没有 dirent 标头,我无法从Internet导入 ist,因为 dirent.h 的依赖项与 LabCVI 不兼容。

一旦我杀死了对 LabCVI 的所有依赖项,我计划迁移到更好的 IDE/Language,但我必须让代码保持兼容。所以我不能使用 LabCVI 的目录工具。

我该如何解决这个问题并获得我的目录访问权限?(代码将在 XP 机器上运行。)