| | |
| | | using Bro.Common.Base; |
| | | using Bro.Common.Helper; |
| | | using Bro.Common.Model; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Drawing.Design; |
| | | using System.Linq; |
| | | |
| | | namespace Bro.Device.AuboRobot |
| | | { |
| | |
| | | [Category("通信设置")] |
| | | [Description("协议内容分隔字符")] |
| | | public string Seperator { get; set; } = ","; |
| | | |
| | | [Category("IO监听设置")] |
| | | [Description("IO监听操作配置集合")] |
| | | [TypeConverter(typeof(CollectionCountConvert))] |
| | | [Editor(typeof(ComplexCollectionEditor<MonitorSet>), typeof(UITypeEditor))] |
| | | public List<MonitorSet> MonitorSetCollection { get; set; } = new List<MonitorSet>(); |
| | | |
| | | [Category("IO监听设置")] |
| | | [Description("IO监听间隔,以ms为单位")] |
| | | public int ScanInterval { get; set; } = 100; |
| | | } |
| | | |
| | | [Device("AuboRobot", "奥博机器人", EnumHelper.DeviceAttributeType.OperationConfig)] |
| | |
| | | |
| | | public RobotMsgParas Para1 { get; set; } = RobotMsgParas.None; |
| | | |
| | | public List<string> Paras { get; set; } = new List<string>(); |
| | | public int Para2 { get; set; } = 0; |
| | | |
| | | /// <summary> |
| | | /// Paras不包含Para1,Para2内容 |
| | | /// </summary> |
| | | public List<string> Datas { get; set; } = new List<string>(); |
| | | |
| | | public byte[] GetMsgBytes(string seperator, string endChar) |
| | | { |
| | | List<string> list = new List<string>() { Type.ToString(), ID.ToString() }; |
| | | List<string> list = new List<string>() { ((int)Type).ToString("D2"), ID.ToString("D2") }; |
| | | |
| | | if (Type == RobotMsgType.Send) |
| | | { |
| | | list.Add(Action.ToString()); |
| | | list.Add(((int)Action).ToString("D2")); |
| | | |
| | | if (Para1 != RobotMsgParas.None) |
| | | list.Add(((int)Para1).ToString("D2")); |
| | | list.Add(Para2.ToString("D2")); |
| | | |
| | | if (Datas == null) |
| | | { |
| | | list.Add(Para1.ToString()); |
| | | Datas = new List<string>(); |
| | | } |
| | | |
| | | list.AddRange(Paras); |
| | | while (Datas.Count < 5) |
| | | { |
| | | Datas.Add("0"); |
| | | } |
| | | |
| | | list.AddRange(Datas.ConvertAll(s => |
| | | { |
| | | string res = float.Parse(s).ToString("F7"); |
| | | |
| | | while (res.Length < 11) |
| | | { |
| | | res = "0" + s; |
| | | } |
| | | return res; |
| | | })); |
| | | } |
| | | |
| | | string msg = string.Join(seperator, list); |
| | |
| | | |
| | | RobotMsg msg = new RobotMsg(); |
| | | |
| | | msg.Type = (RobotMsgType)Enum.Parse(typeof(RobotMsgType), datas[0]); |
| | | msg.Type = (RobotMsgType)int.Parse(datas[0]); |
| | | msg.ID = int.Parse(datas[1]); |
| | | |
| | | if (msg.Type == RobotMsgType.Send) |
| | | { |
| | | msg.Action = (RobotMsgAction)Enum.Parse(typeof(RobotMsgAction), datas[2]); |
| | | msg.Action = (RobotMsgAction)int.Parse(datas[2]); |
| | | |
| | | if (int.TryParse(datas[3], out int para1)) |
| | | { |
| | | msg.Para1 = RobotMsgParas.None; |
| | | msg.Para1 = (RobotMsgParas)int.Parse(datas[3]); |
| | | msg.Para2 = int.Parse(datas[4]); |
| | | |
| | | for (int i = 3; i < datas.Length; i++) |
| | | { |
| | | msg.Paras.Add(datas[i]); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | msg.Para1 = (RobotMsgParas)Enum.Parse(typeof(RobotMsgParas), datas[3]); |
| | | |
| | | for (int i = 4; i < datas.Length; i++) |
| | | { |
| | | msg.Paras.Add(datas[i]); |
| | | } |
| | | } |
| | | msg.Datas = datas.Skip(5).ToList(); |
| | | } |
| | | |
| | | return msg; |
| | |
| | | |
| | | public string GetDisplayText() |
| | | { |
| | | string msg = $"序号:{ID},{Action.ToString()}_{Para1.ToString()}{(Paras.Count > 0 ? ("_" + string.Join(",", Paras)) : "")}"; |
| | | string msg = $"序号:{ID},{Action.ToString()}_{Para1.ToString()}_{Para2.ToString()}_{(Datas.Count > 0 ? ("_" + string.Join(",", Datas)) : "")}"; |
| | | return msg; |
| | | } |
| | | } |
| | | |
| | | public enum RobotMsgType |
| | | { |
| | | Send, |
| | | Rec |
| | | Send = 1, |
| | | Rec = 2, |
| | | } |
| | | |
| | | public enum RobotMsgAction |
| | | { |
| | | Move, |
| | | State, |
| | | Adjust, |
| | | IO, |
| | | Move = 1, |
| | | Unload = 2, |
| | | Load = 3, |
| | | IO = 6, |
| | | Calibration = 9, |
| | | StandardPoint = 10, |
| | | } |
| | | |
| | | public enum RobotMsgParas |
| | | { |
| | | None, |
| | | LineSnap, |
| | | Line, |
| | | Robot, |
| | | LoadEmptyTraySnap, |
| | | LoadEmptyTrayDone, |
| | | LoadFullTraySnap, |
| | | LoadFullTrayDone, |
| | | EmptyTrayReady, |
| | | EmptyTrayEmpty, |
| | | FullTrayFull, |
| | | Query, |
| | | None = 0, |
| | | Home = 1, |
| | | LineSnap = 2, |
| | | EmptyTray = 3, |
| | | FullTray = 4, |
| | | UnloadEmptyTraySnap = 5, |
| | | LoadFullTraySnap = 6, |
| | | Query = 7, |
| | | } |
| | | } |