版主大哥,关于字符串format into string和scan from string的问题
我从NI的网站上下载的"Agilent E441X双通道功率计"的驱动, 用它试着连通"Agilent N1912A双通道功率计"(因为我知道N1912A是E441X的新一代,但它们的基本功能是一样的)。但是有些VI能够连通N1912A,而凡是包括format into string 和scan from string这两个函数的VI,都会报同样的错误————“产生错误85,在Utility Default Instrument Setup里扫描一个string(arg1)失败”可能的原因是“扫描失败,输入的string里不包括一些format string等待的数据”.想问一下大家这是怎么回事,应该怎么解决呢?谢谢了先!!!!!!!!!!!!
[ 本帖最后由 jazzgirl 于 2007-6-11 03:50 编辑 ] Format string有这几种形式: “%[^,],E44%ld%[^\n]”
“%.;%Le”
“;:UNIT%ld: POW%s”
它们分别是什么意思呢?
[ 本帖最后由 jazzgirl 于 2007-6-9 07:18 编辑 ] 比如说在一个VI程序里:
第一个 "VISA Write"写入一个默认串设置:"*CLS;*ESE 60;:STAT:OPER:NTR 65535;:FORM:READ: DATA ASC"
仅接着第二个"VISA Write"写入命令为"*IDN?"
然后是"VISA Read",它的“byte count”是"512"
“VISA READ”连着“多字符串的格式化整合scan from string",它的“格式化字符串format string”是“%[^,],E44%ld%[^\n]"
我理解是用这个命令"*IDN?"和格式化要求“%[^,],E44%ld%[^\n]",把输入串"*CLS;*ESE 60;:STAT:OPER:NTR 65535;:FORM:READ: DATA ASC"变成想要的串形式,ERROR OUT显示是 VISA WRITE错误,
提示说:“一个输入参数无效”,那么这个输入参数是指*CLS;*ESE 60;:STAT:OPER:NTR 65535;:FORM:READ: DATA ASC里面的吗,如果是的话,应该怎样查它里面是什么无效呢?
提示还说:“错误码(code error)没有被定义,也没有任何关于错误码的描述;或者是可能连线了一个数字,这个数字不是错误码输入的错误码。” 这是什么意思呢?这个错误码应该在哪里定义呢?
多谢大家了,帮帮忙吧 :(
[ 本帖最后由 jazzgirl 于 2007-6-9 07:27 编辑 ] 我觉得这个E441X的驱动是从NI的网站上下载的,应该不会有错误,问题在于我用它连接的是
N1912A,虽然有些VI能够连通,但以上这些不能够连通的VI可能就是N1912A和E441X的区别所在,所以VISA WRITE的输入串会不被FORMAT STRING认识,
但是我应该怎样查这些输入的字符串分别对应的是E441X的那些功能呢,以此来确定我应该怎样改动这些字符串来适应N1912A的要求呢?
大家给出出主意吧,帮帮小妹吧 !! 既然你下载的是E441×的驱动 那程序在回传仪器型号ID时候回回传有关E441×的东东
所以你可以去掉这一部分,应该对你的仪器使用不会有影响的
我所认为的×IDN? 这个命令是为了获取仪器的型号之类的信息 所以去掉也无所谓的·· 既然你下载的是E441×的驱动 那程序在回传仪器型号ID时候回回传有关E441×的东东
所以你可以去掉这一部分,应该对你的仪器使用不会有影响的
我所认为的×IDN? 这个命令是为了获取仪器的型号之类的信息 所以去掉也无所谓的·· 这个是ni的forums上搜索到的
You can try the LabVIEW driver for the Agilent E441X Series Power Meters available on the NI Instrument Driver Network.I'm not sure how compatible the N1911 and N1912 models are with the E441X but it might be worth a try.You will need to disable the ID Query in the Initialize VI before calling other VIs.At the least, you can look at the source code and it can give you an idea of how to use the instrument commands to communicate with an Agilent power meter.
仪器控制主要还是要了解他的控制的命令,你找下这两仪器的说明书的可以了,既然是一个系列的,就应该差不多了
[ 本帖最后由 飞雨天 于 2007-6-12 12:29 编辑 ] 您好,谢谢,您还能告诉我,以下几个字符串分别是什么意思吗?谢谢了先
1:第一个VISA WRITE是*CLS;*ESE 60;:STAT:OPER:NTR 65535;:FORM:READ: DATA ASC
第二个VISA WRITE是*IDN?
然后一个VISA READ是512
这是想实现什么功能呢?
2: %[^,],E44%ld%[^\n]是想实现对输入字符串的什么处理呢?
3:;:UNIT%ld: POW%s和%.;%Le呢?
高手大哥,版主大哥,近来看看吧,谢谢!!!!!!!!!!!!!!!!
呵呵
前2天出差了。44系列的功率计和N型的不太一样,不能直接用的。所以你说的:“VISA READ”连着“多字符串的格式化整合scan from string",它的“格式化字符串format string”是“%[^,],E44%ld%[^\n]",明显可以看到有一个是只对E44系列的操作,你去控制N1912肯定就不行了。
你需要看N1912的programming guide.
*CLS;*ESE 60;:STAT:OPER:NTR 65535;:FORM:READ: DATA ASC,
这个应该是先清线上数据,然后设置操作状态,然后读取数据,ASCALL码形式的。具体也不一定对,要看操作手册。
如果做的工作不复杂,直接用VISA的读写VI就可以了,不需要用驱动的。
我用驱动,很多也要做自己的简化工作,NI直接下的驱动往往比较繁复,考虑的问题太多。
3步,
1、看你需要操作的仪器的说明书,主要是编程手册。
2、用MAX试试看,相对应的动作,应该就是你相对应发过去的命令。这个命令是要你自己在手册中找的。如果你DOWN了这个仪器的驱动,那么能在驱动中看到,固定的字符串。
3、编写自己的程序。可以根据自己的应用做自己的驱动,包装成自己的一个VI,下次用就方便了。
啊,这里有
You can try the LabVIEW driver for the Agilent E441X Series Power Meters available on the NI Instrument Driver Network.I'm not sure how compatible the N1911 and N1912 models are with the E441X but it might be worth a try.You will need to disable the ID Query in the Initialize VI before calling other VIs.At the least, you can look at the source code and it can give you an idea of how to use the instrument commands to communicate with an Agilent power meter.前面没注意看飞雨天老兄的回帖。
这里说的很明白了,你需要先在初始化的VI中屏蔽掉查询仪器ID的操作。You will need to disable the ID Query in the Initialize VI before calling other VIs。
可能这2个功率计的命令格式是一样的,所以才会说:you can look at the source code and it can give you an idea of how to use the instrument commands to communicate with an Agilent power meter.你可以看到源程序中是如何使用安捷伦功率计的仪器命令的。 高大哥,您好,我看了N1912的programming guide, 它是关于SCPI命令语言的讲解,我也明白了*CLS;*ESE 60;:STAT:OPER:NTR 65535;:FORM:
READ: DATA ASC和*IDN?的意思了. 但现在我觉得这两个命令到不太重要了,因为这两个VISA W写入的是对仪器自身的一个鉴别,比如日期和型号,我
觉得VISA R(512)输入Scan from string的应该是: "Agilent Technologies, N1912A,<serial number>,A2.XX.YY"
所以我想问题的关键是不是在于Format string“%[^,],E44%ld%[^\n]” 发现Agilent Technologies, N1912A,<serial number>,A2.XX.YY不是
等待的结果而出错的? 所以我想把“%[^,],E44%ld%[^\n]” 里面的东西E44%ld改成N1912A相关的,但我不知道该怎么改??
我查了许多资料,但查不着%[^,], %ld%[^\n]是什么意思,您知道吗? %Le呢?
另外,怯怯的问一句,怎么先在初始化的VI中屏蔽掉查询仪器ID的操作呢?删了它吗?我是菜鸟,望大哥赐教!!!!
[ 本帖最后由 jazzgirl 于 2007-6-18 09:15 编辑 ] 还有一个问题,我在没有连接仪器的情况下,用"单步(入)执行"调试框图程序时,到scan from
string这个节点时就读不过去(但它前面的节点都能读过去),其它的一些程序也是这个问题(比如Get Status Registers.vi这个SUBVI最后有一个节点scan from string的format string是%d,也不能读过去)
这是这些程序本身有错误吗?还是什么其它的原因呢?谢谢各位大哥指教!!!!!!!!!!!!
[ 本帖最后由 jazzgirl 于 2007-6-18 10:00 编辑 ] 你看下format into string这个函数的help,里面有关于format string的详细解释,当然,光那样看是很难看懂的。。。然后你要做的就是,看下原始数据和format以后的数据,对比下,就知道这些格式究竟是怎么回事了。 怯怯的问一句,怎么先在初始化的VI中屏蔽掉查询仪器ID的操作呢?删了它吗?我是菜鸟,望大哥赐教!!!!
看程序框图
看数据流结构。直接进行你需要的操作。让数据不流经那里。或者直接删除了再重新连线。
自己多用功。这是很简单的问题。
页:
[1]
2