如何通过C#在Visual Studio中远程控制Aim-TTi CPX400DP电源?
Aim-TTi CPX400DP 电源C#远程控制实现方案
一、核心原理说明
Aim-TTi CPX400DP支持SCPI标准指令集,通过USB转串口(COM口)完成通信,无需依赖NiMax工具,直接用C#自带的串口类即可实现数据收发。
二、C#实现步骤
1. 串口参数配置
根据电源手册,固定参数如下:
- 波特率:9600
- 数据位:8
- 停止位:1
- 奇偶校验:无
- 流控制:无
2. 完整代码示例
使用System.IO.Ports.SerialPort类完成通信,以下是可直接测试的基础控制代码:
using System; using System.IO.Ports; public class CPX400DPController { private readonly SerialPort _serialPort; public CPX400DPController(string portName) { _serialPort = new SerialPort( portName, 9600, Parity.None, 8, StopBits.One ); _serialPort.ReadTimeout = 1000; _serialPort.WriteTimeout = 1000; } // 建立串口连接并验证设备 public void Connect() { if (!_serialPort.IsOpen) { _serialPort.Open(); string deviceId = SendCommand("*IDN?"); Console.WriteLine($"设备识别:{deviceId}"); } } // 发送SCPI指令并获取返回值 public string SendCommand(string command) { if (!_serialPort.IsOpen) throw new InvalidOperationException("串口未连接"); _serialPort.WriteLine($"{command}\r\n"); return _serialPort.ReadLine().Trim(); } // 设置输出电压 public void SetVoltage(double voltage) => SendCommand($"VOLT {voltage:F2}"); // 设置输出电流 public void SetCurrent(double current) => SendCommand($"CURR {current:F3}"); // 开启输出 public void EnableOutput() => SendCommand("OUTP ON"); // 关闭输出 public void DisableOutput() => SendCommand("OUTP OFF"); // 断开串口连接 public void Disconnect() { if (_serialPort.IsOpen) _serialPort.Close(); } } // 测试用例 class Program { static void Main() { var controller = new CPX400DPController("COM4"); try { controller.Connect(); controller.SetVoltage(5.0); controller.SetCurrent(1.0); controller.EnableOutput(); Console.WriteLine("电源输出已开启"); } catch (Exception ex) { Console.WriteLine($"通信异常:{ex.Message}"); } finally { controller.Disconnect(); } } }
3. 关键注意事项
- 确保电源USB驱动已正确安装,设备管理器中能正常识别出COM4(无黄色感叹号)
- 运行代码前关闭所有占用该COM口的程序(包括NiMax)
- SCPI指令需以
\r\n结尾,否则设备可能无法识别 - 更多指令可参考电源官方手册,核心指令与多数SCPI兼容设备一致
三、NiMax问题说明
NiMax仅用于NI自有设备的配置,Aim-TTi的USB转串口设备属于系统标准串口设备,无需通过NiMax配置,因此面板中无操作选项是正常现象,直接使用系统串口即可。
内容的提问来源于stack exchange,提问作者St3althPatchin
相关产品推荐
相关产品推荐

