using System; using System.ComponentModel; using System.Threading.Tasks; namespace TeamAAS.Communication.Interfaces { /// /// 通用通讯接口。PLC、仪器、传感器等设备只要实现本接口 + 标记 /// , /// 即可被 CommunicationFactory 反射发现并出现在窗体配置列表中。 /// public interface ICommunication : IDisposable { [Browsable(false)] /// 唯一标识 Guid Id { get; set; } [Browsable(false)] /// 序号(用于排序/编号) int Index { get; set; } [Category("I.基础配置"), DisplayName("1.设备名称"), Description("设置设备名称")] /// 显示名称 string Name { get; set; } [Browsable(false)] /// 类型标识(全限定类名,反射创建用) string TypeKey { get; } [Browsable(false)] /// 连接地址(tcp://ip:port 或 opc.tcp://...) string EndpointUrl { get; set; } [Category("I.基础配置"), DisplayName("2.是否已连接"), Description("是否已连接")] [ReadOnly(true)] /// 是否已连接 bool IsConnected { get; } /// 连接状态变化事件 event Action ConnectChangedEvent; /// 数据到达事件(参数:发送者, 收到的文本) event Action DataReceivedEvent; /// 连接(同步) void Connect(); /// 连接(异步) Task ConnectAsync(); /// 断开连接 void Disconnect(); /// 读取单个值 object ReadValue(string address); /// 读取单个值(异步) Task ReadValueAsync(string address); /// 写入单个值 void WriteValue(string address, object value); /// 写入单个值(异步) Task WriteValueAsync(string address, object value); } }