在做的时候找了很多资料,关于SCPI协议,说了很多,但是没我关心的。
看完通信协议的说明,我最大懵逼的一点就是到底是基于UDP还是TCP,翻了很多,一个都没讲。手册上端口号也不说明一下,参数设置里也没有端口设置或者查看的选选项。。。
结论:UDP可以,TCP不行,RS232应该可以,没去试。
机器的默认ip为192.168.0.123,端口号为7000
下面贴一下代码和中间遇到的几个坑
首先,.net6.0,之前没怎么用过串口功能,写的时候发现using System.IO.Ports;
不能用,应该为了跨平台,没集成进去,只要用nuget搜索安装一下就好了。
还有,N3600的默认协议是modbus,需要设置一下,我拿到的N3600电源屏幕是坏的,只能看到一般,啥的看不到,痛苦面具….N3410的话不用设置,而且好像也不能用modbus
还有,改完电源的ip记得重启!!!
下面贴一点示例的代码:
using System.Net.Sockets;
using System.Net;
using System.Text;
namespace _6589jk_cn
{
internal class N3410_SCPI
{
public static string CMD_通道选择 = "*IDN?";
static void Main(string[] args)
{
string ip = "192.168.0.123";
int 端口 = 7000;
int 通道 = 1;
using (UdpClient 连接目标udp = new UdpClient())
{
try
{
连接目标udp.Client.ReceiveTimeout = 3000;
连接目标udp.Connect(ip, 端口);
}
catch (Exception) { throw; }
Console.WriteLine($"发送消息:{"CMD_通道选择 + " " + 通道.ToString() + "\r\n"}");
var temp = Encoding.ASCII.GetBytes("CMD_通道选择 + " " + 通道.ToString() + "\r\n");
连接目标udp.Send(temp, temp.Length);
var t = (IPEndPoint)连接目标udp.Client.RemoteEndPoint;
var receive = 连接目标udp.Receive(ref t);
var mes = Encoding.ASCII.GetString(receive);
连接目标udp.Close();
Console.WriteLine($"接收消息:{mes}");
}
}
}
}
嘛,总之几个注意点就是询问的话是INST:NSEL?
没有空格,设置的话 INST:NSEL 1
要加空格,手册上虽然看起来确实有空格,但是复制的时候就没有空格…就很迷惑
还有就是要加上\r\n
换行
最后,吐槽一个点,感觉现在的厂家越来越不做人了,啥手册软件官网都不全,要手册软件还得打电话找客服
选型广告一应俱全,价格不写,开发资料不全,过期,甚至没有…
真的烦,哎,好久没用MCGS,现在竟然连MCGS的官网都没有软件下载了…
坏起来了
0 条评论