NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

两台电脑间如何通过GPIB卡通信

已解决!
转到解答

我现在要实现两台电脑间通过GPIB卡通信,但是在配置上遇到一系列问题。

 

首先我在两台电脑上分别装了GPIB卡,然后通过GPIB线连接。

 

打开NI Max,检测到新增一台GPIB Miscellanenous Resources,GPIB0::INTFC,双击打开VISA Interactive Control,选择Input/Output, 点击Query,报错提示:“VISA: (Hex 0xBFFF003A) 由于安装程序非法(属性已被设置为不一致状态),将无法开始操作。”

 

 

社区有搜索到相关内容,链接如下:http://digital.ni.com/public.nsf/allkb/321A97B3D0D4ECCA86256E62004A0CD5,但是不够详细,里面提到的相关命令在GPIB Control输入后都提示“未检测到侦听器(NRFD和NDAC均被置为无效)。”

 

求教各位大神,有知道应该怎么配置的吗?

 

0 项奖励
1 条消息(共 3 条)
3,409 次查看
解答
已被主题作者 hygyh 接受

这个问题我已经解决了。 按照下面链接这个步骤即可。之前测试面板理解错误,一直在用Visa的测试面板,无法发送指令,所以没有进展。安装ni-488.2之后,按照链接步骤的设置即可解决。

 

 

 

Non-Controller需要设置一下,代码如下:

GpibInterface theGpibInterface = new GpibInterface("GPIB0");
theGpibInterface.IsSystemController = false;
theGpibInterface.PrimaryAddress = 23;

 

Controller可以直接Open就可以write和read了,前提是Non-Controller需要先执行上面的代码,才能检测到。

代码如下:

var rmSession = new ResourceManager();
var resources = rmSession.Find("(ASRL|GPIB|TCPIP|USB)?*");
Regex theGPIBRegex = new Regex(@"GPIB(\d)::(?<value>\d+)::INSTR");
string theGPIBTarget = resources.FirstOrDefault(x => theGPIBRegex.IsMatch(x));
MessageBasedSession mbSession = (MessageBasedSession)rmSession.Open(theGPIBTarget);

 

 

但解决通信问题后产生了新的问题,如何起监听服务来监听对方随时可能发过来的信息?

 

 

http://digital.ni.com/public.nsf/allkb/321A97B3D0D4ECCA86256E62004A0CD5

0 项奖励
2 条消息(共 3 条)
3,317 次查看

你好,请问您的两个GPIB连接上之后,在NI中是显示已连接上吗,我的只显示本电脑上的GPIB卡,扫描仪器会显示仪器连接失败,按照链接中去做,第一步中:ibfind GPIB0,就会报错,显示占用或未连接上;且我电脑上的GPIB卡的名称在IBIC中显示是空。请问您能帮忙解答一下吗

0 项奖励
3 条消息(共 3 条)
1,452 次查看