OptInterfaceServer.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. using System;
  2. using System.Collections.Generic;
  3. //using System.Linq;
  4. using System.Threading;
  5. using System.Reflection;
  6. using System.Runtime.InteropServices;
  7. using System.Net;
  8. using System.Net.Sockets;
  9. using System.Diagnostics;
  10. using Wayne.FDCPOSLibrary;
  11. using Wayne.FDCPOSInterface;
  12. namespace Wayne.OptInterface
  13. {
  14. [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
  15. public interface IOptInterfaceServer
  16. {
  17. [DispId(1)]
  18. void Add(string workstationID, string applicationSender, int requestId, string deviceType, int iOptId, string overallResult);
  19. [DispId(2)]
  20. void Remove(string workstationID, string applicationSender, int requestId, string deviceType, int iOptId, string overallResult);
  21. [DispId(3)]
  22. void Write(string workstationID, string applicationSender, int requestId, string deviceType, int iOptId, string overallResult);
  23. [DispId(30)]
  24. void DeviceStateChange(string deviceType, int iOptId, int state, int substate);
  25. [DispId(31)]
  26. void Read(string deviceType, int iOptId, byte[] message);
  27. }
  28. [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
  29. [Guid("7535B28E-35FA-41ae-9EFD-B376CDDC988C")]
  30. public interface IOptInterfaceServerEvents
  31. {
  32. [DispId(1)]
  33. void OnAddSerialPortReq(string workstationID, string applicationSender, int requestId, string deviceType, int iOptId, int port, int baudRate, int dataBit, int stopBit, int parity);
  34. [DispId(2)]
  35. void OnAddTCPReq(string workstationID, string applicationSender, int requestId, string deviceType, int iOptId, string address, int port);
  36. [DispId(3)]
  37. void OnRemoveReq(string workstationID, string applicationSender, int requestId, string deviceType, int iOptId);
  38. [DispId(4)]
  39. void OnWriteReq(string workstationID, string applicationSender, int requestId, string deviceType, int iOptId, byte[] message);
  40. }
  41. [Guid("27D28888-3354-4004-8620-BF328BC1BB65")]
  42. [ClassInterface(ClassInterfaceType.None)]
  43. [ComVisible(true)]
  44. [ProgId("OptInterface.OptInterfaceServer")]
  45. [ComSourceInterfaces(typeof(IOptInterfaceServerEvents))]
  46. public class OptInterfaceServer : IOptInterfaceServer
  47. {
  48. //public static IOptInterfaceServer CreateOptInterface()
  49. //{
  50. // return optInterfaceServer;
  51. //}
  52. //public static OptInterfaceServer optInterfaceServer = null;
  53. private FDCPOSInterfaceServer fdcposInterface;
  54. public OptInterfaceServer(FDCPOSInterfaceServer _fdcposInterface)
  55. {
  56. fdcposInterface = _fdcposInterface;
  57. }
  58. public delegate void OnAddSerialPortReqTarget(string workstationID, string applicationSender, int requestID, string deviceType, int deviceId, int port, int baudRate, int dataBit, int stopBit, int parity);
  59. public delegate void OnAddTCPReqTarget(string workstationID, string applicationSender, int requestID, string deviceType, int deviceId, string address, int port);
  60. public delegate void OnRemoveReqTarget(string workstationID, string applicationSender, int requestID, string deviceType, int deviceId);
  61. public delegate void OnWriteReqTarget(string workstationID, string applicationSender, int requestID, string deviceType, int deviceId, byte[] message);
  62. public event OnAddSerialPortReqTarget OnAddSerialPortReq;
  63. public event OnAddTCPReqTarget OnAddTCPReq;
  64. public event OnRemoveReqTarget OnRemoveReq;
  65. public event OnWriteReqTarget OnWriteReq;
  66. #region ServiceRequests
  67. public void AddSerialPortReq(string workstationID, string applicationSender, int requestID, string deviceType, int deviceId, int port, int baudRate, int dataBit, int stopBit, int parity)
  68. {
  69. //FDCPOSManager.tracer.WriteLine("init");
  70. if (OnAddSerialPortReq != null)
  71. {
  72. OnAddSerialPortReq(workstationID, applicationSender, requestID, deviceType, deviceId, port, baudRate, dataBit, stopBit, parity);
  73. }
  74. //FDCPOSManager.tracer.WriteLine("end");
  75. }
  76. public void AddTCPReq(string workstationID, string applicationSender, int requestID, string deviceType, int deviceId, string address, int port)
  77. {
  78. //FDCPOSManager.tracer.WriteLine("init");
  79. if (OnAddTCPReq != null)
  80. {
  81. OnAddTCPReq(workstationID, applicationSender, requestID, deviceType, deviceId, address, port);
  82. }
  83. //FDCPOSManager.tracer.WriteLine("end");
  84. }
  85. public void RemoveReq(string workstationID, string applicationSender, int requestID, string deviceType, int deviceId)
  86. {
  87. //FDCPOSManager.tracer.WriteLine("init");
  88. if (OnRemoveReq != null)
  89. {
  90. OnRemoveReq(workstationID, applicationSender, requestID, deviceType, deviceId);
  91. }
  92. //FDCPOSManager.tracer.WriteLine("end");
  93. }
  94. public void WriteReq(string workstationID, string applicationSender, int requestID, string deviceType, int deviceId, byte[] message)
  95. {
  96. //FDCPOSManager.tracer.WriteLine("init");
  97. if (OnWriteReq != null)
  98. {
  99. OnWriteReq(workstationID, applicationSender, requestID, deviceType, deviceId, message);
  100. }
  101. //FDCPOSManager.tracer.WriteLine("end");
  102. }
  103. #endregion
  104. #region ServiceResponses
  105. public void Add(string workstationID, string applicationSender, int requestId, string deviceType, int deviceId, string overallResult)
  106. {
  107. fdcposInterface.messages.OptAdd(workstationID, applicationSender, requestId, deviceType, deviceId, overallResult);
  108. }
  109. public void Remove(string workstationID, string applicationSender, int requestId, string deviceType, int deviceId, string overallResult)
  110. {
  111. fdcposInterface.messages.OptRemove(workstationID, applicationSender, requestId, deviceType, deviceId, overallResult);
  112. }
  113. public void Write(string workstationID, string applicationSender, int requestId, string deviceType, int deviceId, string overallResult)
  114. {
  115. fdcposInterface.messages.OptWrite(workstationID, applicationSender, requestId, deviceType, deviceId, overallResult);
  116. }
  117. #endregion
  118. #region FDCMessages
  119. public void DeviceStateChange(string deviceType, int deviceId, int logicalState, int logicalSubState)
  120. {
  121. LogicalDeviceState logicalDeviceState = (logicalState == 1) ? LogicalDeviceState.FDC_READY : LogicalDeviceState.FDC_OFFLINE;
  122. fdcposInterface.messages.DeviceStateChange(deviceType, deviceId, logicalDeviceState, logicalDeviceState, "", "", "", 0, 0, 0, 0);
  123. }
  124. public void Read(string deviceType, int deviceId, byte[] message)
  125. {
  126. fdcposInterface.messages.OptRead(deviceType, deviceId, message);
  127. }
  128. #endregion
  129. }
  130. }