求教,用c语言基于VISA驱动,实现安捷伦和usb设备通讯采集数据

delylin 2016-05-16 08:28:15
用c语言编写采集软件基于VISA驱动,实现和usb设备通讯采集数据的功能。
问题来源:之前用的是安捷伦34970a采集数据,C++编写的采集软件,采用安捷伦提供的rs232通讯接口代码,可以正常采集数据;由于设备更新换成安捷伦34792a的采集仪, 坑爹的没有rs232通讯功能,只有报警功能,只能使用usb和电脑连接,需要修改代码,求高手帮忙?问了好多人,都不了解visa。
我就贴出一段安捷伦提供的rs232 的open_port这段代码,全码我放网盘里地址:http://pan.baidu.com/s/1miguXOs
USB的地址:USB0::0x3923::0x12C0::00B50DAE::INSTR

 void open_port()
//************************************************************************************
// This function opens a port (the communication between the instrument and computer).
// Be sure that the GPIB address has been set in the 'GPIBAddr' variable before
// calling this routine.
//************************************************************************************
{
long start,finish;
char ch;

// Open the Visa session
errorStatus = viOpenDefaultRM(&videfaultRM);

// Open communication to the instrument
errorStatus = viOpen(videfaultRM, "ASRL1::INSTR", VI_TRUE, VI_TRUE, &vi);
// If an error occurs, give a message
if (errorStatus < VI_SUCCESS)
{
printf("Unable to Open port; check address.\nPress any key to exit.");
scanf("%c", &ch);
exit(1);
}

// Set the RS-232 parameters; refer to the 34970A and VISA documentation
// to change the settings. Make sure the instrument and the following
// settings agree.
errorStatus = viSetAttribute(vi, VI_ATTR_ASRL_BAUD, 115200);
errorStatus = viSetAttribute(vi, VI_ATTR_ASRL_DATA_BITS, 8);
errorStatus = viSetAttribute(vi, VI_ATTR_ASRL_PARITY, VI_ASRL_PAR_NONE);
errorStatus = viSetAttribute(vi, VI_ATTR_ASRL_STOP_BITS, VI_ASRL_STOP_ONE);
errorStatus = viSetAttribute(vi, VI_ATTR_ASRL_FLOW_CNTRL, VI_ASRL_FLOW_XON_XOFF);

// Set the instrument to remote
send_cmd ("SYSTem:REMote");

// Wait 1 second
time(&start);
finish=start + 1;
do
{
time(&start);
} while (start < finish);

}
...全文
935 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xgx6241 2017-11-07
  • 打赏
  • 举报
回复
请问实现了吗?求教

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧