一.硬件介绍
使用正运动控制卡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函数,搜索成功返回值为0int 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,且句柄不为0if (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("轴卡仍然连接中,请检查相应设施");}}}
五.效果显示
连接状态
断开状态