通過網口 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?\r\n";    //獲取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();
       }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM