完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好。
我在插槽2中使用34980A和34950A模块。所有通道都配置了NORMal POLarity,ACtive DRIVe和4.0的LEVel。 我为LongWORD WIDTh配置了2101。 如果我将LWORd写入2101,则只更改2101的第1个字节(2102-2104永远不会改变状态)。如果我切换到2101-2104的BYTE宽度,所有32个通道的写入按预期工作,所以我知道硬件是 OK.This从前面板发生,当使用...-> IO-> WriteString()时,以及使用...-> PutWidth()/ - > PutDirection()/..-> Output-> PutDrive( ),...-> Output-> PutVoltLevel()和...-> WriteLongWord()。 我看到与2201-2204相同的错误行为。 如果我使用2个WORD而不是1个LWORd,我也会看到类似的错误行为。我已经为以下Visual C ++ IVI代码附加了IO Monitor数据:(在代码后继续发布)///////////// ////////////////////////////////////////////////// ///////////////////// lxi-> System-> IO-> WriteString(“CONF:DIG:WIDT LWOR,(@ 2101) n”,VARIANT_TRUE) ; lxi-> System-> IO-> WriteString(“CONF:DIG:WIDT?(@ 2101) n”,VARIANT_TRUE); _ bstr_t resp = lxi-> System-> IO-> ReadString(); lxi-> System - > IO-> WriteString(“CONF:DIG:POL NORM,(@ 2101) n”,VARIANT_TRUE); lxi-> System-> IO-> WriteString(“SOUR:DIG:DRIV ACT,(@ 2101) n“,VARIANT_TRUE); lxi-> System-> IO-> WriteString(”SOUR:DIG:LEV 4,(@ 2101) n“,VARIANT_TRUE); if(enable)lxi-> System-> IO-> WriteString (“SOUR:DIG:DATA:LWOR #hFFFFFFFF,(@ 2101) n”,VARIANT_TRUE); elselxi-> System-> IO-> WriteString(“SOUR:DIG:DATA:LWOR 0,(@ 2101) n “,VARIANT_TRUE); ///////////////////////////////////////////// ////////////////////////////////// lxi->系统 - > IO-> WriteString(“CONF:DIG: WIDT BYTE,(@ 2201) n“,VARIANT_TRUE) ; lxi->系统 - > IO-> WriteString(“CONF:DIG:WIDT? (@ 2201) n“,VARIANT_TRUE); resp = lxi-> System-> IO-> ReadString(); lxi-> System-> IO-> WriteString(”CONF:DIG:WIDT BYTE,(@ 2202) n“,VARIANT_TRUE); lxi-> System-> IO-> WriteString(”CONF:DIG:WIDT?(@ 2202) n“,VARIANT_TRUE); resp = lxi-> System-> IO-> ReadString(); lxi-> System-> IO-> WriteString(“CONF:DIG:WIDT BYTE,(@ 2203) n”,VARIANT_TRUE); lxi-> System-> IO-> WriteString(“CONF:DIG:WIDT?(@) 2203) n“,VARIANT_TRUE); resp = lxi-> System-> IO-> ReadString(); lxi-> System-> IO-> WriteString(”CONF:DIG:WIDT BYTE,(@ 2204) n“ ,VARIANT_TRUE); lxi-> System-> IO-> WriteString(“CONF:DIG:WIDT?(@ 2204) n”,VARIANT_TRUE); resp = lxi-> System-> IO-> ReadString(); lxi- > System-> IO-> WriteString(“CONF:DIG:POL NORM,(@ 2201) n”,VARIANT_TRUE); lxi-> System-> IO-> WriteString(“CONF:DIG:POL NORM,(@ 2202) ) n“,VARIANT_TRUE); lxi-> System-> IO-> WriteString(”CONF:DIG:POL NORM,(@ 2203) n“,VARIANT_TRUE); lxi-> System-> IO-> WriteString(” CONF:DIG:POL NORM,(@ 2204) n“,VARIANT_TRUE); lxi-> System-> IO-> WriteString(”SOUR:DIG:DRIV ACT,(@ 2201) n“,VARIANT_TRUE); lxi- >系统 - > IO-> w ^ riteString(“SOUR:DIG:DRIV ACT,(@ 2202) n”,VARIANT_TRUE); lxi-> System-> IO-> WriteString(“SOUR:DIG:DRIV ACT,(@ 2203) n”,VARIANT_TRUE) ; lxi-> System-> IO-> WriteString(“SOUR:DIG:DRIV ACT,(@ 2204) n”,VARIANT_TRUE); lxi-> System-> IO-> WriteString(“SOUR:DIG:LEV 4, (@ 2201) n“,VARIANT_TRUE); lxi-> System-> IO-> WriteString(”SOUR:DIG:LEV 4,(@ 2202) n“,VARIANT_TRUE); lxi-> System-> IO-> WriteString(“SOUR:DIG:LEV 4,(@ 2203) n”,VARIANT_TRUE); lxi-> System-> IO-> WriteString(“SOUR:DIG:LEV 4,(@ 2204) n”,VARIANT_TRUE) ; if(enable){lxi-> System-> IO-> WriteString(“SOUR:DIG:DATA:BYTE #hFF,(@ 2201) n”,VARIANT_TRUE); lxi-> System-> IO-> WriteString( “SOUR:DIG:DATA:BYTE #hFF,(@ 2202) n”,VARIANT_TRUE); lxi-> System-> IO-> WriteString(“SOUR:DIG:DATA:BYTE #hFF,(@ 2203) n “,VARIANT_TRUE); lxi-> System-> IO-> WriteString(”SOUR:DIG:DATA:BYTE #hFF,(@ 2204) n“,VARIANT_TRUE);} else {lxi-> System-> IO-> WriteString(“SOUR:DIG:DATA:BYTE 0,(@ 2201) n”,VARIANT_TRUE); lxi-> System-> IO-> WriteString(“SOUR:DIG:DATA:BYTE 0,(@ 2202) n “,VARIANT_TRUE); lxi-> System-> IO-> Wri teString(“SOUR:DIG:DATA:BYTE 0,(@ 2203) n”,VARIANT_TRUE); lxi-> System-> IO-> WriteString(“SOUR:DIG:DATA:BYTE 0,(@ 2204) n “,VARIANT_TRUE);} //////////////////////////////////////////// ////////////////////////////////////////“CONF:DIG:WIDT?”查询 (以及前面板)表明2101-2104被分组为32位LWORd.Am我误解了WORD / LWORd访问应该如何工作?TIA。 IOMonitorLog.xml62.8 KB 以上来自于谷歌翻译 以下为原文 Hi. I am using a 34980A with a 34950A module in slot 2. All channels configured with NORMal POLarity, ACTive DRIVe, and a LEVel of 4.0. I configure 2101 for a LongWORD WIDTh. If I write a LWORd to 2101, only the 1st byte of 2101 is changed (2102-2104 never change state). If I switch to BYTE width for 2101-2104, writes to all 32 channels work as expected so I know the hardware is OK. This happens from the front panel, when using ...->IO->WriteString(), and when using ...->PutWidth()/->PutDirection()/..->Output->PutDrive(), ...->Output->PutVoltLevel(), and ...->WriteLongWord(). I see the same incorrect behavior with 2201-2204. I also see similar incorrect behavior if I use 2 WORDs instead of 1 LWORd. I have attached IO Monitor data for the following Visual C++ IVI code: (post continues after the code) //////////////////////////////////////////////////////////////////////////////////// lxi->System->IO->WriteString("CONF:DIG:WIDT LWOR,(@2101)n", VARIANT_TRUE); lxi->System->IO->WriteString("CONF:DIG:WIDT? (@2101)n", VARIANT_TRUE); _bstr_t resp = lxi->System->IO->ReadString(); lxi->System->IO->WriteString("CONF:DIG:POL NORM,(@2101)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:DRIV ACT,(@2101)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:LEV 4,(@2101)n", VARIANT_TRUE); if (enable) lxi->System->IO->WriteString("SOUR:DIG:DATA:LWOR #hFFFFFFFF,(@2101)n", VARIANT_TRUE); else lxi->System->IO->WriteString("SOUR:DIG:DATA:LWOR 0,(@2101)n", VARIANT_TRUE); /////////////////////////////////////////////////////////////////////////////// lxi->System->IO->WriteString("CONF:DIG:WIDT BYTE,(@2201)n", VARIANT_TRUE); lxi->System->IO->WriteString("CONF:DIG:WIDT? (@2201)n", VARIANT_TRUE); resp = lxi->System->IO->ReadString(); lxi->System->IO->WriteString("CONF:DIG:WIDT BYTE,(@2202)n", VARIANT_TRUE); lxi->System->IO->WriteString("CONF:DIG:WIDT? (@2202)n", VARIANT_TRUE); resp = lxi->System->IO->ReadString(); lxi->System->IO->WriteString("CONF:DIG:WIDT BYTE,(@2203)n", VARIANT_TRUE); lxi->System->IO->WriteString("CONF:DIG:WIDT? (@2203)n", VARIANT_TRUE); resp = lxi->System->IO->ReadString(); lxi->System->IO->WriteString("CONF:DIG:WIDT BYTE,(@2204)n", VARIANT_TRUE); lxi->System->IO->WriteString("CONF:DIG:WIDT? (@2204)n", VARIANT_TRUE); resp = lxi->System->IO->ReadString(); lxi->System->IO->WriteString("CONF:DIG:POL NORM,(@2201)n", VARIANT_TRUE); lxi->System->IO->WriteString("CONF:DIG:POL NORM,(@2202)n", VARIANT_TRUE); lxi->System->IO->WriteString("CONF:DIG:POL NORM,(@2203)n", VARIANT_TRUE); lxi->System->IO->WriteString("CONF:DIG:POL NORM,(@2204)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:DRIV ACT,(@2201)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:DRIV ACT,(@2202)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:DRIV ACT,(@2203)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:DRIV ACT,(@2204)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:LEV 4,(@2201)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:LEV 4,(@2202)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:LEV 4,(@2203)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:LEV 4,(@2204)n", VARIANT_TRUE); if (enable) { lxi->System->IO->WriteString("SOUR:DIG:DATA:BYTE #hFF,(@2201)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:DATA:BYTE #hFF,(@2202)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:DATA:BYTE #hFF,(@2203)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:DATA:BYTE #hFF,(@2204)n", VARIANT_TRUE); } else { lxi->System->IO->WriteString("SOUR:DIG:DATA:BYTE 0,(@2201)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:DATA:BYTE 0,(@2202)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:DATA:BYTE 0,(@2203)n", VARIANT_TRUE); lxi->System->IO->WriteString("SOUR:DIG:DATA:BYTE 0,(@2204)n", VARIANT_TRUE); } //////////////////////////////////////////////////////////////////////////////////// The "CONF:DIG:WIDT?" queries (as well as the front panel) indicate that 2101-2104 are grouped as a 32-bit LWORd. Am I misunderstanding how the WORD/LWORd access should work? TIA. 附件
|
|
相关推荐
1个回答
|
|
疑难杂症!
我自己和这个人进行了很多战斗。 如果您仔细阅读命令参考,您将看到一些含糊不清的评论,“所选电压电平适用于指定通道,与当前通道宽度无关(参见SOURce:DIGital:DATA [:]命令)。”所有 设置该模式后,其他命令将应用于长字。 但是,即使您正在编写长字,也可以为每个字节设置不同的级别。 所以你必须为每个字节设置级别。 SOUR:DIG:LEV 4,(@ 2101:2103)即使你设置了CONF:DIG:WIDT LWOR,(@ 2101)。 以上来自于谷歌翻译 以下为原文 Gotcha! I had quite a battle with this myself. If you read the command reference very carefully you will see the somewhat cryptic remark, "The selected voltage level applies to the specified channel, independent of the current channel width (see SOURce:DIGital:DATA[:] command)." All of the other commands apply to the long word after you set that mode. However, you can have different levels for each byte even though you are writing a long word. So you have to set the level for each byte. SOUR:DIG:LEV 4,(@2101:2103) even when you have set CONF:DIG:WIDT LWOR,(@2101). |
|
|
|
只有小组成员才能发言,加入小组>>
1133 浏览 0 评论
2320 浏览 1 评论
2114 浏览 1 评论
1985 浏览 5 评论
2859 浏览 3 评论
879浏览 1评论
关于Keysight x1149 Boundary Scan Analyzer
648浏览 0评论
N5230C用“CALC:MARK:BWID?”获取Bwid,Cent,Q,Loss失败,请问大佬们怎么解决呀
750浏览 0评论
1448浏览 0评论
1133浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-20 11:24 , Processed in 1.381869 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号