通过网口 LAN 开发编程软件远程控制频谱仪DS700

 通过网口 LAN 开发编程软件远程控制频谱仪DS700

1.1硬件设备

    1)频谱仪DSA710和网线;

     2)需要频谱仪网口与电脑网口用网线连接,需要能互相Ping通IPV4地址;

2.2使用过程  

  2.1接口设置(*只需设置一次)

   1)接口选择网口LAN

    2) 点击频谱仪的System----接口设置------LAN ,出现LAN 参数设置界面。

   3)复位:关闭 DHCP 和自动 IP,打开手动 IP。

   4)手动 IP: IP 地址设置方法之一。打开手动 IP,用户可以自定义频谱仪的 IP 地址。

   5)IP: 手动设置 IP 地址、子网掩码、默认网关。

     a) 按 IP 地址 软键,使用数字键输入所需的 IP 地址。

     b) 按 子网掩码 软键,使用数字键输入所需的子网掩码。

     c) 按 默认网关 软键,使用数字键输入所需的网关地址。

     d) 按 域名服务器 软键,使用数字键输入所需的网关地址。

       需点击Enter保存;

  

    6)应用: 完成 LAN 接口参数配置后,按 应用--确定 配置生效。

 2.2 台式机静态IP设置(*只需设置一次)

  1)双击打开我的电脑,选择控制面板,选择网络和共享中心。

  2)这里用的是本地网络,就点击本地网络。

  3)点击属性,双击internet协议版本4(TCP/IPv4)。 

   4)选择使用下面的IP地址和使用下面的DNS服务器地址进行填写。(设置完成后可以在DOS窗口用ipconfig /all命令来查看)

         

  2.3开发编程软件发送命令对频谱仪进行远程控制

       按着上面2.1与2.2的步骤就将电脑与频谱仪设置在了同一网段,不需要配置一个局域网去远程控制频谱仪,直接将频谱仪和电脑都设置静态IP,使电脑与频谱仪进行网口通讯连接。

       通过咨询了技术支持得知频谱仪的端口是5555,这样子就可以使用Socket套接字进行通讯了(远程地址和端口号)。

       接下便是阅读开发文档 SCPI 命令,去一大堆命令中找到你需要发送的远程命令;或者直接做一个窗体,输入命令,发送给频谱仪,接收返回的数据。

       我开发的是第一种,因为是必须实现软件读取频谱仪的DB值。

       像仪器远程控制的开发在硬件齐全的情况下第一步就是实现正常连接。

       代码如下:

        

class Program
{
        private static byte[] result = new byte[1024]; //定义接收的字节

        static Socket clientSocket;
        static void Main(string[] args)
        {

             //初始化频谱仪端口连接
             IPAddress ip = IPAddress.Parse("192.168.1.6");
             clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
              try
              {
                    clientSocket.Connect(new IPEndPoint(ip, 5555));
                    Console.WriteLine("连接频谱仪成功");
               }
               catch
               {
                     Console.WriteLine("连接频谱仪失败,请按Enter键退出");
                     return;
               }
             //通过clientSocket接收数据
             try
             {

                  Thread.Sleep(1000);
                  string sendMessage = ":CALCulate:MARKer1:Y? ";    //获取Y轴值的SCPI命令
                  clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage));
                  Console.WriteLine("向频谱仪发送了远程命令:{0}", sendMessage);
              }
              catch
              {
                  clientSocket.Shutdown(SocketShutdown.Both);
                  clientSocket.Close();
             }
             Console.WriteLine("发送完毕");

            //通过clientSocket接收数据
            int receiveLength = clientSocket.Receive(result);
            Console.WriteLine("接收频谱仪消息:{0}", Encoding.ASCII.GetString(result, 0, receiveLength));

            Console.WriteLine("接收完毕");

            Console.ReadLine();
       }
}

原文地址:https://www.cnblogs.com/Qxian/p/9290354.html