IncvanceEip.cs 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Runtime.InteropServices;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace CCDCount.DLL.Inovance
  8. {
  9. public static class IncvanceEip
  10. {
  11. public enum ERROR_NO : int
  12. {
  13. ERR_EIP_STOPED = -2,//协议栈未开启
  14. OTHER_ERROR = -1,
  15. SUCCESS = 0,
  16. ERRI_INVALID_CONNECTION_INSTANCE_SPECIFIED = 1,//连接的实例ID与已有的ID重复或超过最大值
  17. ERRI_CONN_CONFIG_FAILED_INVALID_NETWORK_PATH,//连接的网络路径格式错误,无法检测出来目标IP离线等错误
  18. ERRI_CONNECTION_COUNT_LIMIT_REACHED,//达到最大连接数量
  19. ERRI_OUT_OF_MEMORY,//内存溢出,缓冲区已满
  20. ERRR_CONN_CONFIG_FAILED_INVALID_NETWORK_PATH, //连接的网络地址无效
  21. ERRR_CONN_CONFIG_FAILED_NO_RESPONSE, //连接无响应
  22. ERRR_CONN_CONFIG_FAILED_ERROR_RESPONSE,//连接响应错误
  23. ERRR_INVALID_DESTINATION, //目标标签不存在
  24. ERRR_TAGNAME_TOO_LONG, //标签名超过255字节
  25. ERRR_REQUEST_DATA_TOO_LARGE, //请求数据超限
  26. ERRR_CONN_CONNECTION_TIMED_OUT, //活动连接响应超时,请检查目标IP是否离线
  27. ERRR_TAGNAME_CONVERT_FAILED, //标签名解析错误
  28. ERRR_WRITE_DATASIZE_UNCONSISTENT, //数据长度与标签实际长度不一致
  29. ERRR_SCAN_ERROR, //扫描标签信息失败
  30. };
  31. public enum TAG_TYPE : int
  32. {
  33. TAG_TYPE_UNDEFINE = -1,
  34. TAG_TYPE_BOOL = 0xC1, //新增
  35. TAG_TYPE_SINT = 0xC2,
  36. TAG_TYPE_INT = 0xC3,
  37. TAG_TYPE_DINT = 0xC4,
  38. TAG_TYPE_LINT = 0xC5,
  39. TAG_TYPE_USINT = 0xC6,
  40. TAG_TYPE_UINT = 0xC7,
  41. TAG_TYPE_UDINT = 0xC8,
  42. TAG_TYPE_ULINT = 0xC9,
  43. TAG_TYPE_REAL = 0xCA,
  44. TAG_TYPE_LREAL = 0xCB,
  45. TAG_TYPE_STRING = 0xD0, //新增
  46. TAG_TYPE_BYTE = 0xD1,
  47. TAG_TYPE_WORD = 0xD2,
  48. TAG_TYPE_DWORD = 0xD3,
  49. TAG_TYPE_LWORD = 0xD4,
  50. TAG_TYPE_STRUCT = 0xA2, //新增
  51. TAG_TYPE_ARRAY = 0xA3
  52. };
  53. public enum EtIPConnectionState : int
  54. {
  55. ConnectionNonExistent = 0x0, //该实例未有连接
  56. ConnectionConfiguring = 0x1, //连接正在打开过程中
  57. ConnectionEstablished = 0x3, //连接已成功建立并在活动中
  58. ConnectionTimedOut = 0x4, //连接超时
  59. ConnectionClosing = 0x6 //连接正在关闭中
  60. };
  61. public const uint INVALID_MEMBER = 0xffffffff; //Member is not valid flag should be used when no member should be specified in the UCMM
  62. public struct tagTagReadData
  63. {
  64. public string pName;
  65. public int nElementCount;
  66. public int nArrayPos;
  67. };
  68. public struct tagTagReadDataBase
  69. {
  70. public string pName;
  71. public int nElementCount;
  72. };
  73. public struct tagTagRetValue
  74. {
  75. public IntPtr pData;
  76. public TAG_TYPE pType;
  77. public int nDataLength;
  78. };
  79. [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
  80. public struct tagTagWriteData
  81. {
  82. public string pName;
  83. public IntPtr pData;
  84. public TAG_TYPE pType;
  85. public int nArrayPos;
  86. public int nDataLength;
  87. public int nElementCount;
  88. };
  89. public struct tagTagWriteDataBase
  90. {
  91. public string pName;
  92. public IntPtr pData;
  93. public TAG_TYPE pType;
  94. public int nDataLength;
  95. public int nElementCount;
  96. };
  97. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  98. public static extern void EipStart();
  99. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  100. public static extern void EipStop();
  101. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  102. public static extern int EipOpenConnection(string ipAddress, IntPtr instanceID);
  103. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  104. public static extern int EipCloseConnection(int nID);
  105. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  106. public static extern int EipReadTag(int instanceID, string tagName, IntPtr type, byte[] dest, int dataLength, ushort elementCount = 1, uint nPos = INVALID_MEMBER);
  107. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  108. public static extern int EipWriteTag(int instanceID, string tagName, int type, byte[] source, int dataLength, ushort elementCount = 1, uint nPos = INVALID_MEMBER/*, uint strLen = 0*/);
  109. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  110. public static extern int EipGetConnectionState(int nID);
  111. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  112. public static extern bool EipStartExt(string ipAddress, uint nPort = 0);
  113. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  114. public static extern int EipReadTagList(int instanceID, int nNumOfTags, tagTagReadData[] pTagList, ref tagTagRetValue pdest);
  115. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  116. public static extern ERROR_NO EipWriteTagList(int instanceID, int nNumOfTags, tagTagWriteData[] pTagWritenData);
  117. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  118. public static extern bool DeleteTagListStru(ref tagTagRetValue pRetValue, int nNumOfTags);
  119. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  120. public static extern int EipReadTagExt(int instanceID, string tagName, IntPtr type, byte[] dest, int dataLength, ushort elementCount = 1);
  121. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  122. public static extern int EipWriteTagExt(int instanceID, string tagName, int type, byte[] source, int dataLength, ushort elementCount = 1);
  123. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  124. public static extern int EipReadTagListExt(int instanceID, int nNumOfTags, tagTagReadDataBase[] pTagList, ref tagTagRetValue pdest, bool bScan = false);
  125. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  126. public static extern ERROR_NO EipWriteTagListExt(int instanceID, int nNumOfTags, tagTagWriteDataBase[] pTagWritenData, bool bScan = false);
  127. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  128. public static extern ERROR_NO EipReadTagExt2(int iInstanceID, tagTagReadDataBase[] pTagList, ref tagTagRetValue pDest);
  129. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  130. public static extern ERROR_NO EipWriteTagExt2(int iInstanceID, tagTagWriteDataBase[] pTagWritenData);
  131. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  132. public static extern void ResetTagInfo();
  133. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  134. public static extern ERROR_NO EipReadTagRaw(int iInstanceID, tagTagReadDataBase[] pTagList, ref tagTagRetValue pDest);
  135. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  136. public static extern ERROR_NO EipWriteTagRaw(int iInstanceID, tagTagWriteDataBase[] pTagWritenData);
  137. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  138. public static extern int EipReadTagListRaw(int instanceID, int nNumOfTags, tagTagReadDataBase[] pTagList, ref tagTagRetValue pdest);
  139. [DllImport("EipTagSimple.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
  140. public static extern ERROR_NO EipWriteTagListRaw(int instanceID, int nNumOfTags, tagTagWriteDataBase[] pTagWritenData);
  141. }
  142. }