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

一.硬件介绍

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

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

三.创建运动卡类

3.1.创建IP连接字段

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

3.2.创建操作类

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

cs 复制代码
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类,用来记录正运动控制卡相关操作:

cs 复制代码
 public partial class Zmotion
 {

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

创建IP连接相关函数;

cs 复制代码
//创建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搜索

cs 复制代码
private void IPScanBtn_Click(object sender, EventArgs e)
{

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

}

4.1 IP连接

cs 复制代码
 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("轴卡仍然连接中,请检查相应设施");

         }

     }
 }

五.效果显示

连接状态

断开状态

相关推荐
点心的游戏开发世界4 小时前
Unity C# 脚本学习笔记:命名空间与 using
学习·unity·c#
淡海水6 小时前
07-04-并发-ConcurrentBag-T-工作窃取WorkStealing算法
开发语言·算法·c#·bag·concurrent·workstealing
点心的游戏开发世界6 小时前
Unity C# 脚本学习笔记:泛型
学习·unity·c#
公子小六10 小时前
基于.NET的Windows窗体编程之WinForms滑块与上下控件
windows·microsoft·c#·.net·winforms
曹牧11 小时前
C#:文本文件读取
服务器·前端·c#
2601_9673387111 小时前
C#上位机开发零基础入门到精通全套视频
开发语言·c#
czhc114007566316 小时前
2026-09-03 博客:配置与密码 · 合并代码 · 超时排查
c#
格林威19 小时前
C#图像夜间识别率提升:使用OpenCvSharp和Halcon融合DeepSORT实现复杂场景下准确识别
开发语言·人工智能·数码相机·机器学习·计算机视觉·c#·视觉检测
曹牧20 小时前
C#:线程间操作无效,不是从创建控件线程访问
开发语言·c#
anlog1 天前
ini文件读取,EXE同目录文件读取
c#·ini