python gpib仪器控制_pyvisa怎么通过gpib把仪器里的文件传到pc?

VISA有三种方式:VISA32.DLL,IVI.VISA,VISA.NET。

我用C#写的。VS2019这三种都支持。PY我就不清楚了。

我代码引用的是VISA32.DLL。目前可以文件传输,但是传图片,总是文本格式

需要注意的:

1,需要看仪器手册,支不支持文件传输。如果不支持文件传输,也是传不了的。MMEM:DATA? 搜索一下这个命令,如果没有不支持,

2,更改命令分隔符,保证文件完整传输。

3,设置超时,以保证充足的时间传送文件

4,“ # “ 开头后边跟着长度位的位数,和长度。

5,VISA的底层应该是C,传出来的数据注意长度,有可能指针溢出。

SEND_VISA(vi_fse, ":SYST:COMM:GPIB:RTER EOI"); // '此命令更改分隔符。

status = viSetAttribute(Conversions.ToInteger(vi_fse), VI_ATTR_TMO_VALUE, 20000); // '设置超时

if (this.FSE_rbtnFSEU3.Checked)

{

SEND_VISA(vi_fse, ":MMEM:MSIS 'D’"); //

}

else

{

SEND_VISA(vi_fse, ":MMEM:MSIS 'C’");

} //

SEND_VISA(vi_fse, @":MMEM:CDIR '\USER\DATA\'"); //

this.SEND_VISA(vi_fse, ":MMEM:DATA? '" + this.FSE_txtHDCP.Text + ("." + lang + "'")); //

var first = new byte[17];

status = viRead(vi_fse, first, 16, out retCount);

if (status != VI_SUCCESS)

{

VisaErrorHandler(vi);

}

this.VI_txtOUT.Text = this.VI_txtOUT.Text + "+" + Conversions.ToString(retCount);

strRes = Encoding.Default.GetString(first);

this.VI_txtfinal.Text = strRes;

int x = Conversions.ToInteger(Strings.Mid(strRes, 2, 1));

int y = Conversions.ToInteger(Strings.Mid(strRes, 3, x));

var fanal = new byte[x + y + 3 + 1];

SEND_VISA(vi_fse, ":MMEM:MSIS 'C’"); //

SEND_VISA(vi_fse, @":MMEM:CDIR '\USER\DATA\'"); //

this.SEND_VISA(vi_fse, ":MMEM:DATA? '" + this.FSE_txtHDCP.Text + ("." + lang + "'")); //

string argreadFmt = "%#y";

int send = x + y + 3;

status = Form1.viScanf(vi_fse, argreadFmt, ref send,  fanal);

var fs = new FileStream(Application.StartupPath + @"\FILE." + lang, FileMode.OpenOrCreate);

fs.Write(fanal, 0, x + y + 3);

status = viSetAttribute(Conversions.ToInteger(vi_fse), VI_ATTR_TMO_VALUE, 2000); // '设置超时为默认2秒

SEND_VISA(vi_fse, ":SYST:COMM:GPIB:RTER LFEOI"); // '此命令更改分隔符。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值