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

一.硬件介绍

使用正运动控制卡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("轴卡仍然连接中,请检查相应设施");

         }

     }
 }

五.效果显示

连接状态

断开状态

相关推荐
正运动技术3 分钟前
PC强实时运动控制(一):C#的EtherCAT总线初始化(上)
c#·运动控制·正运动技术·运动控制器·ethercat·正运动·运动控制内核
d111111111d38 分钟前
在STM32中,中断服务函数的命名有什么要求?
笔记·stm32·单片机·嵌入式硬件·学习·c#
极客智造2 小时前
深入解析 C# Type 类:解锁反射与动态编程的核心
c#·反射
SmoothSailingT2 小时前
C#——textBox控件(1)
开发语言·c#
superman超哥3 小时前
仓颉语言中并发集合的实现深度剖析与高性能实践
开发语言·后端·python·c#·仓颉
工程师0073 小时前
C#中的服务注册剖析
c#·服务注册
张人玉3 小时前
c#DataTable类
数据库·c#
缺点内向3 小时前
如何在 C# .NET 中将 Markdown 转换为 PDF 和 Excel:完整指南
pdf·c#·.net·excel
CodeCraft Studio3 小时前
Excel处理控件Aspose.Cells教程:使用C#在Excel中创建旭日图
c#·excel·aspose·excel旭日图·excel库·excel开发控件·excel api库
民乐团扒谱机3 小时前
【微实验】仿AU音频编辑器开发实践:从零构建音频可视化工具
算法·c#·仿真·audio·fft·频谱