Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
7 | f9daq | 1 | #include <stdio.h> |
2 | #include <string.h> |
||
3 | #include <unistd.h> |
||
4 | #include "libusmc.h" |
||
5 | |||
6 | |||
7 | #define MENU_EXIT 0 |
||
8 | #define MENU_ERROR 1 |
||
9 | #define MENU_CONTINUE 2 |
||
10 | |||
11 | USMC_Devices devices; |
||
12 | DWORD cur_dev; |
||
13 | |||
14 | char str [105] = { 100 }; |
||
15 | |||
16 | // Function that prints information about connected devices to console |
||
17 | void print_devices ( USMC_Devices devices ) |
||
18 | { |
||
19 | DWORD i; |
||
20 | |||
21 | for ( i = 0 ; i < devices.NOD ; i++ ) |
||
22 | printf ( "Device# %d,\tSerial Number - %.16s,\tVersion - %.4s\n", i + 1, devices.Serial [i], devices.Version [i] ); |
||
23 | } |
||
24 | |||
25 | // Function that prints information about device state to console |
||
26 | void print_state ( USMC_State state ) |
||
27 | { |
||
28 | printf ( "The state is:\n" ); |
||
29 | printf ( "- Current Position in microsteps - %d\n", state.CurPos ); |
||
30 | printf ( "- Temperature - %.2f\xf8\x43\n", state.Temp ); |
||
31 | printf ( "- Step Divisor - %d\n", state.SDivisor ); |
||
32 | printf ( "- Loft state - %s\n", state.Loft?"Indefinite" : "Fixed" ); |
||
33 | printf ( "- Power - %s\n", state.Power ? ( state.FullPower ? "Full" : "Half" ) : "Off" ); |
||
34 | |||
35 | if ( state.RUN ) |
||
36 | printf ( "- Step Motor is Running in %s Direction %s\n", |
||
37 | state.CW_CCW ? "CCW" : "CW", ( ( state.SDivisor == 1 ) && state.FullSpeed ) ? "at Full speed" : "" ); |
||
38 | else |
||
39 | printf ( "- Step Motor is Not Running\n" ); |
||
40 | |||
41 | printf ( "- Device %s\n", state.AReset ? "is After Reset" : "Position Already Set" ); |
||
42 | printf ( "- Input Synchronization Logical Pin state - %s\n", state.SyncIN ? "TRUE" : "FALSE" ); |
||
43 | printf ( "- Output Synchronization Logical Pin state - %s\n", state.SyncOUT ? "TRUE" : "FALSE" ); |
||
44 | printf ( "- Rotary Transducer Logical Pin state - %s\n", state.RotTr ? "TRUE" : "FALSE" ); |
||
45 | printf ( "- Rotary Transducer Error Flag - %s\n", state.RotTrErr ? "Error" : "Clear" ); |
||
46 | printf ( "- Emergency Disable Button - %s\n", state.EmReset ? "Pushed" : "Unpushed" ); |
||
47 | printf ( "- Trailer 1 Press state - %s\n", state.Trailer1 ? "Pushed" : "Unpushed" ); |
||
48 | printf ( "- Trailer 2 Press state - %s\n", state.Trailer2 ? "Pushed" : "Unpushed" ); |
||
49 | |||
50 | if ( state.Voltage == 0.0f ) |
||
51 | printf ( "- Input Voltage - Low\n", state.Voltage ); |
||
52 | else |
||
53 | printf ( "- Input Voltage - %.1fV\n", state.Voltage ); |
||
54 | } |
||
55 | |||
56 | // Function that scans start parameters |
||
57 | void scan_start_params ( int * dest_pos, float * speed, USMC_StartParameters * sp ) |
||
58 | { |
||
59 | // Defaults |
||
60 | *speed = 2000.0f; |
||
61 | *dest_pos = 0; |
||
62 | sp -> SDivisor = 8; |
||
63 | |||
64 | printf ( "Destination position:" ); |
||
65 | scanf ( "%d", dest_pos ); |
||
66 | printf ( "\nSpeed (in tacts):" ); |
||
67 | scanf ( "%f", speed ); |
||
68 | printf ( "\nSteps Divisor:" ); |
||
69 | scanf ( "%d", &( sp -> SDivisor ) ); |
||
70 | getchar (); |
||
71 | } |
||
72 | |||
73 | // Function that prints information about device start parameters to console |
||
74 | void print_start_params ( int dest_pos, float speed, const USMC_StartParameters sp ) |
||
75 | { |
||
76 | printf ( "Destination position - %d\n", dest_pos ); |
||
77 | printf ( "speed - %.2ftacts/s\n", speed ); |
||
78 | printf ( "Steps Divisor - %d\n", sp.SDivisor ); |
||
79 | |||
80 | if ( sp.SDivisor == 1 ) |
||
81 | printf ( "Slow start/stop mode - %s\n", sp.SlStart ? "Enabled" : "Disabled" ); |
||
82 | else if ( sp.LoftEn ) { |
||
83 | printf ( "Automatic backlash operation - Enabled\n" ); |
||
84 | printf ( "Automatic backlash operation direction - %s\n", sp.DefDir ? "CCW" : "CW" ); |
||
85 | printf ( "Force automatic backlash operation - %s\n", sp.ForceLoft ? "TRUE" : "FALSE" ); |
||
86 | } else { |
||
87 | printf ( "Automatic backlash operation - Disabled\n" ); |
||
88 | } |
||
89 | if ( sp.WSyncIN ) |
||
90 | printf ( "Controller will wait for input synchronization signal to start\n" ); |
||
91 | else |
||
92 | printf ( "Input synchronization signal ignored \n" ); |
||
93 | |||
94 | printf ( "Output synchronization counter will %sbe reset\n", sp.SyncOUTR ? "" : "not " ); |
||
95 | } |
||
96 | |||
97 | // Function that prints information about device parameters to console |
||
98 | void print_params ( USMC_Parameters params ) |
||
99 | { |
||
100 | printf ( "The parameters are:\n" ); |
||
101 | printf ( "Full acceleration time - %.0f ms\n", ( double ) params.AccelT ); |
||
102 | printf ( "Full deceleration time - %.0f ms\n", ( double ) params.DecelT ); |
||
103 | printf ( "Power reduction timeout - %.0f ms\n", ( double ) params.PTimeout ); |
||
104 | printf ( "Button speedup timeout 1 - %.0f ms\n", ( double ) params.BTimeout1 ); |
||
105 | printf ( "Button speed after timeout 1 - %.2f steps/s\n", ( double ) params.BTO1P ); |
||
106 | printf ( "Button speedup timeout 2 - %.0f ms\n", ( double ) params.BTimeout2 ); |
||
107 | printf ( "Button speed after timeout 2 - %.2f steps/s\n", ( double ) params.BTO2P ); |
||
108 | printf ( "Button speedup timeout 3 - %.0f ms\n", ( double ) params.BTimeout3 ); |
||
109 | printf ( "Button speed after timeout 3 - %.2f steps/s\n", ( double ) params.BTO3P ); |
||
110 | printf ( "Button speedup timeout 4 - %.0f ms\n", ( double ) params.BTimeout4 ); |
||
111 | printf ( "Button speed after timeout 4 - %.2f steps/s\n", ( double ) params.BTO4P ); |
||
112 | printf ( "Button reset timeout - %.0f ms\n", (double) params.BTimeoutR ); |
||
113 | printf ( "Button reset operation speed - %.2f steps/s\n", ( double ) params.MinP ); |
||
114 | printf ( "Backlash operation distance - %d steps\n", ( int ) params.MaxLoft ); |
||
115 | printf ( "Revolution distance - %d steps\n", ( int ) params.RTDelta ); |
||
116 | printf ( "Minimal revolution distance error - %d steps\n", ( int ) params.RTMinError ); |
||
117 | printf ( "Power off temperature - %.2f\xf8\x43\n", ( double ) params.MaxTemp ); |
||
118 | printf ( "Duration of the output synchronization pulse - " ); |
||
119 | |||
120 | if ( params.SynOUTP == 0 ) |
||
121 | printf ( "minimal\n"); |
||
122 | else |
||
123 | printf ( "%.1f * [Tact Period]\n", params.SynOUTP - 0.5 ); |
||
124 | |||
125 | printf ( "speed of the last phase of the backlash operation - " ); |
||
126 | |||
127 | if ( params.LoftPeriod == 0.0f ) |
||
128 | printf ( "normal\n" ); |
||
129 | else |
||
130 | printf ( "%.2f steps/s\n", ( double ) params.LoftPeriod ); |
||
131 | |||
132 | printf ( "<Angular Encoder Step> Equals <Angular Step Motor Step>/<%.2f>\n", params.EncMult ); |
||
133 | } |
||
134 | |||
135 | // Function that prints information about device "mode" parameters to console |
||
136 | void print_mode ( USMC_Mode mode ) |
||
137 | { |
||
138 | printf ( "mode parameters:\n" ); |
||
139 | printf ( "Buttons - "); |
||
140 | |||
141 | if ( mode.PMode ) |
||
142 | printf ( "Disabled\n" ); |
||
143 | else { |
||
144 | printf ( "Enabled\nButton 1 TRUE state - %s\n", mode.Butt1T ? "+3/+5 V" : "0 V(GND)" ); |
||
145 | printf ( "Button 2 TRUE state - %s\n", mode.Butt2T ? "+3/+5 V" : "0 V(GND)" ); |
||
146 | } |
||
147 | |||
148 | printf ( "Current reduction regime - %s\n", mode.PReg ? "Used" : "Not Used" ); |
||
149 | |||
150 | if ( mode.ResetD ) |
||
151 | printf ( "Power - %s\n", mode.EMReset ? "Emerjency Off" : "Off" ); |
||
152 | else |
||
153 | printf ( "Power - On\n" ); |
||
154 | |||
155 | if ( mode.Tr1En || mode.Tr2En ) |
||
156 | printf ( "Trailers are - %s\n", mode.TrSwap ? "Swapped" : "Direct" ); |
||
157 | |||
158 | printf ( "Trailer 1 - "); |
||
159 | |||
160 | if ( mode.Tr1En ) |
||
161 | printf ( "Enabled\nTrailer 1 TRUE state - %s\n", mode.Tr1T ? "+3/+5 V" : "0 V(GND)" ); |
||
162 | else |
||
163 | printf ( "Disabled\n" ); |
||
164 | |||
165 | printf ( "Trailer 2 - " ); |
||
166 | |||
167 | if ( mode.Tr2En ) |
||
168 | printf ( "Enabled\nTrailer 2 TRUE state - %s\n", mode.Tr2T ? "+3/+5 V" : "0 V(GND)" ); |
||
169 | else |
||
170 | printf ( "Disabled\n" ); |
||
171 | |||
172 | if ( mode.EncoderEn ) { |
||
173 | printf ( "Encoder - Enabled\n" ); |
||
174 | printf ( "Encoder Position Counter is %s\n", mode.EncoderInv ? "Inverted" : "Direct" ); |
||
175 | printf ( "Rotary Transducer and Input Syncronisation are\n" |
||
176 | " Disabled Because of Encoder\n" ); |
||
177 | } else { |
||
178 | printf ( "Encoder - Disabled\n" ); |
||
179 | printf ( "Rotary Transducer - " ); |
||
180 | |||
181 | if ( mode.RotTeEn ) { |
||
182 | printf ( "Enabled\nRotary Transducer TRUE state - %s\n", mode.RotTrT ? "+3/+5 V" : "0 V(GND)" ); |
||
183 | printf ( "Rotary Transducer Operation - %s\n", mode.RotTrOp ? "Stop on error" : "Check and ignore error" ); |
||
184 | printf ( "Reset Rotary Transducer Check Positions - %s\n", mode.ResetRT ? "Initiated" : "No, why?" ); |
||
185 | } else { |
||
186 | printf ( "Disabled\n" ); |
||
187 | } |
||
188 | |||
189 | printf ( "Synchronization input mode:\n" ); |
||
190 | |||
191 | if ( mode.SyncINOp ) |
||
192 | printf ( "Step motor will move one time to the destination position\n" ); |
||
193 | else |
||
194 | printf ( "Step motor will move multiple times by [destination position]\n" ); |
||
195 | } |
||
196 | |||
197 | printf ( "Output Syncronization - " ); |
||
198 | |||
199 | if ( mode.SyncOUTEn ) { |
||
200 | printf ( "Enabled\nReset Output Synchronization Counter - %s\n", mode.SyncOUTR ? "Initiated" : "No, why?" ); |
||
201 | printf ( "Number of steps after which synchronization output sygnal occures - %u\n", mode.SyncCount ); |
||
202 | } else { |
||
203 | printf ( "Disabled\n" ); |
||
204 | } |
||
205 | |||
206 | printf ( "Synchronization Output is " ); |
||
207 | |||
208 | if ( mode.SyncInvert ) |
||
209 | printf ( "INVERTED\n" ); |
||
210 | else |
||
211 | printf ( "NORMAL\n" ); |
||
212 | } |
||
213 | |||
214 | void print_enc_state ( USMC_EncoderState enc_state, USMC_Parameters up ) |
||
215 | { |
||
216 | printf ( "The encoder state is:\n" ); |
||
217 | printf ( "- Current Position in microsteps - %.2f\n", enc_state.ECurPos/up.EncMult ); |
||
218 | printf ( "- Encoder Position in microsteps - %.2f\n\n", enc_state.EncoderPos/up.EncMult ); |
||
219 | printf ( "- Current Position in \"Half of Encoder Step\"s - %d\n", enc_state.ECurPos ); |
||
220 | printf ( "- Encoder Position in \"Half of Encoder Step\"s - %d\n", enc_state.EncoderPos ); |
||
221 | } |
||
222 | |||
223 | // Function that prints last error information |
||
224 | void print_error ( void ) |
||
225 | { |
||
226 | char er [256]; |
||
227 | |||
228 | USMC_GetLastErr ( er, 255 ); |
||
229 | er [255] = '\0'; |
||
230 | printf ( "\n%s", er ); |
||
231 | } |
||
232 | |||
233 | |||
234 | USMC_State state; |
||
235 | USMC_StartParameters start_params; |
||
236 | USMC_Parameters params; |
||
237 | USMC_Mode mode; |
||
238 | USMC_EncoderState enc_state; |
||
239 | |||
240 | // Reference to Functions For Every Command (defined at the end of the file) |
||
241 | BOOL f1_get_dev_state ( void ); |
||
242 | BOOL f2_start ( void ); |
||
243 | BOOL f3_stop ( void ); |
||
244 | BOOL f4_set_params ( void ); |
||
245 | BOOL f5_set_mode ( void ); |
||
246 | BOOL f6_set_cur_pos ( void ); |
||
247 | BOOL f7_turn_off_and_save_pos ( void ); |
||
248 | BOOL fs7_revert_sp_to_0 ( void ); |
||
249 | BOOL f8_get_enc_state ( void ); |
||
250 | BOOL fp_change_power ( void ); |
||
251 | |||
252 | BOOL smpower = FALSE; |
||
253 | |||
254 | int menu ( void ) |
||
255 | { |
||
256 | BOOL err = FALSE; |
||
257 | char menu_sel; |
||
258 | |||
259 | printf ( "menu :\n" |
||
260 | "1 - Get Device state\n" |
||
261 | "2 - START\n" |
||
262 | "3 - STOP\n" |
||
263 | "4 - Set Parameters (can be changed only in c++ code)\n" |
||
264 | "5 - Set mode (can be changed only in c++ code)\n" |
||
265 | "6 - Set Current Position (can be changed only in c++ code)\n" |
||
266 | "7 - Turn Off and Save Current Position to Flash\n" |
||
267 | "SHIFT + 7 - Revert Start Position to 0\n" |
||
268 | "8 - Get Encoder state\n" |
||
269 | "\n" |
||
270 | "p - Turn %s Power" |
||
271 | "\n" |
||
272 | "9 - Select other device\n" |
||
273 | "0 - Exit program\n" |
||
274 | "Choose:", smpower ? "Off" : "On" ); |
||
275 | |||
276 | menu_sel = getchar (); |
||
277 | |||
278 | switch ( menu_sel ) |
||
279 | { |
||
280 | case '1': |
||
281 | err = f1_get_dev_state (); |
||
282 | break; |
||
283 | case '2': |
||
284 | err = f2_start (); |
||
285 | break; |
||
286 | case '3': |
||
287 | err = f3_stop (); |
||
288 | break; |
||
289 | case '4': |
||
290 | err = f4_set_params (); |
||
291 | break; |
||
292 | case '5': |
||
293 | err = f5_set_mode (); |
||
294 | break; |
||
295 | case '6': |
||
296 | err = f6_set_cur_pos (); |
||
297 | break; |
||
298 | case '7': |
||
299 | err = f7_turn_off_and_save_pos (); |
||
300 | break; |
||
301 | case '&': // 'SHIFT 7' on my keyboard |
||
302 | err = fs7_revert_sp_to_0 (); |
||
303 | break; |
||
304 | case '8': |
||
305 | err = f8_get_enc_state (); |
||
306 | break; |
||
307 | case 'p': |
||
308 | case 'P': |
||
309 | err = fp_change_power (); |
||
310 | break; |
||
311 | |||
312 | case '9': |
||
313 | return MENU_ERROR; |
||
314 | case '0': |
||
315 | printf ( "\n" ); |
||
316 | return MENU_EXIT; |
||
317 | default: |
||
318 | system ( "clear" ); |
||
319 | break; |
||
320 | } |
||
321 | |||
322 | if ( err ) { |
||
323 | print_error (); |
||
324 | printf ( "\nPerforming Refressh..." ); |
||
325 | getchar (); |
||
326 | |||
327 | if ( USMC_Init ( &devices ) ) { |
||
328 | print_error (); |
||
329 | return MENU_EXIT; |
||
330 | } |
||
331 | |||
332 | return MENU_ERROR; |
||
333 | } |
||
334 | |||
335 | return MENU_CONTINUE; |
||
336 | } |
||
337 | |||
338 | int select_menu ( void ) |
||
339 | { |
||
340 | int ret; |
||
341 | do { |
||
342 | system ( "clear" ); |
||
343 | cur_dev = -1; |
||
344 | print_devices ( devices ); |
||
345 | printf ( "\n\t0\tExit\n" ); |
||
346 | for ( ret=0;ret<devices.NOD;ret++) printf ( "\t%d\tDevice # %d\n",ret+1,ret+1 ); |
||
347 | printf ( "\tx\tReInitialize\n" ); |
||
348 | printf ( "\txx\tClose Driver Window and Exit Program\n" ); |
||
349 | |||
350 | printf ( "Select:" ); |
||
351 | scanf ( "%s", str ); |
||
352 | getchar (); |
||
353 | |||
354 | if ( strcmp ( str, "x" ) == 0 ) |
||
355 | { |
||
356 | //// Perform "Refresh" of Driver |
||
357 | if ( USMC_Init ( &devices ) ) |
||
358 | { |
||
359 | print_error (); |
||
360 | return MENU_EXIT; |
||
361 | } |
||
362 | |||
363 | continue; |
||
364 | } else if ( strcmp ( str, "xx" ) == 0 ) { |
||
365 | //// Close the MicroSMC.exe process |
||
366 | if ( USMC_Close () ) |
||
367 | { |
||
368 | print_error (); |
||
369 | return MENU_EXIT; |
||
370 | } |
||
371 | |||
372 | return MENU_EXIT; |
||
373 | } |
||
374 | |||
375 | sscanf ( str, "%u", &cur_dev ); |
||
376 | |||
377 | if ( cur_dev == 0 ) |
||
378 | return MENU_EXIT; |
||
379 | } while ( cur_dev > devices.NOD ); |
||
380 | |||
381 | system ( "clear" ); |
||
382 | |||
383 | cur_dev--; // Decrement cur_dev by 1 ( we have zero-based device list, |
||
384 | // but 1-based is user-friendly ) |
||
385 | |||
386 | do { |
||
387 | ret = menu (); |
||
388 | } while ( ret == MENU_CONTINUE ); |
||
389 | |||
390 | return ret; |
||
391 | } |
||
392 | |||
393 | int exit_program ( void ) |
||
394 | { |
||
395 | printf ( "\nPress any key to exit" ); |
||
396 | getchar (); |
||
397 | |||
398 | return MENU_EXIT; |
||
399 | } |
||
400 | |||
401 | int main ( int argc, const char ** argv ) |
||
402 | { |
||
403 | int res; |
||
404 | |||
405 | // change terminal mode to non-buffering |
||
406 | system ( "stty -icanon min 1" ); |
||
407 | setbuf ( stdin, NULL ); |
||
408 | system ( "clear" ); |
||
409 | |||
410 | if ( USMC_Init ( &devices ) ) |
||
411 | { |
||
412 | print_error (); |
||
413 | |||
414 | return exit_program (); |
||
415 | } |
||
416 | |||
417 | while ( select_menu () ); |
||
418 | |||
419 | res = exit_program (); |
||
420 | //restore terminal mode |
||
421 | system ( "stty -icanon" ); |
||
422 | |||
423 | return res; |
||
424 | } |
||
425 | |||
426 | |||
427 | |||
428 | BOOL f1_get_dev_state ( void ) |
||
429 | { |
||
430 | if ( USMC_GetState ( cur_dev, &state ) ) |
||
431 | return TRUE; |
||
432 | |||
433 | system ( "clear" ); |
||
434 | print_state ( state ); |
||
435 | printf ( "\nPress any key to continue" ); |
||
436 | getchar (); |
||
437 | system ( "clear" ); |
||
438 | |||
439 | return FALSE; |
||
440 | } |
||
441 | |||
442 | BOOL f2_start ( void ) |
||
443 | { |
||
444 | float speed = 2000.0f; |
||
445 | int dest_pos = 0; |
||
446 | |||
447 | if ( USMC_GetStartParameters ( cur_dev, &start_params ) ) |
||
448 | return TRUE; |
||
449 | |||
450 | system ( "clear" ); |
||
451 | scan_start_params ( &dest_pos, &speed, &start_params ); |
||
452 | start_params.SlStart = TRUE; |
||
453 | |||
454 | if ( USMC_Start ( cur_dev, dest_pos, &speed, &start_params ) ) |
||
455 | return TRUE; |
||
456 | |||
457 | system ( "clear" ); |
||
458 | print_start_params ( dest_pos, speed, start_params ); |
||
459 | printf ( "\n" ); |
||
460 | return FALSE; |
||
461 | } |
||
462 | |||
463 | BOOL f3_stop ( void ) |
||
464 | { |
||
465 | if ( USMC_Stop ( cur_dev ) ) |
||
466 | return TRUE; |
||
467 | |||
468 | system ( "clear" ); |
||
469 | printf ( "Motor stopped\n\n" ); |
||
470 | |||
471 | return FALSE; |
||
472 | } |
||
473 | |||
474 | BOOL f4_set_params ( void ) |
||
475 | { |
||
476 | if ( USMC_GetParameters ( cur_dev, ¶ms ) ) |
||
477 | return TRUE; |
||
478 | |||
479 | // Set anything you want here |
||
480 | params.MaxTemp = 70.0f; |
||
481 | params.AccelT = 200.0f; |
||
482 | params.DecelT = 200.0f; |
||
483 | params.BTimeout1 = 5000.0f; |
||
484 | params.BTimeout2 = 5000.0f; |
||
485 | params.BTimeout3 = 5000.0f; |
||
486 | params.BTimeout4 = 5000.0f; |
||
487 | params.BTO1P = 625.0f; |
||
488 | params.BTO2P = 16.0f; |
||
489 | params.BTO3P = 625.0f; |
||
490 | params.BTO4P = 16.0f;//500.0f; |
||
491 | params.MinP = 500.0f; |
||
492 | params.BTimeoutR = 500.0f; |
||
493 | params.LoftPeriod = 500.0f; |
||
494 | params.RTDelta = 200; |
||
495 | params.RTMinError = 15; |
||
496 | params.EncMult = 2.5f; |
||
497 | params.MaxLoft = 32; |
||
498 | params.PTimeout = 100.0f; |
||
499 | params.SynOUTP = 1; |
||
500 | // |
||
501 | |||
502 | if ( USMC_SetParameters ( cur_dev, ¶ms ) ) |
||
503 | return TRUE; |
||
504 | |||
505 | if ( USMC_SaveParametersToFlash ( cur_dev ) ) |
||
506 | return TRUE; |
||
507 | |||
508 | system ( "clear" ); |
||
509 | print_params ( params ); |
||
510 | printf ( "\nThese Parameters are Saved to Flash" ); |
||
511 | printf ( "\nPress any key to continue" ); |
||
512 | getchar (); |
||
513 | system ( "clear" ); |
||
514 | |||
515 | return FALSE; |
||
516 | } |
||
517 | |||
518 | BOOL f5_set_mode ( void ) |
||
519 | { |
||
520 | if ( USMC_GetMode ( cur_dev, &mode ) ) |
||
521 | return TRUE; |
||
522 | |||
523 | // Set anything you want here |
||
524 | mode.SyncInvert = !mode.SyncInvert; |
||
525 | mode.EncoderEn = TRUE; |
||
526 | mode.RotTrOp = FALSE; |
||
527 | mode.ResetRT = TRUE; |
||
528 | mode.ResBEnc = TRUE; |
||
529 | // Set anything you want here |
||
530 | |||
531 | if ( USMC_SetMode ( cur_dev, &mode ) ) |
||
532 | return TRUE; |
||
533 | |||
534 | |||
535 | system ( "clear" ); |
||
536 | print_mode ( mode ); |
||
537 | printf ( "\nPress any key to continue" ); |
||
538 | getchar (); |
||
539 | system ( "clear" ); |
||
540 | |||
541 | return FALSE; |
||
542 | } |
||
543 | |||
544 | BOOL f6_set_cur_pos ( void ) |
||
545 | { |
||
546 | int newCurPos = 1000; |
||
547 | |||
548 | if ( USMC_SetCurrentPosition ( cur_dev, newCurPos ) ) |
||
549 | return TRUE; |
||
550 | |||
551 | system ( "clear" ); |
||
552 | printf ( "\nSetCurrentPosition executed with argument %d", newCurPos ); |
||
553 | printf ( "\nPress any key to continue" ); |
||
554 | getchar (); |
||
555 | system ( "clear" ); |
||
556 | |||
557 | return FALSE; |
||
558 | } |
||
559 | |||
560 | BOOL f7_turn_off_and_save_pos ( void ) |
||
561 | { |
||
562 | // Initialize structures (in case this function runs first) |
||
563 | if ( USMC_GetParameters ( cur_dev, ¶ms ) ) |
||
564 | return TRUE; |
||
565 | if ( USMC_GetMode ( cur_dev, &mode ) ) |
||
566 | return TRUE; |
||
567 | |||
568 | // Go to Full Step (automaticaly), then Turn Off |
||
569 | mode.ResetD = TRUE; |
||
570 | |||
571 | if ( USMC_SetMode ( cur_dev, &mode ) ) |
||
572 | return TRUE; |
||
573 | |||
574 | // Wait until Previous Comand is Done |
||
575 | do { |
||
576 | usleep ( 50 ); |
||
577 | |||
578 | if ( USMC_GetState ( cur_dev, &state ) ) |
||
579 | return TRUE; |
||
580 | } while ( state.Power == TRUE ); |
||
581 | |||
582 | // Remember CurPos in Parameters Only While state.Power - FALSE |
||
583 | params.StartPos = state.CurPos; |
||
584 | |||
585 | if ( USMC_SetParameters ( cur_dev, ¶ms ) ) |
||
586 | return TRUE; |
||
587 | |||
588 | // Then of Course You Need to SaveToFlash |
||
589 | if ( USMC_SaveParametersToFlash ( cur_dev ) ) |
||
590 | return TRUE; |
||
591 | |||
592 | // Now You Can Unplug ME |
||
593 | system ( "clear" ); |
||
594 | printf ( "\nThe Position \"%d\" is Saved to Flash\n", params.StartPos ); |
||
595 | printf ( "\nWhen Controller is Powered Up Next Time\n" ); |
||
596 | printf ( "\nIt Will Start From This Position\n" ); |
||
597 | printf ( "\nPress any key to exit" ); |
||
598 | getchar (); |
||
599 | system ( "clear" ); |
||
600 | |||
601 | return FALSE; |
||
602 | } |
||
603 | |||
604 | BOOL fs7_revert_sp_to_0 ( void ) |
||
605 | { |
||
606 | // Initialize structures (in case this function runs first) |
||
607 | if ( USMC_GetParameters ( cur_dev, ¶ms ) ) |
||
608 | return TRUE; |
||
609 | |||
610 | params.StartPos = 0; |
||
611 | |||
612 | if ( USMC_SetParameters ( cur_dev, ¶ms ) ) |
||
613 | return TRUE; |
||
614 | |||
615 | // Then of Course You Need to SaveToFlash |
||
616 | if ( USMC_SaveParametersToFlash ( cur_dev ) ) |
||
617 | return TRUE; |
||
618 | |||
619 | system ( "clear" ); |
||
620 | printf ( "\nStart Position is Reset to 0\n" ); |
||
621 | printf ( "\nPress any key to continue" ); |
||
622 | getchar (); |
||
623 | |||
624 | return FALSE; |
||
625 | } |
||
626 | |||
627 | BOOL f8_get_enc_state ( void ) |
||
628 | { |
||
629 | if ( USMC_GetEncoderState ( cur_dev, &enc_state ) ) |
||
630 | return TRUE; |
||
631 | if ( USMC_GetParameters ( cur_dev, ¶ms ) ) |
||
632 | return TRUE; |
||
633 | |||
634 | system ( "clear" ); |
||
635 | print_enc_state ( enc_state, params ); |
||
636 | printf ( "\nPress any key to continue" ); |
||
637 | getchar (); |
||
638 | system ( "clear" ); |
||
639 | |||
640 | return FALSE; |
||
641 | } |
||
642 | |||
643 | BOOL fp_change_power ( void ) |
||
644 | { |
||
645 | if ( USMC_GetMode ( cur_dev, &mode ) ) |
||
646 | return TRUE; |
||
647 | |||
648 | smpower = !smpower; |
||
649 | mode.ResetD = !smpower; |
||
650 | |||
651 | if ( USMC_SetMode ( cur_dev, &mode ) ) |
||
652 | return TRUE; |
||
653 | |||
654 | system ( "clear" ); |
||
655 | printf ( "Now, Power is %s\n", mode.ResetD ? "Off" : "On" ); |
||
656 | |||
657 | return FALSE; |
||
658 | } |