创新can调试器Linux版
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

275 lines
6.8 KiB

4 years ago
  1. unit ControlCAN;
  2. interface
  3. uses
  4. WinTypes;
  5. const
  6. DLL_NAME = 'ControlCAN.dll';//Dynamic library name
  7. type
  8. //--------------------------------------ZLG compatible functions and data types -----------------
  9. //Declare each data structure
  10. //USB-CAN bus adapter card data type information.
  11. VCI_BOARD_INFO = Record
  12. hw_Version : WORD;
  13. fw_Version : WORD;
  14. dr_Version : WORD;
  15. in_Version : WORD;
  16. irq_Num : WORD;
  17. can_Num : BYTE;
  18. str_Serial_Num : array[0..19] of CHAR;
  19. str_hw_Type : array[0..39] of CHAR;
  20. Reserved : array[0..3] of WORD;
  21. END;
  22. PVCI_BOARD_INFO=^VCI_BOARD_INFO;
  23. //Defined data types CAN message frame.
  24. VCI_CAN_OBJ = Record
  25. ID : UINT;
  26. TimeStamp : UINT;
  27. TimeFlag : BYTE;
  28. SendType : BYTE;
  29. RemoteFlag : BYTE;
  30. ExternFlag : BYTE;
  31. DataLen : BYTE;
  32. Data : array[0..7] of BYTE;
  33. Reserved : array[0..2] of BYTE;
  34. END;
  35. PVCI_CAN_OBJ = ^VCI_CAN_OBJ;
  36. //Defined data types CAN controller states.
  37. VCI_CAN_STATUS = Record
  38. ErrInterrupt : UCHAR;
  39. regMode : UCHAR;
  40. regStatus : UCHAR;
  41. regALCapture : UCHAR;
  42. regECCapture : UCHAR;
  43. regEWLimit : UCHAR;
  44. regRECounter : UCHAR;
  45. regTECounter : UCHAR;
  46. Reserved : DWORD;
  47. END;
  48. PVCI_CAN_STATUS = ^VCI_CAN_STATUS;
  49. //Definition of wrong data type information.
  50. VCI_ERR_INFO = Record
  51. ErrCode : UINT;
  52. Passive_ErrData : array[0..2] of BYTE;
  53. ArLost_ErrData : BYTE;
  54. END;
  55. PVCI_ERR_INFO = ^VCI_ERR_INFO;
  56. //CAN initialization data type definition
  57. VCI_INIT_CONFIG = Record
  58. AccCode : DWORD;
  59. AccMask : DWORD;
  60. Reserved : DWORD;
  61. Filter : UCHAR;
  62. Timing0 : UCHAR;
  63. Timing1 : UCHAR;
  64. Mode : UCHAR;
  65. END;
  66. PVCI_INIT_CONFIG = ^VCI_INIT_CONFIG;
  67. //Importing DLL function
  68. function VCI_OpenDevice ( DevType : DWORD;
  69. DevIndex : DWORD;
  70. Reserved : DWORD) : DWORD;
  71. stdcall;
  72. external DLL_NAME;
  73. function VCI_CloseDevice ( DevType : DWORD;
  74. DevIndex : DWORD) : DWORD;
  75. stdcall;
  76. external DLL_NAME;
  77. function VCI_InitCAN ( DevType : DWORD;
  78. DevIndex : DWORD;
  79. CANIndex : DWORD;
  80. pInitConfig : PVCI_INIT_CONFIG) : DWORD;
  81. stdcall;
  82. external DLL_NAME;
  83. function VCI_ReadBoardInfo ( DevType : DWORD;
  84. DevIndex : DWORD;
  85. pInfo : PVCI_BOARD_INFO) : DWORD;
  86. stdcall;
  87. external DLL_NAME;
  88. function VCI_ReadErrInfo ( DevType : DWORD;
  89. DevIndex : DWORD;
  90. CANIndex : DWORD;
  91. pErrInfo : PVCI_ERR_INFO) : DWORD;
  92. stdcall;
  93. external DLL_NAME;
  94. function VCI_ReadCANStatus ( DevType : DWORD;
  95. DevIndex : DWORD;
  96. CANIndex : DWORD;
  97. pCANStatus : PVCI_CAN_STATUS) : DWORD;
  98. stdcall;
  99. external DLL_NAME;
  100. function VCI_GetReference ( DevType : DWORD;
  101. DevIndex : DWORD;
  102. CANIndex : DWORD;
  103. RefType : DWORD;
  104. pData : Pointer) : DWORD;
  105. stdcall;
  106. external DLL_NAME;
  107. function VCI_SetReference ( DevType : DWORD;
  108. DevIndex : DWORD;
  109. CANIndex : DWORD;
  110. RefType : DWORD;
  111. pData : Pointer) : DWORD;
  112. stdcall;
  113. external DLL_NAME;
  114. function VCI_GetReceiveNum ( DevType : DWORD;
  115. DevIndex : DWORD;
  116. CANIndex : DWORD) : ULONG;
  117. stdcall;
  118. external DLL_NAME;
  119. function VCI_ClearBuffer ( DevType : DWORD;
  120. DevIndex : DWORD;
  121. CANIndex : DWORD) : DWORD;
  122. stdcall;
  123. external DLL_NAME;
  124. function VCI_StartCAN ( DevType : DWORD;
  125. DevIndex : DWORD;
  126. CANIndex : DWORD) : DWORD;
  127. stdcall;
  128. external DLL_NAME;
  129. function VCI_ResetCAN ( DevType : DWORD;
  130. DevIndex : DWORD;
  131. CANIndex : DWORD) : DWORD;
  132. stdcall;
  133. external DLL_NAME;
  134. function VCI_Transmit ( DevType : DWORD;
  135. DevIndex : DWORD;
  136. CANIndex : DWORD;
  137. pSend : PVCI_CAN_OBJ;
  138. Len : ULONG) : ULONG;
  139. stdcall;
  140. external DLL_NAME;
  141. function VCI_Receive ( DevType : DWORD;
  142. DevIndex : DWORD;
  143. CANIndex : DWORD;
  144. pReceive : PVCI_CAN_OBJ;
  145. Len : ULONG;
  146. WaitTime : integer) : ULONG;
  147. stdcall;
  148. external DLL_NAME;
  149. //------------------------�������������ݽṹ����--------------------------------
  150. type
  151. //Data type USB-CAN bus adapter card information, a, of the type referred to in VCI_FindUsbDevice function
  152. VCI_BOARD_INFO1 = Record
  153. hw_Version : WORD;
  154. fw_Version : WORD;
  155. dr_Version : WORD;
  156. in_Version : WORD;
  157. irq_Num : WORD;
  158. can_Num : BYTE;
  159. reserved : BYTE;
  160. str_Serial_Num : array[0..7] of CHAR;
  161. str_hw_Type : array[0..15] of CHAR;
  162. str_USB_Serial : array[0..3,0..3] of CHAR;
  163. END;
  164. PVCI_BOARD_INFO1=^VCI_BOARD_INFO1;
  165. //Define the general parameters of type
  166. VCI_REF_NORMAL = Record
  167. Mode : UCHAR;
  168. Filter : UCHAR;
  169. AccCode : DWORD;
  170. AccMask : DWORD;
  171. kBaudRate : UCHAR;
  172. Timing0 : UCHAR;
  173. Timing1 : UCHAR;
  174. CANRX_EN : UCHAR;
  175. UARTBAUD : UCHAR;
  176. END;
  177. PVCI_REF_NORMAL = ^VCI_REF_NORMAL;
  178. // Define the baud rate setting parameter types)
  179. VCI_BAUD_TYPE = Record
  180. Baud : DWORD;
  181. SJW : UCHAR;
  182. BRP : UCHAR;
  183. SAM : UCHAR;
  184. PHSEG2_SEL : UCHAR;
  185. PRSEG : UCHAR;
  186. PHSEG1 : UCHAR;
  187. PHSEG2 : UCHAR;
  188. END;
  189. PVCI_BAUD_TYPE = ^VCI_BAUD_TYPE;
  190. //Reference parameter type definition
  191. VCI_REF_STRUCT = Record
  192. RefNormal : VCI_REF_NORMAL;
  193. Reserved : UCHAR;
  194. BaudType : VCI_BAUD_TYPE;
  195. END;
  196. PVCI_REF_STRUCT = ^VCI_REF_STRUCT;
  197. //Importing DLL function
  198. function VCI_GetReference2 ( DevType : DWORD;
  199. DevIndex : DWORD;
  200. CANIndex : DWORD;
  201. Reserved : DWORD;
  202. pRefStruct : PVCI_REF_STRUCT) : DWORD;
  203. stdcall;
  204. external DLL_NAME;
  205. function VCI_SetReference2 ( DevType : DWORD;
  206. DevIndex : DWORD;
  207. CANIndex : DWORD;
  208. RefType : DWORD;
  209. pRefStruct : Pointer) : DWORD;
  210. stdcall;
  211. external DLL_NAME;
  212. function VCI_ResumeConfig ( DevType : DWORD;
  213. DevIndex : DWORD;
  214. CANIndex : DWORD) : DWORD;
  215. stdcall;
  216. external DLL_NAME;
  217. function VCI_ConnectDevice ( DevType : DWORD;
  218. DevIndex : DWORD) : DWORD;
  219. stdcall;
  220. external DLL_NAME;
  221. function VCI_UsbDeviceReset ( DevType : DWORD;
  222. DevIndex : DWORD;
  223. Reserved : DWORD) : DWORD;
  224. stdcall;
  225. external DLL_NAME;
  226. function VCI_FindUsbDevice ( pInfo : PVCI_BOARD_INFO1) : DWORD;
  227. stdcall;
  228. external DLL_NAME;
  229. implementation
  230. end.