InterfacleDevice.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace YG.Device
  8. {
  9. /// <summary>
  10. /// 设备状态
  11. /// </summary>
  12. public enum DeviceState
  13. {
  14. /// <summary>
  15. /// 运行中
  16. /// </summary>
  17. Runing,
  18. /// <summary>
  19. /// 准备就绪
  20. /// </summary>
  21. Start,
  22. /// <summary>
  23. /// 停止
  24. /// </summary>
  25. Stop,
  26. }
  27. /// <summary>
  28. /// 发送状态
  29. /// </summary>
  30. public enum SendState
  31. {
  32. /// <summary>
  33. /// 准备发送
  34. /// </summary>
  35. StartSend,
  36. /// <summary>
  37. /// 发送了请求,没有回应
  38. /// </summary>
  39. SendNoReceive,
  40. /// <summary>
  41. /// 已回应
  42. /// </summary>
  43. Received
  44. }
  45. interface InterfacleDevice
  46. {
  47. /// <summary>
  48. /// 初始化设备
  49. /// </summary>
  50. void DeviceInit();
  51. /// <summary>
  52. /// 打开设备
  53. /// </summary>
  54. void DeviceOpen();
  55. /// <summary>
  56. /// 关闭设备
  57. /// </summary>
  58. void DeviceClose();
  59. /// <summary>
  60. /// 设备检测
  61. /// </summary>
  62. void DeviceCheck();
  63. void DeviceStart();
  64. }
  65. public abstract class DeviceList : InterfacleDevice
  66. {
  67. /// <summary>
  68. /// 设备类型
  69. /// </summary>
  70. public DeviceType Dtype { get; set; } = DeviceType.其他;
  71. /// <summary>
  72. /// 设备运行状态
  73. /// </summary>
  74. /// <param name="enumDeviceList"></param>
  75. /// <param name="ison"></param>
  76. public delegate void RunState(string enumDeviceList, bool ison);
  77. /// <summary>
  78. /// 设备运行状态
  79. /// </summary>
  80. public virtual event RunState rState;
  81. /// <summary>
  82. /// 接受设备反馈指令
  83. /// </summary>
  84. /// <param name="obje1"></param>
  85. /// <param name="obje2"></param>
  86. /// <param name="obje3"></param>
  87. public delegate void RunMessage(string obje1,string obje2, string obje3);
  88. public virtual object Clone()
  89. {
  90. return this.MemberwiseClone();
  91. }
  92. /// <summary>
  93. /// 设备正常运行
  94. /// </summary>
  95. public virtual bool IsOn { get; set; }
  96. /// <summary>
  97. /// 事件
  98. /// </summary>
  99. public virtual event RunMessage Msg;
  100. /// <summary>
  101. /// 超时时间
  102. /// </summary>
  103. public int timeout { get; set; } = 2500;
  104. /// <summary>
  105. /// 发送的内容
  106. /// </summary>
  107. public string SendValue { get; set; } = "";
  108. public DeviceList(string name)
  109. {
  110. DeviceName = name;
  111. }
  112. public DeviceList()
  113. {
  114. DeviceName = "";
  115. }
  116. /// <summary>
  117. /// 设备名称
  118. /// </summary>
  119. public virtual string DeviceName { get; set; }
  120. public virtual string ServerUrl { get; set; }
  121. public virtual string Ip { get; set; }
  122. public virtual string ReadType { get; set; }
  123. public virtual void DeviceClose()
  124. {
  125. Console.WriteLine(this.DeviceName+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + this.DeviceName + "关闭");
  126. if (Msg != null)
  127. {
  128. Msg(this.DeviceName,"", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff")+ this.DeviceName + "关闭");
  129. }
  130. }
  131. public virtual void DeviceInit() {
  132. Console.WriteLine(this.DeviceName+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + this.DeviceName + "初始化");
  133. if (Msg != null)
  134. {
  135. Msg(this.DeviceName,"", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + this.DeviceName + "初始化");
  136. }
  137. }
  138. public virtual T DeviceRead<T>(string value,ushort leng=0)
  139. {
  140. return default(T);
  141. }
  142. public virtual void DeviceOpen() {
  143. Console.WriteLine(this.DeviceName+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + this.DeviceName + "打开");
  144. if (Msg != null)
  145. {
  146. Msg(this.DeviceName,"",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + this.DeviceName + "打开");
  147. }
  148. }
  149. /// <summary>
  150. /// 设备运行状态
  151. /// </summary>
  152. public virtual void DeviceSend(object ob)
  153. {
  154. Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + this.DeviceName + "发送一次数据");
  155. Log.Instance.WriteLogAdd(this.DeviceName + "发送一次数据"+ob.ToString());
  156. if (Msg != null)
  157. {
  158. Msg(this.DeviceName, ob.ToString(), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + this.DeviceName + "发送一次数据");
  159. }
  160. }
  161. public virtual void DeviceSend(object ob, object ob1)
  162. {
  163. Console.WriteLine(this.DeviceName+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + ob.ToString()+" "+ob1.ToString());
  164. }
  165. public virtual void DeviceSend(object ob, object ob1,string readType)
  166. {
  167. Console.WriteLine(this.DeviceName + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff") + ob.ToString() + " " + ob1.ToString());
  168. }
  169. public virtual void DeviceCheck() { }
  170. public virtual void PrintMsg()
  171. {
  172. }
  173. public virtual void DeviceStart() { }
  174. public virtual void DeviceState()
  175. { }
  176. }
  177. }