有没有办法使用 NI Daqmx 枚举接口
Is there a way to enumerate interfaces using NI Daqmx
我有一个与 NI DAQ 卡接口的 C++ 应用程序,但是设备的名称是硬编码的,如果在 NI Max 应用程序中更改它会停止工作,那么有没有办法枚举连接的设备以了解连接的卡的名称?
可以使用 DAQmxGetSysDevNames()
检索所有设备的列表。名称以逗号分隔。
获得所有名称的列表后,您可以使用产品类型查找正确的设备。
const std::string expectedProductType = "1234";
constexpr size_t bufferSize = 1000;
char buffer[bufferSize] = {};
if (!DAQmxFailed(DAQmxGetSysDevNames(buffer, bufferSize))) {
std::string allNames(buffer);
std::vector<std::string> names;
boost::split(names, allNames, boost::is_any_of(","));
for (auto name : names) {
char buffer2[bufferSize] = {};
if (!DAQmxFailed(DAQmxGetDevProductType(name.c_str(), buffer2, bufferSize))) {
if (expectedProductType == std::string(buffer2)) {
// match found
}
}
}
}
我有一个与 NI DAQ 卡接口的 C++ 应用程序,但是设备的名称是硬编码的,如果在 NI Max 应用程序中更改它会停止工作,那么有没有办法枚举连接的设备以了解连接的卡的名称?
可以使用 DAQmxGetSysDevNames()
检索所有设备的列表。名称以逗号分隔。
获得所有名称的列表后,您可以使用产品类型查找正确的设备。
const std::string expectedProductType = "1234";
constexpr size_t bufferSize = 1000;
char buffer[bufferSize] = {};
if (!DAQmxFailed(DAQmxGetSysDevNames(buffer, bufferSize))) {
std::string allNames(buffer);
std::vector<std::string> names;
boost::split(names, allNames, boost::is_any_of(","));
for (auto name : names) {
char buffer2[bufferSize] = {};
if (!DAQmxFailed(DAQmxGetDevProductType(name.c_str(), buffer2, bufferSize))) {
if (expectedProductType == std::string(buffer2)) {
// match found
}
}
}
}