zmotion.cs 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Runtime.InteropServices;
  5. namespace StageController.HDS
  6. {
  7. public class zmotion
  8. {
  9. //PC库错误码
  10. public enum ZMC_CONNECTION_TYPE
  11. {
  12. ZMC_CONNECTION_COM = 1,
  13. ZMC_CONNECTION_ETH = 2,
  14. ZMC_CONNECTION_USB = 3,
  15. ZMC_CONNECTION_PCI = 4,
  16. };
  17. public struct struct_AxisStates
  18. {
  19. public byte m_HomeState; //
  20. public byte m_AlarmState;
  21. public byte m_SDState;
  22. public byte m_INPState;
  23. public byte m_ElDecState;
  24. public byte m_ElPlusState;
  25. public byte m_HandWheelAState;
  26. public byte m_HandWheelBState;
  27. public byte m_EncodeAState; //
  28. public byte m_EncodeBState; //
  29. public byte m_EMGState; //每个轴都一样
  30. public byte m_ClearState; //
  31. public byte m_EnableOut;
  32. //增加软限位信号
  33. public byte m_SoftElDecState; //0- 有效
  34. public byte m_SoftElPlusState;
  35. public byte m_LatchAState; //锁存信号
  36. public byte m_LatchBState; //锁存信号
  37. };
  38. /*********************************************************
  39. 系统状态定义
  40. **********************************************************/
  41. public enum ZBASIC_TASKSTATE
  42. {
  43. TASK_STATE_RUNING = 1,
  44. TASK_STATE_PAUSE = 3,
  45. TASK_STATE_STOP = 0,
  46. /************ 下面是trio特殊状态, 暂时不支持 ************/
  47. //步进
  48. TASK_STATE_STEP = 2,
  49. TASK_STATE_PAUSING = 4,
  50. TASK_STATE_STOPING = 5,
  51. TASK_STATE_ERROR = 100,//查询的时候如果ID错返回这个值, 脚本初始化发现语法错误也返回这个错误
  52. };
  53. //缺省的等待时间
  54. public const int ZMC_DEFAULT_TIMEOUT = 5000;
  55. //串口延时需要更加长一些
  56. public const int ZMC_DEFAULT_TIMEOUT_COM = 5000;
  57. //新增加
  58. public const int SYS_STATE_CANNOT_CONNECT = 50;//链接不上
  59. /*************************************************************
  60. Description: //与控制器建立链接
  61. Input: //无
  62. Output: //卡链接handle
  63. Return: //错误码
  64. *************************************************************/
  65. [DllImport("zmotion.dll", EntryPoint = "ZMC_Open", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  66. //int32 __stdcall ZMC_Open(ZMC_CONNECTION_TYPE type, char *pconnectstring ,ZMC_HANDLE * phandle);
  67. public static extern Int32 ZMC_Open(ZMC_CONNECTION_TYPE type, string pconnectstring, out IntPtr phandle);
  68. /*************************************************************
  69. Description: //与控制器建立链接, 可以指定连接的等待时间
  70. Input: //无
  71. Output: //卡链接handle
  72. Return: //错误码
  73. *************************************************************/
  74. [DllImport("zmotion.dll", EntryPoint = "ZMC_FastOpen", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  75. //int32 __stdcall ZMC_FastOpen(ZMC_CONNECTION_TYPE type, char *pconnectstring, uint32 uims ,ZMC_HANDLE * phandle);
  76. public static extern Int32 ZMC_FastOpen(ZMC_CONNECTION_TYPE type, string pconnectstring, UInt32 uims,out IntPtr phandle);
  77. /*************************************************************
  78. Description: //与控制器建立链接, 串口方式.
  79. Input: //无
  80. Output: //卡链接handle
  81. Return: //错误码
  82. *************************************************************/
  83. //int32 __stdcall ZMC_OpenCom(uint32 comid, ZMC_HANDLE * phandle);
  84. [DllImport("zmotion.dll", EntryPoint = "ZMC_OpenCom", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  85. public static extern Int32 ZMC_OpenCom(UInt32 comid,out IntPtr phandle);
  86. /*************************************************************
  87. Description: //可以修改缺省的波特率等设置
  88. uint32 dwByteSize = 8, uint32 dwParity = NOPARITY, uint32 dwStopBits = ONESTOPBIT
  89. Input: //
  90. Output: //
  91. Return: //错误码
  92. *************************************************************/
  93. //int32 __stdcall ZMC_SetComDefaultBaud(uint32 dwBaudRate, uint32 dwByteSize, uint32 dwParity, uint32 dwStopBits);
  94. [DllImport("zmotion.dll", EntryPoint = "ZMC_SetComDefaultBaud", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  95. public static extern Int32 ZMC_SetComDefaultBaud(UInt32 dwbaudRate, UInt32 dwByteSize, UInt32 dwParity, UInt32 dwStopBits);
  96. /*************************************************************
  97. Description: //快速控制器建立链接
  98. Input: //无
  99. Output: //卡链接handle
  100. Return: //错误码
  101. *************************************************************/
  102. //int32 __stdcall ZMC_PeakCom(uint32 comid, uint32 uims,ZMC_HANDLE * phandle);
  103. [DllImport("zmotion.dll", EntryPoint = "ZMC_PeakCom", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  104. public static extern Int32 ZMC_PeakCom(UInt32 comid, UInt32 uims, out IntPtr phandle);
  105. /*************************************************************
  106. Description: //与控制器建立链接
  107. Input: //IP地址,字符串的方式输入
  108. Output: //卡链接handle
  109. Return: //错误码
  110. *************************************************************/
  111. //int32 __stdcall ZMC_OpenEth(char *ipaddr, ZMC_HANDLE * phandle);
  112. [DllImport("zmotion.dll", EntryPoint = "ZMC_OpenEth", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  113. public static extern Int32 ZMC_OpenEth(string ipaddr, out IntPtr phandle);
  114. /*************************************************************
  115. Description: //与控制器建立链接
  116. Input: //IP地址,32位数的IP地址输入, 注意字节顺序
  117. Output: //卡链接handle
  118. Return: //错误码
  119. *************************************************************/
  120. //int32 __stdcall ZMC_OpenEth2(struct in_addr straddr, ZMC_HANDLE * phandle);
  121. [DllImport("zmotion.dll", EntryPoint = "ZMC_OpenEth2", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  122. public static extern Int32 ZMC_OpenEth2(UInt32 straddr, out IntPtr phandle);
  123. /*************************************************************
  124. Description: //与控制器建立链接
  125. Input: //PCI卡编号
  126. Output: //卡链接handle
  127. Return: //错误码
  128. *************************************************************/
  129. //int32 __stdcall ZMC_OpenPci(uint32 cardnum, ZMC_HANDLE * phandle);
  130. [DllImport("zmotion.dll", EntryPoint = "ZMC_OpenPci", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  131. public static extern Int32 ZMC_OpenPci(UInt32 cardnum,out IntPtr Phandle);
  132. /*************************************************************
  133. Description: //读取PCI的控制卡个数
  134. Input: //
  135. Output: //
  136. Return: //卡数
  137. *************************************************************/
  138. //uint32 __stdcall ZMC_GetMaxPciCards();
  139. [DllImport("zmotion.dll", EntryPoint = "ZMC_GetMaxPciCards", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  140. public static extern UInt32 ZMC_GetMaxPciCards();
  141. /*************************************************************
  142. Description: //与控制器建立链接, 自动查找COM号
  143. Input: //COM号范围
  144. Output: //卡链接handle
  145. Return: //错误码
  146. *************************************************************/
  147. //int32 __stdcall ZMC_SearchAndOpenCom(uint32 uimincomidfind, uint32 uimaxcomidfind,uint* pcomid, uint32 uims, ZMC_HANDLE * phandle);
  148. [DllImport("zmotion.dll", EntryPoint = "ZMC_SearchAndOpenCom", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  149. public static extern Int32 ZMC_SearchAndOpenCom(UInt32 uimincomidfind, UInt32 uimaxcomidfind, ref UInt32 uims,out IntPtr phandle);
  150. /*************************************************************
  151. Description: //与控制器建立链接, 自动搜索网络. 暂时不支持
  152. Input: //最长等待时间
  153. Output: //卡链接handle 连接的IP地址
  154. Return: //错误码
  155. *************************************************************/
  156. //int32 __stdcall ZMC_SearchAndOpenEth(char *ipaddr, uint32 uims, ZMC_HANDLE * phandle);
  157. [DllImport("zmotion.dll", EntryPoint = "ZMC_SearchAndOpenEth", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  158. public static extern Int32 ZMC_SearchAndOpenEth( string ipaddr, UInt32 uims,out IntPtr phandle);
  159. /*************************************************************
  160. Description: //与控制器建立链接, 自动搜索网络.
  161. Input: //最长等待时间
  162. Output: //控制器IP地址, 地址间用空格区分。
  163. Return: //错误码
  164. *************************************************************/
  165. //int32 __stdcall ZMC_SearchEth(char *ipaddrlist, uint32 addrbufflength, uint32 uims);
  166. [DllImport("zmotion.dll", EntryPoint = "ZMC_SearchEth", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  167. public static extern Int32 ZMC_SearchEth(string ipaddrlist, UInt32 addrbufflength, UInt32 uims);
  168. /*************************************************************
  169. Description: //关闭控制器链接
  170. Input: //卡链接handle
  171. Output: //
  172. Return: //错误码
  173. *************************************************************/
  174. //int32 __stdcall ZMC_Close(ZMC_HANDLE handle);
  175. [DllImport("zmotion.dll", EntryPoint = "ZMC_Close", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  176. public static extern Int32 ZMC_Close(IntPtr handle);
  177. /*************************************************************
  178. Description: //命令的延时等待时间
  179. Input: //卡链接handle 毫秒时间
  180. Output: //
  181. Return: //错误码
  182. *************************************************************/
  183. //int32 __stdcall ZMC_SetTimeOut(ZMC_HANDLE handle, uint32 timems);
  184. [DllImport("zmotion.dll", EntryPoint = "ZMC_SetTimeOut", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  185. public static extern Int32 ZMC_SetTimeOut(IntPtr handle, UInt32 timems);
  186. /*************************************************************
  187. Description: //命令的延时等待时间
  188. Input: //卡链接handle
  189. Output: //毫秒时间
  190. Return: //错误码
  191. *************************************************************/
  192. //int32 __stdcall ZMC_GetTimeOut(ZMC_HANDLE handle, uint32* ptimems);
  193. [DllImport("zmotion.dll", EntryPoint = "ZMC_GetTimeOut", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  194. public static extern Int32 ZMC_GetTimeOut(IntPtr handle, ref UInt32 ptimems);
  195. /*************************************************************
  196. Description: //读取长时间命令的进度
  197. Input: //卡链接handle
  198. Output: //
  199. Return: //进度, 浮点,
  200. *************************************************************/
  201. //float __stdcall ZMC_GetProgress(ZMC_HANDLE handle);
  202. [DllImport("zmotion.dll", EntryPoint = "ZMC_Getprogress", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  203. public static extern float ZMC_GetProgress(IntPtr handle);
  204. /*************************************************************
  205. Description: //读取连接的类型
  206. Input: //卡链接handle
  207. Output: //
  208. Return: //ZMC_CONNECTION_TYPE
  209. *************************************************************/
  210. //uint8 __stdcall ZMC_GetConnectType(ZMC_HANDLE handle);
  211. [DllImport("zmotion.dll", EntryPoint = "ZMC_GetConnectType", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  212. public static extern byte ZMC_GetConnectType(IntPtr handle);
  213. /*************************************************************
  214. Description: //读取连接的名称
  215. Input: //卡链接handle
  216. Output: //
  217. Return: //string
  218. *************************************************************/
  219. //const char* __stdcall ZMC_GetConnectString(ZMC_HANDLE handle);
  220. [DllImport("zmotion.dll", EntryPoint = "ZMC_GetConnectString", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  221. public static extern byte[] ZMC_GetConnectString(IntPtr handle);
  222. //#if 0
  223. //#endif
  224. /***************************************************
  225. ZBASIC命令,文件相关函数列表
  226. ***************************************************/
  227. /*************************************************************
  228. Description: ////读取系统状态
  229. Input: //卡链接handle
  230. Output: //状态 ZBASIC_TASKSTATE
  231. Return: //错误码
  232. *************************************************************/
  233. //int32 __stdcall ZMC_GetState(ZMC_HANDLE handle,uint8 *pstate);
  234. [DllImport("zmotion.dll", EntryPoint = "ZMC_GetState", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  235. public static extern Int32 ZMC_GetState(IntPtr handle, ref byte pstate);
  236. /*************************************************************
  237. Description: //读取暂停导致的任务号
  238. Input: //卡链接handle
  239. Output: //任务号
  240. Return: //错误码
  241. *************************************************************/
  242. //int32 __stdcall ZMC_GetStopPauseTaskid(ZMC_HANDLE handle,uint8 *ptaskid);
  243. [DllImport("zmotion.dll", EntryPoint = "ZMC_GetStopPauseTaskid", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  244. public static extern Int32 ZMC_GetStopPauseTaskid(IntPtr handle, ref byte ptaskid);
  245. /*************************************************************
  246. Description: ////读取链接控制器的总虚拟轴数
  247. Input: //卡链接handle
  248. Output: //
  249. Return: //轴数,出错0
  250. *************************************************************/
  251. //uint8 __stdcall ZMC_GetAxises(ZMC_HANDLE handle);
  252. [DllImport("zmotion.dll", EntryPoint = "ZMC_GetAxises", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  253. public static extern byte ZMC_GetAxises(IntPtr handle);
  254. /*************************************************************
  255. Description: //通用的命令执行接口,此命令不读取控制器的应答. 当控制器没有缓冲时自动阻赛
  256. Input: //卡链接handle pszCommand命令串, uimswait 最长等待ms时间
  257. Output: //
  258. Return: //错误码
  259. *************************************************************/
  260. //int32 __stdcall ZMC_ExecuteNoAck(ZMC_HANDLE handle, const char* pszCommand, uint32 uimswait);
  261. [DllImport("zmotion.dll", EntryPoint = "ZMC_ExecuteNoAck", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  262. public static extern Int32 ZMC_ExecuteNoAck(IntPtr handle, string pszCommand, UInt32 uimswait);
  263. /*************************************************************
  264. Description: //通用的命令执行接口 当控制器没有缓冲时自动阻赛
  265. Input: //卡链接handle pszCommand命令串, uimswait 最长等待ms时间
  266. Output: //psResponse 接收控制器的执行结果输出
  267. Return: //错误码
  268. *************************************************************/
  269. //int32 __stdcall ZMC_Execute(ZMC_HANDLE handle, const char* pszCommand, uint32 uimswait, char* psResponse, uint32 uiResponseLength);
  270. [DllImport("zmotion.dll", EntryPoint = "ZMC_Execute", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  271. public static extern Int32 ZMC_Execute(IntPtr handle, string pszCommand, UInt32 uimswait, byte[] psResponse, UInt32 uiResponseLength);
  272. /*************************************************************
  273. Description: //等待前面的命令执行结束,控制器执行的应答被丢掉. 当没有缓冲时自动阻赛
  274. Input: //卡链接handle uimswait 最长等待ms时间
  275. Output: //
  276. Return: //错误码
  277. *************************************************************/
  278. //int32 __stdcall ZMC_ExecuteWaitDown(ZMC_HANDLE handle, uint32 uimaxms);
  279. [DllImport("zmotion.dll", EntryPoint = "ZMC_ExecuteWaitDown", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  280. public static extern Int32 ZMC_ExecuteWaitDown(IntPtr handle, UInt32 uimaxms);
  281. /*************************************************************
  282. Description: //读取在线命令的应答, 对没有接收应答的命令有用.
  283. 此函数不阻赛
  284. Input: //卡链接handle uimax 缓冲长度
  285. Output: //pbuff 返回读取结果, puiread 读取的长度, pbifExcuteDown 是否已经执行结束
  286. Return: //错误码
  287. *************************************************************/
  288. //int32 __stdcall ZMC_ExecuteGetReceive(ZMC_HANDLE handle, char * pbuff, uint32 uimax, uint32 *puiread, uint8 *pbifExcuteDown);
  289. [DllImport("zmotion.dll", EntryPoint = "ZMC_ExecuteGetReceive", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  290. public static extern Int32 ZMC_ExecuteGetReceive(IntPtr handle, string pbuff, UInt32 uimax, ref UInt32 puiread, ref byte pbifExcuteDown);
  291. /*************************************************************
  292. Description: //读取在线命令的当前剩余缓冲
  293. Input: //卡链接handle
  294. Output: //
  295. Return: //剩余空间 出错 - 0
  296. *************************************************************/
  297. //uint32 __stdcall ZMC_ExecuteGetRemainBuffSpace(ZMC_HANDLE handle);
  298. [DllImport("zmotion.dll", EntryPoint = "ZMC_ExecuteGetRemainBuffSpace", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  299. public static extern UInt32 ZMC_ExecuteGetRemainBuffSpace(IntPtr handle);
  300. /*************************************************************
  301. Description: //直接命令接口,用于调试, 只支持少数命令 暂时不支持
  302. Input: //卡链接handle
  303. Output: //
  304. Return: //错误码
  305. *************************************************************/
  306. //int32 __stdcall ZMC_DirectCommand(ZMC_HANDLE handle, const char* pszCommand, char* psResponse, uint32 uiResponseLength);
  307. [DllImport("zmotion.dll", EntryPoint = "ZMC_DirectCommand", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  308. public static extern Int32 ZMC_DirectCommand(IntPtr handle, string pszCommand, byte[] psResponse, UInt32 uiResponseLength);
  309. /*************************************************************
  310. Description: //打下载包ZAR,
  311. Input: //卡链接handle
  312. pZpjfilename 项目文件名 带路径
  313. pZarfilename ZAR文件名
  314. pPass 软件密码, 绑定APP_PASS 没有密码时pPass = NULL
  315. uid 绑定控制器唯一ID, 0-不绑定
  316. Output: //
  317. Return: //错误码
  318. *************************************************************/
  319. //int32 __stdcall ZMC_MakeZar(const char* pZpjfilename, const char* pZarfilename, const char *pPass, uint32 uid);
  320. [DllImport("zmotion.dll", EntryPoint = "ZMC_MakeZar", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  321. public static extern Int32 ZMC_MakeZar(string pZpjfilename, string pZarfilename, string pPass, UInt32 uid);
  322. /*************************************************************
  323. Description: //打下载包ZAR, 输入二进制的zpj文件
  324. Input: //卡链接handle
  325. pzpj 文件缓冲
  326. pBasDir bas程序文件路径
  327. pZarfilename ZAR文件名
  328. pPass 软件密码, 绑定APP_PASS 没有密码时pPass = NULL
  329. uid 绑定控制器唯一ID, 0-不绑定
  330. Output: //
  331. Return: //错误码
  332. *************************************************************/
  333. //int32 __stdcall ZMC_MakeZar2(void *pzpj,const char *pBasDir, const char* pZarfilename, const char *pPass, uint32 uid);
  334. [DllImport("zmotion.dll", EntryPoint = "ZMC_MakeZar2", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  335. public static extern Int32 ZMC_MakeZar2(IntPtr pzpj, string pBasDir, string pZarfilename, string pPass, UInt32 uid);
  336. /*************************************************************
  337. Description: //下载包文件
  338. Input: //卡链接handle
  339. pfilename zar文件名
  340. pfilenameinControl BASIC系统只有一个包文件,可以不指定.
  341. Output: //
  342. Return: //错误码
  343. *************************************************************/
  344. //int32 __stdcall ZMC_DownZar(ZMC_HANDLE handle, const char* pfilename, const char* pfilenameinControl);
  345. [DllImport("zmotion.dll", EntryPoint = "ZMC_DownZar", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  346. public static extern Int32 ZMC_DownZar(IntPtr handle , string pfilename, string pfilenameinControl);
  347. /*************************************************************
  348. Description: //下载包文件
  349. Input: //卡链接handle
  350. pbuffer zar文件在内存中的地址
  351. buffsize zar文件长度
  352. pfilenameinControl 控制器上文件的名字 , BASIC系统只有一个包文件,可以不指定.
  353. Output: //
  354. Return: //错误码
  355. *************************************************************/
  356. //int32 __stdcall ZMC_DownMemZar(ZMC_HANDLE handle, const char* pbuffer, uint32 buffsize, const char* pfilenameinControl);
  357. [DllImport("zmotion.dll", EntryPoint = "ZMC_DownMemZar", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  358. public static extern Int32 ZMC_DownMemZar(IntPtr handle, string pbuffer , UInt32 buffsize, string pfilenameinControl);
  359. /*************************************************************
  360. Description: //运行包
  361. Input: //卡链接handle
  362. pfilenameinControl 文件名, 当为NULL的时候运行缺省文件 , BASIC系统只有一个包文件,可以不指定.
  363. Output: //
  364. Return: //错误码
  365. *************************************************************/
  366. //int32 __stdcall ZMC_RunZarFile(ZMC_HANDLE handle, const char* pfilenameinControl);
  367. [DllImport("zmotion.dll", EntryPoint = "ZMC_RunZarFile", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  368. public static extern Int32 ZMC_RunZarFile(IntPtr handle, string pfilenameinControl);
  369. /*************************************************************
  370. Description: //暂停继续运行
  371. Input: //卡链接handle
  372. Output: //
  373. Return: //错误码
  374. *************************************************************/
  375. //int32 __stdcall ZMC_Resume(ZMC_HANDLE handle);
  376. [DllImport("zmotion.dll", EntryPoint = "ZMC_Resume", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  377. public static extern Int32 ZMC_Resume(IntPtr handle);
  378. /*************************************************************
  379. Description: //下载到ram中运行
  380. Input: //卡链接handle
  381. pfilename zar文件名, 带路径
  382. Output: //
  383. Return: //错误码
  384. *************************************************************/
  385. //int32 __stdcall ZMC_DownZarToRamAndRun(ZMC_HANDLE handle, const char* pfilename);
  386. [DllImport("zmotion.dll", EntryPoint = "ZMC_DownZarToRamAndRun", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  387. public static extern Int32 ZMC_DownZarToRamAndRun(IntPtr handle , string pfilename);
  388. /*************************************************************
  389. Description: //下载包到ram中运行
  390. Input: //卡链接handle
  391. pbuffer zar文件在内存中的地址
  392. buffsize zar文件长度
  393. Output: //
  394. Return: //错误码
  395. *************************************************************/
  396. //int32 __stdcall ZMC_DownMemZarToRamAndRun(ZMC_HANDLE handle, const char* pbuffer, uint32 buffsize);
  397. [DllImport("zmotion.dll", EntryPoint = "ZMC_DownMemZarToRamAndRun", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  398. public static extern Int32 ZMC_DownMemZarToRamAndRun(IntPtr handle , string buffer, UInt32 buffsize);
  399. /*************************************************************
  400. Description: //打下载包ZAR, 并下载到RAM运行
  401. Input: //卡链接handle 文件名
  402. pZpjfilename 项目文件名 带路径
  403. pPass 软件密码, 绑定APP_PASS 没有密码时pPass = NULL
  404. uid 绑定控制器唯一ID, 0-不绑定
  405. Output: //
  406. Return: //错误码
  407. *************************************************************/
  408. //int32 __stdcall ZMC_MakeZarAndRamRun(const char* pZpjfilename,const char *pPass, uint32 uid);
  409. [DllImport("zmotion.dll", EntryPoint = "ZMC_MakeZarAndRamRun", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  410. public static extern Int32 ZMC_MakeZarAndRamRun(string pZpjfilename, string pPass, UInt32 uid);
  411. /*************************************************************
  412. Description: //打下载包ZAR, 并下载到RAM运行
  413. Input: //卡链接handle 文件名
  414. pzpj 文件缓冲
  415. pBasDir bas程序文件路径
  416. pPass 软件密码, 绑定APP_PASS 没有密码时pPass = NULL
  417. uid 绑定控制器唯一ID, 0-不绑定
  418. Output: //
  419. Return: //错误码
  420. *************************************************************/
  421. //int32 __stdcall ZMC_MakeZarAndRamRun2(ZMC_HANDLE handle, void *pzpj,const char *pBasDir,const char *pPass, uint32 uid);
  422. [DllImport("zmotion.dll", EntryPoint = "ZMC_MakeZarAndRamRun2", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  423. public static extern Int32 ZMC_MakeZarAndRamRun2(IntPtr handle , IntPtr pzpj , string pBasDir, string pPass, UInt32 uid);
  424. /*************************************************************
  425. Description: //打下载包ZAR, 并下载到控制器ROM
  426. Input: //卡链接handle 文件名
  427. pZpjfilename 项目文件名 带路径
  428. pPass 软件密码, 绑定APP_PASS 没有密码时pPass = NULL
  429. uid 绑定控制器唯一ID, 0-不绑定
  430. Output: //
  431. Return: //错误码
  432. *************************************************************/
  433. //int32 __stdcall ZMC_MakeZarAndDown(const char* pZpjfilename,const char *pPass, uint32 uid);
  434. [DllImport("zmotion.dll", EntryPoint = "ZMC_MakeZarAndDown", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  435. public static extern Int32 ZMC_MakeZarAndDown(string pZpjfilename, string pPass, UInt32 uid);
  436. /*************************************************************
  437. Description: //打下载包ZAR, 并下载到控制器ROM
  438. Input: //卡链接handle 文件名
  439. pzpj 文件缓冲
  440. pBasDir bas程序文件路径
  441. pPass 软件密码, 绑定APP_PASS 没有密码时pPass = NULL
  442. uid 绑定控制器唯一ID, 0-不绑定
  443. Output: //
  444. Return: //错误码
  445. *************************************************************/
  446. //int32 __stdcall ZMC_MakeZarAndDown2(ZMC_HANDLE handle, void *pzpj,const char *pBasDir,const char *pPass, uint32 uid);
  447. [DllImport("zmotion.dll", EntryPoint = "ZMC_MakeZarAndDown", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  448. public static extern Int32 ZMC_MakeZarAndDown2(IntPtr handle, IntPtr pzpj, string pBasDir , string pPass, UInt32 uid);
  449. /*************************************************************
  450. Description: //制作单文件的二进制ZPJ文件
  451. Input: //pBasfilename basic文件名,带路径
  452. Output: //pzpj 项目文件缓冲
  453. pBasDir BAS文件路径输出
  454. Return: //错误码
  455. *************************************************************/
  456. //int32 __stdcall ZMC_MakeOneFileZpj(void *pZpjBuff, char *pBasDir, const char* pBasfilename);
  457. [DllImport("zmotion.dll", EntryPoint = "ZMC_MakeOneFileZpj", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  458. public static extern Int32 ZMC_MakeOneFileZpj(IntPtr pZpjBuff, string pBaDir, string pBasfilename);
  459. /*************************************************************
  460. Description: //ZPJ文件重新生成, 用于和上传的ZPJ比较是否修改.
  461. Input: //pZpjfilename 二进制zpj文件名,带路径
  462. Output: //
  463. pbuffer 缓冲,缓冲长度不能小于文件长度
  464. Return: //错误码
  465. *************************************************************/
  466. //int32 __stdcall ZMC_MakeRealZpj(const char* pZpjfilename, char* pbuffer, uint32 buffsize);
  467. [DllImport("zmotion.dll", EntryPoint = "ZMC_MakeRealZpj", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  468. public static extern Int32 ZMC_MakeRealZpj(string pZpjfilename , string pbuffer, UInt32 buffsize);
  469. /*************************************************************
  470. Description: //ZPJ文件重新生成, 用于和上传的ZPJ比较是否修改.
  471. 全部在buff里面
  472. Input: //pBasDir basic文件的路径
  473. pzpj 缓冲,二进制zpj文件, 同时作为输出
  474. Output: //
  475. Return: //错误码
  476. *************************************************************/
  477. //int32 __stdcall ZMC_MakeRealZpjMem(const char* pBasDir, void *pzpj);
  478. [DllImport("zmotion.dll", EntryPoint = "ZMC_MakeRealZpjMem", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  479. public static extern Int32 ZMC_MakeRealZpjMem(string pBasDir, IntPtr pzpj);
  480. /*************************************************************
  481. Description: //制作ZLIB文件
  482. Input: //pfilenameBas basic 文件
  483. pfilenameZlb zlb 文件
  484. Output: //
  485. Return: //错误码
  486. *************************************************************/
  487. //int32 __stdcall ZMC_MakeZlib(const char* pfilenameBas, const char* pfilenameZlb);
  488. [DllImport("zmotion.dll", EntryPoint = "ZMC_MakeZlib", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  489. public static extern Int32 ZMC_MakeZlib(string pfilenameBas, string pfilenameZlb);
  490. /*************************************************************
  491. Description: //获取ZLIB文件的全局描述,包括变量,SUB等
  492. Input: //pfilenameZlb lib文件名,带路径
  493. Output: //pbuffer 返回全局描述
  494. Return: //错误码
  495. *************************************************************/
  496. //int32 __stdcall ZMC_GetZlibGlobalDefine(const char* pfilenameZlb, char* pbuffer, uint32 buffsize);
  497. [DllImport("zmotion.dll", EntryPoint = "ZMC_GetZlibGlobalDefine", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  498. public static extern Int32 ZMC_GetZlibGlobalDefine(string pfilenameZlb, byte[] pbuffer, UInt32 buffsize);
  499. /*************************************************************
  500. Description: //上传zpj,用于PC和控制器文件比较
  501. Input: //卡链接handle
  502. pbuffer 接收zpj文件的缓冲 buffsize 缓冲最大长度
  503. Output: //puifilesize 读取的zpj文件长度
  504. Return: //错误码
  505. *************************************************************/
  506. //int32 __stdcall ZMC_UpCurZpjToMem(ZMC_HANDLE handle, char* pbuffer, uint32 buffsize, uint32* puifilesize);
  507. [DllImport("zmotion.dll", EntryPoint = "ZMC_UpCurZpjToMem", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  508. public static extern Int32 ZMC_UpCurZpjToMem(IntPtr handle, string pbufferm, UInt32 buffsize);
  509. /*************************************************************
  510. Description: //暂停
  511. Input: //卡链接handle
  512. Output: //
  513. Return: //错误码
  514. *************************************************************/
  515. //int32 __stdcall ZMC_Pause(ZMC_HANDLE handle);
  516. [DllImport("zmotion.dll", EntryPoint = "ZMC_Pause", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  517. public static extern Int32 ZMC_Pause(IntPtr handle);
  518. /*************************************************************
  519. Description: //停止
  520. Input: //卡链接handle
  521. Output: //
  522. Return: //错误码
  523. *************************************************************/
  524. //int32 __stdcall ZMC_Stop(ZMC_HANDLE handle);
  525. [DllImport("zmotion.dll", EntryPoint = "ZMC_Stop", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  526. public static extern Int32 ZMC_Stop(IntPtr handle);
  527. /*********************************************************
  528. 3次文件功能暂时不支持.
  529. **********************************************************/
  530. /*************************************************************
  531. Description: //检查文件是否存在
  532. Input: //卡链接handle 控制器上文件名,不带扩展
  533. Output: //
  534. Return: //错误码
  535. *************************************************************/
  536. //int32 __stdcall ZMC_Check3File(ZMC_HANDLE handle, const char* pfilenameinControl, uint8 *pbIfExist, uint32 *pFileSize);
  537. [DllImport("zmotion.dll", EntryPoint = "ZMC_Check3File", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  538. public static extern Int32 ZMC_Check3File(IntPtr handle, string pfilenameinControl, ref byte pbIfExist, ref UInt32 pFileSize);
  539. /*************************************************************
  540. Description: //查找控制器上的文件, 文件名为空表示文件不不存在
  541. Input: //卡链接handle 控制器上文件名,不带扩展
  542. Output: // 是否存在 文件大小
  543. Return: //错误码
  544. *************************************************************/
  545. //int32 __stdcall ZMC_FindFirst3File(ZMC_HANDLE handle, char* pfilenameinControl, uint32 *pFileSize);
  546. [DllImport("zmotion.dll", EntryPoint = "ZMC_FindFirst3File", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  547. public static extern Int32 ZMC_FindFirst3File(Int32 handle, string pfilenameinControl, ref UInt32 pFileSize);
  548. /*************************************************************
  549. Description: //查找控制器上的文件, 文件名为空表示文件不不存在
  550. Input: //卡链接handle 控制器上文件名,不带扩展
  551. Output: // 是否存在 文件大小
  552. Return: //错误码
  553. *************************************************************/
  554. //int32 __stdcall ZMC_FindNext3File(ZMC_HANDLE handle, char* pfilenameinControl, uint32 *pFileSize);
  555. [DllImport("zmotion.dll", EntryPoint = "ZMC_FindNext3File", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  556. public static extern Int32 ZMC_FindNext3File(Int32 handle, string pfilenameinControl, ref UInt32 pFileSize);
  557. /*************************************************************
  558. Description: //查找控制器上的当前文件
  559. Input: //卡链接handle 控制器上文件名,不带扩展
  560. Output: // 是否存在 文件大小(暂时不支持)
  561. Return: //错误码
  562. *************************************************************/
  563. //int32 __stdcall ZMC_GetCur3File(ZMC_HANDLE handle, char* pfilenameinControl, uint32 *pFileSize);
  564. [DllImport("zmotion.dll", EntryPoint = "ZMC_GetCur3File", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  565. public static extern Int32 ZMC_FindNext3File(IntPtr handle, string pfilenameinControl, ref UInt32 pFileSize);
  566. /*************************************************************
  567. Description: //删除控制器上的文件
  568. Input: //卡链接handle 控制器上文件名,不带扩展
  569. Output: //
  570. Return: //错误码
  571. *************************************************************/
  572. //int32 __stdcall ZMC_Delete3File(ZMC_HANDLE handle, const char* pfilenameinControl);
  573. [DllImport("zmotion.dll", EntryPoint = "ZMC_Delete3File", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  574. public static extern Int32 ZMC_Delete3File(IntPtr handle, string pfilenameinControl);
  575. /*************************************************************
  576. Description: //删除控制器上的文件
  577. Input: //卡链接handle
  578. Output: //
  579. Return: //错误码
  580. *************************************************************/
  581. //int32 __stdcall ZMC_RemoveAll3Files(ZMC_HANDLE handle);
  582. [DllImport("zmotion.dll", EntryPoint = "ZMC_RemoveAll3File", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  583. public static extern Int32 ZMC_RemoveAll3File(IntPtr handle);
  584. /*************************************************************
  585. Description: //写用户flash块, float数据
  586. Input: //卡链接handle
  587. uiflashid flash块号
  588. uinumes 变量个数
  589. Output: //
  590. Return: //错误码
  591. *************************************************************/
  592. //int32 __stdcall ZMC_FlashWritef(ZMC_HANDLE handle, uint16 uiflashid, uint32 uinumes, float *pfvlue);
  593. [DllImport("zmotion.dll", EntryPoint = "ZMC_FlashWrite", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  594. public static extern Int32 ZMC_FlashWritef(IntPtr handle, UInt16 uiflashid, UInt32 uinumes, float[] pfvlue);
  595. /*************************************************************
  596. Description: //读取用户flash块, float数据
  597. Input: //卡链接handle
  598. uiflashid flash块号
  599. uibuffnum 缓冲变量个数
  600. Output: //
  601. puinumesread 读取到的变量个数
  602. Return: //错误码
  603. *************************************************************/
  604. //int32 __stdcall ZMC_FlashReadf(ZMC_HANDLE handle, uint16 uiflashid, uint32 uibuffnum, float *pfvlue, uint32* puinumesread);
  605. [DllImport("zmotion.dll", EntryPoint = "ZMC_FlashReadf", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  606. public static extern Int32 ZMC_FlashReadf(IntPtr handle, UInt16 uiflashid, UInt32 uibuffnum, float[] pfvlue, ref UInt32 puinumesread);
  607. /*************************************************************
  608. Description: //读取当前控制器的IP地址,
  609. Input: //卡链接handle
  610. Output: //sIpAddr 返回IP地址, 注意:当设置dhcp以后,设置的IP与实际的不一致。
  611. Return: //错误码
  612. *************************************************************/
  613. //int32 __stdcall ZMC_GetCurIpAddr(ZMC_HANDLE handle, char* sIpAddr);
  614. [DllImport("zmotion.dll", EntryPoint = "ZMC_GetCurIpAddr", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  615. public static extern Int32 ZMC_GetCurIpAddr(IntPtr handle , byte[] sIpAddr);
  616. /*************************************************************
  617. Description: //读取字符串在当前控制器上的类型
  618. Input: //卡链接handle
  619. Output: //type 类型,string_types
  620. TYPE2 当类型为数组时,代表数组的长度
  621. pvalue 变量直接返回值
  622. Return: //错误码
  623. *************************************************************/
  624. //int32 __stdcall ZMC_GetStringType(ZMC_HANDLE handle, const char *sname, uint16 filenum, uint16* type, uint32* type2, double *pvalue);
  625. [DllImport("zmotion.dll", EntryPoint = "ZMC_GetStringType", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  626. public static extern Int32 ZMC_GetStringType(IntPtr handle, string sname, UInt16 filenum, UInt16[] type, ref UInt32 type2,ref double pvalue);
  627. /*************************************************************
  628. Description: //读取脚本输出的信息
  629. Input: //卡链接handle
  630. Output: //
  631. Return: //错误码
  632. *************************************************************/
  633. //int32 __stdcall ZMC_ReadMessage(ZMC_HANDLE handle, char * pbuff, uint32 uimax, uint32 *puiread);
  634. [DllImport("zmotion.dll", EntryPoint = "ZMC_ReadMessage", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  635. public static extern Int32 ZMC_ReadMessage(IntPtr handle, byte[] pbuff, UInt32 uimax, ref UInt32 puiread);
  636. //uint32 __stdcall ZMC_Modbus_Set0x(ZMC_HANDLE handle, uint16 start, uint16 inum, uint8* pdata);
  637. [DllImport("zmotion.dll", EntryPoint = "ZMC_Modbus_Set0x", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  638. public static extern Int32 ZMC_Modbus_Set0x(IntPtr handle, UInt16 start, UInt16 inum, byte[] pdata);
  639. //uint32 __stdcall ZMC_Modbus_Get0x(ZMC_HANDLE handle, uint16 start, uint16 inum, uint8* pdata);
  640. [DllImport("zmotion.dll", EntryPoint = "ZMC_Modbus_Get0x", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  641. public static extern Int32 ZMC_Modbus_Get0x(IntPtr handle, UInt16 start, UInt16 inum, byte[] pdata);
  642. //uint32 __stdcall ZMC_Modbus_Get4x(ZMC_HANDLE handle, uint16 start, uint16 inum, uint16* pdata);
  643. [DllImport("zmotion.dll", EntryPoint = "ZMC_Modbus_Get4x", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  644. public static extern Int32 ZMC_Modbus_Get4x(IntPtr handle, UInt16 start, UInt16 inum, UInt16[] pdata);
  645. //uint32 __stdcall ZMC_Modbus_Set4x(ZMC_HANDLE handle, uint16 start, uint16 inum, uint16* pdata);
  646. [DllImport("zmotion.dll", EntryPoint = "ZMC_Modbus_Set4x", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
  647. public static extern Int32 ZMC_Modbus_Set4x(IntPtr handle, UInt16 start, UInt16 inum, UInt16[] pdata);
  648. }
  649. }