时间结构在刚创建的时候,默认的事件就是超时事件,他表示当事件结构结构内的任何事件都没有触发达到设定的时间时,超时事件触发,执行超时事件框内对应的代码。
对于你所要求的定时自动发送命令,设定的间隔时间其实就是超时时间,当然事件结构内也可以添加其他事件,手动发送命令。
超时事件的超时时间的输入端,位于事件结构的左上角的沙漏状的图标处,数据类型是有符号32位整形数,单位毫秒。当超时时间设置为-1时表示从不执行超时事件,一直等待,也可以理解为禁用了超时事件。
值得注意的是当你把事件结构放在while循环中,事件结构会循环执行,那么超时时间设为定值的话超时事件没法停止,使用起来不太方便。可以通过控制超时时间的设定值来作为自动发送的开关。说的稍有复杂,我写了个简单地模板,见附件,你看一看也许就明白了。下面给一个程序的截图。
你先试一下用MAX里面的与仪器通信发这些命令有没有问题。
你说能找到GPIB0的接口,那你的仪器有没有被扫描出来?
你附图,我的GPIB卡连了3个仪器,在VISA资源下面就已经有了自动扫描出的3个仪器的资源名称。
没有这些你就没法通信的。
如果这些你都有,那就试一下第一行,如果通信也是可以的,那就是程序的问题了。
根据你的说法,通信时没有问题了
那你用你写的程序发*IDN?可不可以,如果也行那就是你后面发的命令的问题了。跟那个I/O没啥关系了。
你再好好看下手册的命令描述,范例里面的命令有的时候是比较老的,不一定支持现在的仪器,你也可以执行下范例看行不行呀。
另外,要注意有些命令是没有返回值的,这样你在读 *** 作时当然会出错的,而一些测量的,比如说VOLT?之类的,你发下去最好要延时一下再去读的。
另外,建议你这些命令,你都用MAX里面的与仪器通信先试一下,哪些有返回值,哪些没有,再放到程序里面。
补:
询问:发送命令,并自动读取返回值,适用于有返回值的命令
发送:单纯的发送命令到设备
读取:从设备读取值,发送与读取一起用等同于询问,不过一个是自动,一个是手动。
比如说*IDN?,你点询问可以,你可以点下发送,再点读取也是一样。
你图中发的那个命令是 *** 作命令,没有返回值的吧,应该点发送,然后看仪器状态是否变化。发查询命令的时候,基本上后面有个‘?’,用询问才可以的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)