C#写的34401A串口232数据读取程序

本文介绍如何使用C#通过串口与Agilent34401A进行通讯,并提供了设置方法及示例代码。介绍了设置仪器参数的方法、串口线制作细节、使用.NET Framework 2中SerialPort组件注意事项等。

 

首先呢,请先设置惠普表为Talk only模式,也就是31,还不明白的自己查手册去

另外,各个表设置不一样,比如我这里2块表就不一样,一块是7位数据位,even校验;另一块是8位数据位,none校验。具体的可以看看表里的i/o那里的设置。

数据线的做法,9pin的线,2,3交叉,4,6交叉,7,8交叉,其他直连

我使用的是.net formworks2里面的serialport这个组件,唯一要注意的是sp1.DtrEnable = Enabled;这个一定要打开,不然接不到数据。

另附上我写的一个小程序源码,学习c#的第一个程序,写的不是很好,不过能用了

http://anerg.ys168.com

 

 

 

刚刚通过调试的C#代码用于Agilent 34401A 串口通讯。

 

  1. 先设置34401A 的 Interface 为 RS232, Baud Rate 为9600, Parity 为 NON: 8 BITS。
  2. 下面为测试电压和电流的代码片段
SerialPort serialPort = new SerialPort("COM3");
serialPort.DtrEnable = true;
serialPort.Open();
serialPort.WriteLine("SYST:REM");
serialPort.WriteLine("*CLS");

serialPort.WriteLine("TRIG:SOUR IMM");

serialPort.WriteLine("MEAS:VOLT:DC? AUTO, MIN");
var v = double.Parse(serialPort.ReadLine());

serialPort.WriteLine("MEAS:CURR:DC? AUTO, MIN");
var i = double.Parse(serialPort.ReadLine());

 

 

MEAS:VOLT?  取电源输出的电压

MEAS:CURR?  读取电源的输出电流

MEAS:POW?   读取电源的输出功率

MEAS:DVM?   读取电压表的输入电压

MEAS:RES?   读取毫欧表的电阻值


*STB?      用来读取状态位寄存来的值,该命令执行后,寄存器被清零

CALibration:CURRent 返回给电源当前标定点的实际输出电流值


STATus:QUEStionable:CONDition?    用来读取查询条件寄存器的值

STATus:QUEStionable:ENABle    用来读取查询时间寄存器中的值

STATus:OPERation:ENABle  用来读取操作时间寄存器的值

ONPut:STATe?   用来控制电源输出的开启和关闭


IDN?  必须是命令字符串中的最后一个查询命令 IDN?:SYST:VERS?


CONFigure  ENTER





*rst

SYSTem:REMote

MEAS:CURR?

 

 

 关于可以发送SCPI指令,收不到信号:

           本以为是内部的通信需要设置,试了试还是不行,最终换成了USB转串口的线,接上设备本身的线,这样通信就正常了

转载于:https://www.cnblogs.com/anbylau2130/archive/2013/05/06/3063202.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值