一.硬件介绍
使用正运动控制卡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("轴卡仍然连接中,请检查相应设施");
}
}
}
五.效果显示
连接状态
断开状态