正运动控制卡学习-网络连接

发布于:2025-09-04 ⋅ 阅读:(16) ⋅ 点赞:(0)

一.硬件介绍

使用正运动控制卡ECI1408进行学习,使用正运动函数库进行设置,并参考网络视频等进行学习记录,侵权删除.

二.使用C#创建连接界面

三.创建运动卡类

3.1.创建IP连接字段

private string IP; //连接IP
public Inptr IPHandle;//创建正运动控制卡网络连接句柄

3.2.创建操作类

创建操作成功与否操作类,对操作结果进行记录

public class OperationResult
{
   //创建属性
   public bool IsSucess{get;set;}
   public string ErrorMsg{
                          get{return ErrorMsg;}
                          set{ErrorMsg=string.Empty}
                          }

  //创建成功的信息,类中创建静态资源,可以通过类名直接调用,不用进行实例化对象
  public static OperationResult CreateSuccessResult()
  { 
    return new OperationResult()
     {
         IsSucess=true;
         ErrorMsg="sucess";
     }

   }
  //创建失败的信息
  public static OperationResult CreateFailResult()
  { 
    return new OperationResult()
     {
         IsSucess=false;
         ErrorMsg="Fail";
     }
   }



}

3.4创建IP搜索、IP连接和断开函数

创建一个Zmotion类,用来记录正运动控制卡相关操作:

 public partial class Zmotion
 {

     /// <summary>
     /// 创建板卡IP搜索和IP连接
     /// </summary>
     //创建IP连接所需要的内容
     private string IP;
     public IntPtr IPHandle; //创建连接句柄
    // public bool CardNet;
     public bool initedOk;   //判断是否板卡是否连接
 }

创建IP连接相关函数;

//创建IP搜索函数
 public List<string> SearchIpList()
 {
   //存在多个IP,建立一个存储IP的容器,因为IP长度未知,则建立一个StringBuilder类
    StringBuilder IpList = new StringBuilder();
    //创建一个存在IP错开的容器
    List<string> SearchList = new List<string>();
   //正运动内置搜索IP函数,搜索成功返回值为0
    int error = ZAux_SearchEthlist(IpList, 1024, 10); 
    
    if(error==0)
    { //清除IPList 后面的空格,网络连接中间有空格和后面有空格
       string ipString = IpList.ToString().Trim();
       //判断是否有多个IP      
       var Ips=ipString.split(“ ”);
       foreach (var ip in Ips)
       {
            SearchList.add(ip);
        }
      }
    else
    {
       MessageBox.Show("没有搜索到IP,请检查网络连接");

      }

   retrun SearchList;
 }

//创建IP连接函数
 public OperationResult LinkIp(string IP)
 {
     //正运动控制卡中自带函数库
     int Error = ZAux_OpenEth(IP, out IPHandle);
      //连接成功返回值为0,且句柄不为0

     if (Error == 0 && IPHandle != IntPtr.Zero)
     {
         initedOk = true;
         return OperationResult.CreateSuccessResult();
     }

     else
     {
         return OperationResult.CreateFailResult();


     }
 }

//创建IP关闭函数
public OperationResult ClassCard()
{
     if ( IPHandle != IntPtr.Zero)
     {
        //正运动自带板卡
         int Error = ZAux_Close(IPHandle);
         if (Error == 0)
        {
            initedOk = false;
            return OperationResult.CreateSuccessResult();
        }
       else
       {          
        return OperationResult.CreateFailResult();         
       }
    }
    else
    {
       MessageBox.Show("网络没有连接,请检查网络接口");
       return new OperationResult() { IsSuccess = false, ErrorMsg = "Fail" };

    }

}

四.和UI界面进行连接

4.1 IP搜索

private void IPScanBtn_Click(object sender, EventArgs e)
{

    foreach (string ip in motion.SearchIpList())
    {
        IPComoBox.Items.Add(ip);
    }

}

4.1 IP连接

 private void LinkIpBtn_Click(object sender, EventArgs e)
 {

     
     if (object.Equals(LinkIpBtn.Text, "连接轴卡"))
     {

          //使用正运动类中函数

         if (motion.LinkIp(IPComoBox.Text.ToString()).IsSuccess)
         {
             motion.CardNet = true;

             LinkIpBtn.Text = "断开轴卡";
             LinkShowLbl.BackColor = Color.Green;
             MessageBox.Show("轴卡连接成功");

         }
         else
         {
             motion.CardNet = false;
             MessageBox.Show("IP信息错误,无法连接轴卡");
         }

     }
     else if (Equals(LinkIpBtn.Text, "断开轴卡"))
     {

         if (!motion.CloseCard().IsSuccess)
         {
             motion.CardNet = false;
             LinkIpBtn.Text = "连接轴卡";
             LinkShowLbl.BackColor = Color.Red;
         }
         else
         {
             motion.CardNet = true;
             MessageBox.Show("轴卡仍然连接中,请检查相应设施");

         }

     }
 }

五.效果显示

连接状态

断开状态


网站公告

今日签到

点亮在社区的每一天
去签到