src/Bro.Device.SeerAGV/SeerAGVConfig.cs
@@ -1,16 +1,12 @@
using Bro.Common.Base;
using Bro.Common.Helper;
using Bro.Common.Model.Helper;
using Bro.Common.Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing.Design;
using System.Linq;
using System.Net;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace Bro.Device.SeerAGV
{
@@ -31,7 +27,19 @@
        [Category("监听配置")]
        [Description("监听间隔,单位ms")]
        public int ScanInterval { get; set; } = 200;
        public int ScanInterval { get; set; } = 500;
        //[Category("监听配置")]
        //[Description("监听的IO信息配置集合")]
        //[TypeConverter(typeof(CollectionCountConvert))]
        //[Editor(typeof(ComplexCollectionEditor<IODefinition>), typeof(UITypeEditor))]
        //public List<IODefinition> IOCollection { get; set; } = new List<IODefinition>();
        [Category("监听设置")]
        [Description("监听操作配置集合")]
        [TypeConverter(typeof(CollectionCountConvert))]
        [Editor(typeof(ComplexCollectionEditor<MonitorSet>), typeof(UITypeEditor))]
        public List<MonitorSet> MonitorSetCollection { get; set; } = new List<MonitorSet>();
        [Category("监听配置")]
        [Description("是否采用简单监听模式。true:简单模式,只获取任务状态;false:全部模式,获取任务所有信息")]
@@ -53,6 +61,22 @@
            }
        }
        private float batteryLvlToCharge_Recommand = 0.3f;
        [Category("充电配置")]
        [Description("充电电池容量,电池容量低于该值时,设备空闲时建议充电")]
        public float BatteryLvlToCharge_Recommand
        {
            get => batteryLvlToCharge_Recommand;
            set
            {
                if (value >= 1 || value <= 0)
                {
                    value = 0.3f;
                }
                batteryLvlToCharge_Recommand = value;
            }
        }
        private float batteryLvlChargeDone = 0.9f;
        [Category("充电配置")]
        [Description("充电完成电池容量,电池容量高于该值时确认充电完成")]
@@ -68,12 +92,22 @@
                batteryLvlChargeDone = value;
            }
        }
        [Category("动作设置")]
        [Description("动作超时设置,单位min")]
        public float OperationTimeout { get; set; } = 5;
    }
    [Device("SeerAGV", "SeerAGV", EnumHelper.DeviceAttributeType.OperationConfig)]
    public class SeerAGVOperationConfig : OperationConfigBase
    {
        [Category("导航配置")]
        [Description("AGV行驶目的地")]
        public string Location { get; set; }
        [Category("导航配置")]
        [Description("是否等待完成信号")]
        public bool IsWaitFinished { get; set; } = true;
    }
    public class SeerMessage : IComplexDisplay
@@ -143,7 +177,7 @@
            if (data.Length < 16 + msg.DataLength)
            {
                throw new ProcessException("数据长度错误", null);
                throw new ProcessException("数据长度错误");
            }
            msg.JsonData = data.Skip(16).Take(msg.DataLength).ToArray();
@@ -171,6 +205,7 @@
    {
        QueryPosition = 0x03EC,
        QueryTaskStatus = 0x03FC,
        QueryIO = 0x03F5,
        CancelTask = 0x0BBB,
        PauseTask = 0x0BB9,