add Motic Microscope SDK supports
[mmanager-3rdparty.git] / Motic / MoticMicroscopeSDK.h
1 #pragma once\r
2 \r
3 /**\r
4 \brief ÔØÎį̈ʼþ\r
5 */\r
6 #define XY_MOVING (0)\r
7 #define XY_MOVED (1)\r
8 /**\r
9 \brief Z Öáʼþ\r
10 */\r
11 #define Z_MOVING (10)\r
12 #define Z_MOVED (11)\r
13 /**\r
14 \brief Îᄉʼþ\r
15 */\r
16 #define OBJECTIVE_CHANGING (20)\r
17 #define OBJECTIVE_PRECHANGED (21)\r
18 #define OBJECTIVE_CHANGED (22)\r
19 /**\r
20 \brief ÕÕÃ÷ʼþ\r
21 */\r
22 #define ILLUMINATION_CHANGED (30)\r
23 \r
24 \r
25 /**\r
26 \brief ÏÔ΢¾µÊ¼þ»Øµ÷º¯Êý\r
27 */\r
28 typedef void (*fnEventHandler)(int eventId, int data, void* userdata);\r
29 \r
30 /**\r
31 \brief ³õʼ»¯ÏÔ΢¾µ\r
32 */\r
33 int mms_Initialize(const wchar_t* configpath);\r
34 \r
35 /**\r
36 \brief ·´³õʼ»¯ÏÔ΢¾µ\r
37 */\r
38 void mms_Uninitialize();\r
39 \r
40 /**\r
41 \brief ÉèÖÃÏÔ΢¾µ»Øµ÷º¯Êý\r
42 */\r
43 void mms_SetEventHandler(fnEventHandler eh, void* userdata);\r
44 \r
45 /**\r
46 \brief ÔØÎį̈ÊÇ·ñ¿ÉÓÃ\r
47 */\r
48 bool xy_Available();\r
49 \r
50 /**\r
51 \brief ÊÇ·ñÕýÔÚÒƶ¯¡£           \r
52 */\r
53 bool xy_IsMoving();\r
54 \r
55 /**\r
56 \brief »ñÈ¡x·½ÏòµÄ·¶Î§¡£\r
57 \param min ×îСλÖÃ(΢Ã×)¡£\r
58 \param max ×î´óλÖÃ(΢Ã×)¡£\r
59 */\r
60 void xy_XRange(double* min,double* max);\r
61 \r
62 /**\r
63 \brief »ñÈ¡y·½ÏòµÄ·¶Î§¡£\r
64 \param min ×îСλÖÃ(΢Ã×)¡£\r
65 \param max ×î´óλÖÃ(΢Ã×)¡£\r
66 */\r
67 void xy_YRange(double* min,double* max);\r
68 \r
69 /**\r
70 \brief »ñÈ¡Ëٶȷ¶Î§¡£\r
71 \param min ×îС¡£\r
72 \param max ×î´ó¡£       \r
73 */\r
74 void xy_SpeedRange(double* min,double* max);\r
75 \r
76 /**\r
77 \brief »ñÈ¡ÊÓ³¡ÖÐÐĵ±Ç°Î»Öá£\r
78 \param positionX [out]xλÖÃ(΢Ã×)¡£\r
79 \param positionY [out]yλÖÃ(΢Ã×)¡£\r
80 */\r
81 void xy_CurrentPosition(double* positionX,double* positionY);\r
82 \r
83 /**\r
84 \brief Ïà¶ÔÒƶ¯¡£\r
85 \param deltaX x·½ÏòÆ«ÒÆÁ¿(΢Ã×)¡£\r
86 \param deltaY y·½ÏòÆ«ÒÆÁ¿(΢Ã×)¡£\r
87 \param speed ËÙ¶È(΢Ã×/Ãë)¡£\r
88 \note Èç¹ûûÓÐÒƶ¯,ÒѾ­´¦ÓÚÄ¿±êλÖòúÉúXY_MOVED£¬\r
89 Èç¹ûspeed=0»òÕß´¦ÓÚÎÞ·¨Òƶ¯µÄ״̬,²»²úÉúÈκÎÏûÏ¢,·µ»Øfalse¡£\r
90 */\r
91 bool xy_MoveRelatively(double deltaX,double deltaY,double speed);\r
92 \r
93 /**\r
94 \brief Òƶ¯µ½¾ø¶ÔλÖá£\r
95 \param positionX xλÖÃ(΢Ã×)¡£\r
96 \param positionY yλÖÃ(΢Ã×)¡£\r
97 \param speed Ëٶȡ£\r
98 \note Èç¹ûûÓÐÒƶ¯,ÒѾ­´¦ÓÚÄ¿±êλÖòúÉúXY_MOVED,\r
99 speed=0»òÕß´¦ÓÚÎÞ·¨Òƶ¯µÄ״̬,²»²úÉúÈκÎÏûÏ¢,·µ»Øfalse¡£\r
100 */\r
101 bool xy_MoveAbsolutely(double positionX,double positionY,double speed);\r
102 \r
103 /**\r
104 \brief ÍùÒ»¸ö·½ÏòÁ¬ÐøÒƶ¯¡£\r
105 \param angle Ô˶¯½Ç¶È,ÄæʱÕëΪÕý,0¶ÈΪxÕý·½Ïò(ÓÒ)£¬(½Ç¶È0~360)¡£\r
106 \param speed Ëٶȡ£\r
107 \note Èç¹ûûÓÐÒƶ¯,ÒѾ­´¦ÓÚÄ¿±êλÖòúÉúXY_MOVED,\r
108 speed=0»òÕß´¦ÓÚÎÞ·¨Òƶ¯µÄ״̬,²»²úÉúÈκÎÏûÏ¢,·µ»Øfalse¡£\r
109 */\r
110 bool xy_MoveContinuously(double angle,double speed);\r
111 \r
112 /**\r
113 \brief Í£Ö¹Òƶ¯¡£\r
114 */\r
115 void xy_Stop();\r
116 \r
117 /**\r
118 \brief ÉèÖÿջز¹³¥¡£\r
119 \param compensationx X Öá¿Õ»Ø²¹³¥Öµ(΢Ã×);\r
120 \param compensationy Y Öá¿Õ»Ø²¹³¥Öµ(΢Ã×);\r
121 */\r
122 void xy_SetCompensation(double compensationx, double compensationy);\r
123 \r
124 /**\r
125 \brief »ñÈ¡¿Õ»Ø²¹³¥ÉèÖá£\r
126 \param compensationx X Öá¿Õ»Ø²¹³¥Öµ(΢Ã×);\r
127 \param compensationy Y Öá¿Õ»Ø²¹³¥Öµ(΢Ã×);\r
128 */\r
129 void xy_GetCompensation(double* compensationx, double* compensationy);\r
130 \r
131 /**\r
132 \brief »ñÈ¡Ó²¼þÔ˶¯±ÈÀý¡£\r
133 \param scaleX [out]΢Ã×/Ó²¼þÒƶ¯µ¥Î»£¨µç»ú²½³¤µÈ£©¡£\r
134 \param scaleY [out]΢Ã×/Ó²¼þÒƶ¯µ¥Î»£¨µç»ú²½³¤µÈ£©¡£\r
135 */\r
136 void xy_GetHardwareMotionScale(double* scaleX,double* scaleY);\r
137 \r
138 /**\r
139 \brief Z ÖáÊÇ·ñ¿ÉÓÃ\r
140 */\r
141 bool z_Available();\r
142 \r
143 /**\r
144 \brief ÊÇ·ñÕýÔÚÒƶ¯¡£           \r
145 */\r
146 bool z_IsMoving();\r
147 \r
148 /**\r
149 \brief »ñÈ¡Òƶ¯·¶Î§¡£\r
150 \param min ×îСλÖÃ(΢Ã×)¡£\r
151 \param max ×î´óλÖÃ(΢Ã×)¡£\r
152 */\r
153 void z_Range(double* min,double* max);\r
154 \r
155 /**\r
156 \brief »ñÈ¡Ëٶȷ¶Î§¡£\r
157 \param min ×îС¡£\r
158 \param max ×î´ó¡£\r
159 */\r
160 void z_SpeedRange(double* min,double* max);\r
161 \r
162 /**\r
163 \brief »ñÈ¡µ±Ç°Î»Öá£(΢Ã×)             \r
164 */\r
165 double z_CurrentPosition();\r
166 \r
167 /**\r
168 \brief Ïà¶ÔÒƶ¯¡£\r
169 \param delta Ïà¶ÔλÒÆ(΢Ã×)¡£\r
170 \param speed Ëٶȡ£\r
171 \note Èç¹ûûÓÐÒƶ¯,ÒѾ­´¦ÓÚÄ¿±êλÖòúÉúZ_MOVED£¬\r
172 speed=0»òÕß´¦ÓÚÎÞ·¨Òƶ¯µÄ״̬,²»²úÉúÈκÎÏûÏ¢,·µ»Øfalse¡£\r
173 */\r
174 bool z_MoveRelatively(double delta,double speed);\r
175 \r
176 /**\r
177 \brief Òƶ¯µ½¾ø¶ÔλÖá£\r
178 \param position Î»ÖÃ(΢Ã×)¡£\r
179 \param speed Ëٶȡ£\r
180 \note Èç¹ûûÓÐÒƶ¯,ÒѾ­´¦ÓÚÄ¿±êλÖòúÉúZ_MOVED£¬\r
181 speed=0»òÕß´¦ÓÚÎÞ·¨Òƶ¯µÄ״̬,²»²úÉúÈκÎÏûÏ¢,·µ»Øfalse¡£\r
182 */\r
183 bool z_MoveAbsolutely(double position,double speed);\r
184 \r
185 /**\r
186 \brief ÍùÒ»¸ö·½Ïò½øÐÐÁ¬ÐøÒƶ¯¡£\r
187 \param dir ·½Ïò,true:Õý·½Ïò,false:¸º·½Ïò¡£\r
188 \param speed Ëٶȡ£\r
189 \note Èç¹ûûÓÐÒƶ¯,ÒѾ­´¦ÓÚÄ¿±êλÖòúÉúZ_MOVED£¬\r
190 speed=0»òÕß´¦ÓÚÎÞ·¨Òƶ¯µÄ״̬,²»²úÉúÈκÎÏûÏ¢,·µ»Øfalse¡£\r
191 */\r
192 bool z_MoveContinuously(bool dir,double speed);\r
193 \r
194 /**\r
195 \brief Í£Ö¹¡£\r
196 */\r
197 void z_Stop();\r
198 \r
199 /**\r
200 \brief ÉèÖÿջز¹³¥¡£\r
201 \param compensation ¿Õ»Ø²¹³¥Öµ(΢Ã×);\r
202 */\r
203 void z_SetCompensation(double compensation);\r
204 \r
205 /**\r
206 \brief »ñÈ¡¿Õ»Ø²¹³¥ÉèÖá£\r
207 \return ¿Õ»Ø²¹³¥ÉèÖÃ(΢Ã×)¡£\r
208 */\r
209 double z_GetCompensation();\r
210 \r
211 /**\r
212 \brief »ñÈ¡Ó²¼þÔ˶¯±ÈÀý¡£(΢Ã×/Ó²¼þÒƶ¯µ¥Î»(µç»ú²½³¤µÈ))¡£\r
213 */\r
214 double z_GetHardwareMotionScale();\r
215 \r
216 \r
217 /**\r
218 \brief Îï¾µÊÇ·ñ¿ÉÓÃ\r
219 */\r
220 bool obj_Available();\r
221 \r
222 /**\r
223 \brief »ñÈ¡Îï¾µÊýÁ¿¡£\r
224 */\r
225 int obj_GetCount();\r
226 \r
227 /**\r
228 \brief »ñÈ¡Îï¾µ·Å´ó±¶Êý¡£\r
229 \param n [in]»ùÓÚ0µÄÎï¾µË÷Òý¡£\r
230 */\r
231 double obj_GetObjectiveMagnification(int n);\r
232 \r
233 /**\r
234 \brief Çл»Îï¾µ¡£\r
235 \param n [in]Ä¿±êÎï¾µË÷Òý¡£\r
236 */\r
237 bool obj_SwitchObjective(int n);\r
238 \r
239 /**\r
240 \brief »ñÈ¡µ±Ç°Îï¾µ¡£\r
241 \return Îï¾µË÷Òý¡£\r
242 */\r
243 int obj_GetCurrentObjective();\r
244 \r
245 \r
246 /**\r
247 \brief ÕÕÃ÷ÊÇ·ñ¿ÉÓÃ\r
248 */\r
249 bool illumination_Available();\r
250 \r
251 /**\r
252 \brief »ñÈ¡ÕÕÃ÷Öµ·¶Î§¡£\r
253 \param min [out]×îСֵ¡£\r
254 \param max [out]×î´óÖµ¡£                \r
255 */\r
256 void illumination_GetRange(int* min,int* max);\r
257 \r
258 /**\r
259 \brief »ñÈ¡ÕÕÃ÷Öµ¡£\r
260 \return µ±Ç°ÕÕÃ÷Öµ¡£\r
261 \see SetValue\r
262 */\r
263 int illumination_GetValue();\r
264 \r
265 /**\r
266 \brief ÉèÖÃÕÕÃ÷Öµ¡£\r
267 \param val [in]ÕÕÃ÷Öµ¡£\r
268 \see GetValue\r
269 */\r
270 void illumination_SetValue(int val);