关于NI-VISA库的一个疑问

碎碎念 2015-03-09 03:10:33
需要通过一台计算机同时控制两台泰克示波器,程序库用的是ni-visa,开发平台qt,
原有的设计是这样的:

class A1
{
public:
int cnn();
public:
ViSession rm;
ViPSession vi;
};


class A2
{
public:
int cnn();
public:
ViSession rm;
ViPSession vi;
};

int A1::cnn()
{
viOpenDefaultRM(&rm);
viOpen(..., vi); //...为省略的前面的参数
}

int A2::cnn()
{
viOpenDefaultRM(&rm);
viOpen(..., vi);
}


主程序内开了两个线程,一个线程负责一台示波器的读写,但是,有一个问题就是不能同时控制两台设备,设备1连接成功后,在连接设备2,设备2虽然连接成功,但是这是在对设备1读写的时候会发生错误,错误代码 VI_ERROR_INV_SESSION /
VI_ERROR_INV_OBJECT 错误代码的解释The given session or object reference is invalid ,
原本我以为问题可能处在一台计算机只能有一个rm,但是这样即使rm设置为全局变量,两个线程公用一个rm,也是出现同样的问题,连上第二台设备,第一台就出问题了,
有知道这种情况应该怎么处理吗?
是因为ni-visa本身就不支持同时控制两台设备?(在ni-visa的手册了没有关于是否能同时控制多台设备的说明)
还是应该换一种处理方式?
...全文
486 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xjjspace 2015-07-02
  • 打赏
  • 举报
回复
楼主你好,能介绍下如何用QT环境在使用NI-VISA库来读取下位机信息么。。。刚接触这一块,不是很懂。谢谢。
赵4老师 2015-03-18
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
试试使用多进程。
连标点符号在内,一个字值5分!
赵4老师 2015-03-09
  • 打赏
  • 举报
回复
试试使用多进程。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧