ICommunication.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System;
  2. using System.ComponentModel;
  3. using System.Threading.Tasks;
  4. namespace TeamAAS.Communication.Interfaces
  5. {
  6. /// <summary>
  7. /// 通用通讯接口。PLC、仪器、传感器等设备只要实现本接口 + 标记
  8. /// <see cref="TeamAAS.Communication.Attributes.CommunicationAttribute"/>,
  9. /// 即可被 CommunicationFactory 反射发现并出现在窗体配置列表中。
  10. /// </summary>
  11. public interface ICommunication : IDisposable
  12. {
  13. [Browsable(false)]
  14. /// <summary>唯一标识</summary>
  15. Guid Id { get; set; }
  16. [Browsable(false)]
  17. /// <summary>序号(用于排序/编号)</summary>
  18. int Index { get; set; }
  19. [Category("I.基础配置"), DisplayName("1.设备名称"), Description("设置设备名称")]
  20. /// <summary>显示名称</summary>
  21. string Name { get; set; }
  22. [Browsable(false)]
  23. /// <summary>类型标识(全限定类名,反射创建用)</summary>
  24. string TypeKey { get; }
  25. [Browsable(false)]
  26. /// <summary>连接地址(tcp://ip:port 或 opc.tcp://...)</summary>
  27. string EndpointUrl { get; set; }
  28. [Category("I.基础配置"), DisplayName("2.是否已连接"), Description("是否已连接")]
  29. [ReadOnly(true)]
  30. /// <summary>是否已连接</summary>
  31. bool IsConnected { get; }
  32. /// <summary>连接状态变化事件</summary>
  33. event Action<object, bool> ConnectChangedEvent;
  34. /// <summary>数据到达事件(参数:发送者, 收到的文本)</summary>
  35. event Action<object, string> DataReceivedEvent;
  36. /// <summary>连接(同步)</summary>
  37. void Connect();
  38. /// <summary>连接(异步)</summary>
  39. Task ConnectAsync();
  40. /// <summary>断开连接</summary>
  41. void Disconnect();
  42. /// <summary>读取单个值</summary>
  43. object ReadValue(string address);
  44. /// <summary>读取单个值(异步)</summary>
  45. Task<object> ReadValueAsync(string address);
  46. /// <summary>写入单个值</summary>
  47. void WriteValue(string address, object value);
  48. /// <summary>写入单个值(异步)</summary>
  49. Task WriteValueAsync(string address, object value);
  50. }
  51. }