基于VISA的编程中,ViString与CString之间转换的关系
2014-08-16 15:55
423 查看
最近又重新拾起了基于VISA的编程,对Agilent的U2700系列进行控制。
调试过程中想到用自己的界面向仪器发送“文本指令”,手动输入SCPI标准指令,在viPrintf()函数中涉及到了第二个变量需要时ViString的情况。
直接将CString放到函数里是不成功的,
代码如下:
提示错误:
错误 1
error C2664: “ViStatus viPrintf(ViSession,ViString,...)”: 无法将参数 2 从“CString”转换为“ViString”
显然,ViString与CString之间还是有区别的,相同情况下,由ViString向CString赋值是不存在问题的,如此看来ViString的格式中比CString要多点东西。
Agilent关于ViString的一些说明,在这里复制一下:
VISA Type Definitions(Parts)
这样看来,其实ViString和CString本质上都是地址无疑,但是为什么会是单向传输呢?
使用了各种强制转换后,各种变形后,还是不行。
不过好在幸好Aglient自己提供的有VISA Assistant,在其中使用指令发送调制,并且显示C Code
由其现实的代码可以发现,每条指令后都会自己附加“\n”
这一看来,会不会是文字指令同样是CString,只不过在发送的的时候作为viPrintf()的第二个参数时附加了“\n”??!!
索性试一下,代码就成了:
神奇的事情就发生了!不报错了,编译通过,自己的界面中向一起发送指令控制也成功了!
苦恼了一天的问题,原来就出在这里!所以跟大家分享一下经验!
在这里的第一篇代码博客,希望能看懂吧大家,最好能给紧迫需要的人以帮助!
调试过程中想到用自己的界面向仪器发送“文本指令”,手动输入SCPI标准指令,在viPrintf()函数中涉及到了第二个变量需要时ViString的情况。
直接将CString放到函数里是不成功的,
代码如下:
</pre><pre name="code" class="cpp">CString m_TestCommand; viPrintf(instr, m_TestCommand );
提示错误:
错误 1
error C2664: “ViStatus viPrintf(ViSession,ViString,...)”: 无法将参数 2 从“CString”转换为“ViString”
显然,ViString与CString之间还是有区别的,相同情况下,由ViString向CString赋值是不存在问题的,如此看来ViString的格式中比CString要多点东西。
Agilent关于ViString的一些说明,在这里复制一下:
VISA Data Type | Definition | Description |
ViString | ViPChar | The location of a NULL-terminated ASCII string. |
ViPChar | ViChar * | The location of a ViChar. |
ViChar | char | An 8-bit integer representing an ASCII character. |
使用了各种强制转换后,各种变形后,还是不行。
不过好在幸好Aglient自己提供的有VISA Assistant,在其中使用指令发送调制,并且显示C Code
由其现实的代码可以发现,每条指令后都会自己附加“\n”
这一看来,会不会是文字指令同样是CString,只不过在发送的的时候作为viPrintf()的第二个参数时附加了“\n”??!!
索性试一下,代码就成了:
CString m_TestCommand; viPrintf(instr, m_TestCommand + "\n");
神奇的事情就发生了!不报错了,编译通过,自己的界面中向一起发送指令控制也成功了!
苦恼了一天的问题,原来就出在这里!所以跟大家分享一下经验!
在这里的第一篇代码博客,希望能看懂吧大家,最好能给紧迫需要的人以帮助!
相关文章推荐
- CString const char*与char*之间的转换关系
- atitit.基于组件的事件为基础的编程模型--服务器端控件(1)---------服务器端控件和标签之间的关系
- GDI+编程的肤浅使用及Char ,CString,WCHAR 之间的转换小结
- CString const char*与char*之间的转换关系
- CString const char*与char*之间的转换关系
- CString const char*与char*之间的转换关系
- 【编程拾遗】VC++中LPCTSTR、CString、char *、string之间的相互转换
- CString const char*与char*之间的转换关系
- 【C++】MFC中的CString和std::string,以及两者之间的相互转换(基于VS201X版本)
- GDI+编程的肤浅使用及Char ,CString,WCHAR 之间的转换
- GDI+编程的肤浅使用及Char ,CString,WCHAR 之间的转换小结
- CString const char*与char*之间的转换关系
- 转贴 CString与int、char*、char[100]之间的转换
- CString, BSTR, LPCTSTR之间得关系和区别
- Int,Float,Char *,CString之间的转换
- sring与Cstring之间的转换
- CString 与 char 与 BYTE 之间的转换
- vc中常用的几个数据转换方法-int char* float与CString 之间的转换
- CString,int,string,char*之间的转换
- CString ,BSTR ,LPCTSTR之间关系和区别