diff --git a/Rs.Motion/Base/IIOCard.cs b/Rs.Motion/Base/IIOCard.cs index 3830352..e569b43 100644 --- a/Rs.Motion/Base/IIOCard.cs +++ b/Rs.Motion/Base/IIOCard.cs @@ -27,7 +27,7 @@ namespace Rs.Motion.Base /// public bool IsEtherCat { get; set; } = true; - public virtual void Init(ushort inCount, ushort outCount, ushort slaveNo) + public virtual void Init(short cardID,ushort inCount, ushort outCount, ushort slaveNo) { } diff --git a/Rs.Motion/GugaoEcat/ECatIOCard.cs b/Rs.Motion/GugaoEcat/ECatIOCard.cs index ae667a9..f7c02de 100644 --- a/Rs.Motion/GugaoEcat/ECatIOCard.cs +++ b/Rs.Motion/GugaoEcat/ECatIOCard.cs @@ -21,12 +21,13 @@ namespace Rs.Motion.GugaoEcat } - public override void Init(ushort inCount, ushort outCount, ushort slaveNo) + public override void Init(short cardID,ushort inCount, ushort outCount, ushort slaveNo) { ushort i = 0; for (; i < outCount; i++) { ECatIO io = new ECatIO(); + io.CardID= cardID; io.SlaveNo = slaveNo; io.Offset = 0; io.Index = i; @@ -36,6 +37,7 @@ namespace Rs.Motion.GugaoEcat for (; i < outCount + inCount; i++) { ECatIO io = new ECatIO(); + io.CardID = cardID; io.SlaveNo = slaveNo; io.Offset = 0; io.Index = i; diff --git a/Rs.Motion/GugaoEcat/GugaoCardManager.cs b/Rs.Motion/GugaoEcat/GugaoCardManager.cs index 3d805e6..9e08a18 100644 --- a/Rs.Motion/GugaoEcat/GugaoCardManager.cs +++ b/Rs.Motion/GugaoEcat/GugaoCardManager.cs @@ -51,7 +51,7 @@ namespace Rs.Motion.GugaoEcat ioCard.Name = name; ioCard.Vender = vender; ioCard.IsEtherCat = isEthercat; - ioCard.Init(inNum, outNum, (ushort)slaveID); + ioCard.Init((short)cardID,inNum, outNum, (ushort)slaveID); bool suc = XmlSerializerHelper.Instance.Serialize(filename, ioCard); } else diff --git a/Rs.Motion/GugaoPulse/GLinkIOCard.cs b/Rs.Motion/GugaoPulse/GLinkIOCard.cs index e3abbe3..a52934b 100644 --- a/Rs.Motion/GugaoPulse/GLinkIOCard.cs +++ b/Rs.Motion/GugaoPulse/GLinkIOCard.cs @@ -14,11 +14,12 @@ namespace Rs.Motion.GugaoPulse [XmlInclude(typeof(GLinkIO))] public class GLinkIOCard : IIOCard { - public override void Init(ushort inCount, ushort outCount, ushort slaveNo) + public override void Init(short cardID,ushort inCount, ushort outCount, ushort slaveNo) { for (ushort i = 0; i < outCount; i++) { GLinkIO io = new GLinkIO(); + io.CardID = cardID; io.CardID = (short)CardID; io.Name = "Out" + i + "_" + slaveNo; io.Index = i; @@ -27,6 +28,7 @@ namespace Rs.Motion.GugaoPulse for (ushort i = 0; i < inCount; i++) { GLinkIO io = new GLinkIO(); + io.CardID = cardID; io.Card = this; io.Name = "In" + i + "_" + slaveNo; io.Index = i; diff --git a/Rs.Motion/GugaoPulse/GugaoPulseCardManager.cs b/Rs.Motion/GugaoPulse/GugaoPulseCardManager.cs index bc8320a..74cbea1 100644 --- a/Rs.Motion/GugaoPulse/GugaoPulseCardManager.cs +++ b/Rs.Motion/GugaoPulse/GugaoPulseCardManager.cs @@ -57,7 +57,7 @@ namespace Rs.Motion.GugaoPulse ioCard.Name = name; ioCard.Vender = vender; ioCard.IsEtherCat = isEthercat; - ioCard.Init(inNum, outNum, (ushort)slaveID); + ioCard.Init((short)cardID,inNum, outNum, (ushort)slaveID); bool suc = XmlSerializerHelper.Instance.Serialize(filename, ioCard); } else @@ -78,13 +78,16 @@ namespace Rs.Motion.GugaoPulse public override ErrorCode Init() { SqliteHelper db = new SqliteHelper(); - DataTable dt = db.GetDataTable("select * from motioncard where vender='gugao' order by id dec"); + DataTable dt = db.GetDataTable("select * from motioncard where vender='gugao' order by id desc"); if(dt!=null&&dt.Rows.Count>0) { foreach (DataRow row in dt.Rows) { + ICard card = new GugaoPulseCard(ushort.Parse(row["cardid"].ToString()), 8, $"gugaopulse{row["cardid"]}.xml"); + card.Init(); + cardDic.Add(ushort.Parse(row["cardid"].ToString()), card); //打开运动控制卡 - apiResult = mc_pulse.GT_Open((short)row["cardid"], 0, 1); + apiResult = mc_pulse.GT_Open(short.Parse(row["cardid"].ToString()), 0, 1); if (apiResult != 0) { return ErrorCode.CardInitFail; @@ -95,9 +98,7 @@ namespace Rs.Motion.GugaoPulse { return ErrorCode.Fail; } - ICard card = new GugaoPulseCard((ushort)row["cardid"], 8, $"gugao{row["cardid"]}.xml"); - card.Init(); - cardDic.Add((ushort)row["cardid"], card); + } } IsInitialized = true; diff --git a/Rs.Motion/IoManager.cs b/Rs.Motion/IoManager.cs index 5a70ac0..e71ec3c 100644 --- a/Rs.Motion/IoManager.cs +++ b/Rs.Motion/IoManager.cs @@ -112,6 +112,8 @@ namespace Rs.Motion foreach (IIO eCatIO in card.DIn) { eCatIO.Card = card; + if (ioDic.ContainsKey(eCatIO.Name)) + continue; ioDic.Add(eCatIO.Name, eCatIO); } } diff --git a/Rs.Motion/Ztm/ZtmCardManager.cs b/Rs.Motion/Ztm/ZtmCardManager.cs index dec03c0..9e8b6f5 100644 --- a/Rs.Motion/Ztm/ZtmCardManager.cs +++ b/Rs.Motion/Ztm/ZtmCardManager.cs @@ -52,26 +52,24 @@ namespace Rs.Motion.GugaoEcat public override IIOCard AddIoCard(int cardID,string name,string vender,bool isEthercat,ushort inNum,ushort outNum,int slaveID) { ZtmIOCard ioCard = new ZtmIOCard(); + string filename = $"config/motion/io/ztm{cardID}.xml"; + if (!File.Exists(filename)) + { + ioCard.CardID = (ushort)cardID; + //ioCard.MC = mcDic[(short)cardID]; + ioCard.Name = name; + ioCard.Vender = vender; + ioCard.IsEtherCat = isEthercat; + ioCard.Init((short)cardID, inNum, outNum, (ushort)slaveID); + bool suc = XmlSerializerHelper.Instance.Serialize(filename, ioCard); + } + else + XmlSerializerHelper.Instance.Deserialize(filename, out ioCard); if (mcDic.ContainsKey((short)cardID)) { - string filename = $"config/motion/io/ztm{cardID}.xml"; - if (!File.Exists(filename)) - { - ioCard.MC = mcDic[(short)cardID]; - ioCard.Name = name; - ioCard.Vender = vender; - ioCard.IsEtherCat = isEthercat; - ioCard.Init(inNum, outNum, (ushort)slaveID); - bool suc = XmlSerializerHelper.Instance.Serialize(filename, ioCard); - } - else - XmlSerializerHelper.Instance.Deserialize(filename, out ioCard); if (ioCard != null) { ioCard.SetMc(mcDic[(short)cardID]); - //ztmIOCard.SetMc(0); - //ioCards.Add(ztmIOCard); - //Add(ztmIOCard); } } return ioCard; diff --git a/Rs.Motion/Ztm/ZtmIOCard.cs b/Rs.Motion/Ztm/ZtmIOCard.cs index 26f2ad0..4d5b655 100644 --- a/Rs.Motion/Ztm/ZtmIOCard.cs +++ b/Rs.Motion/Ztm/ZtmIOCard.cs @@ -41,12 +41,13 @@ namespace Rs.Motion.Ztm ((ZtmIO)iO).mc = MC; } } - public override void Init(ushort inCount, ushort outCount, ushort slaveNo) + public override void Init(short cardID,ushort inCount, ushort outCount, ushort slaveNo) { for (ushort i = 0; i < outCount; i++) { ZtmIO io = new ZtmIO(); - io.Name = $"Ztm{MC}_Out" + i; + io.CardID = cardID; + io.Name = $"Ztm{cardID}_Out" + i; io.Index = i; io.SlaveNo = (ushort)slaveNo; DOut.Add(io); @@ -54,7 +55,8 @@ namespace Rs.Motion.Ztm for (ushort i = 0; i < inCount; i++) { ZtmIO io = new ZtmIO(); - io.Name = $"Ztm{MC}_In" + i; + io.CardID = cardID; + io.Name = $"Ztm{cardID}_In" + i; io.Index = i; io.SlaveNo = (ushort)slaveNo; DIn.Add(io);