33 #include <sys/types.h>
35 #include "../c_wrapper/pruio_c_wrapper.h"
36 #include "../c_wrapper/pruio_pins.h"
56 struct timeval timeout;
60 FD_SET(STDIN_FILENO, &set);
64 timeout.tv_usec = mseconds * 1000;
66 return TEMP_FAILURE_RETRY(select(FD_SETSIZE,
109 int main(
int argc,
char **argv)
114 printf(
"initialisation failed (%s)\n", io->
Errr);
break;}
117 printf(
"failed setting P1 (%s)\n", io->
Errr);
break;}
119 printf(
"failed setting P2 (%s)\n", io->
Errr);
break;}
121 printf(
"failed setting P3 (%s)\n", io->
Errr);
break;}
123 printf(
"failed setting P4 (%s)\n", io->
Errr);
break;}
127 printf(
"config failed (%s)\n", io->
Errr);
break;}
130 printf(
"Controls: (other keys quit, 1 and 3 only when Direction = 0)\n");
131 printf(
" 8 = faster\n");
132 printf(
" 4 = rotate CW 5 = stop, hold position 6 = rotate CCW\n");
133 printf(
" 1 = single step CW 2 = slower 3 = single step CCW\n");
134 printf(
" 0 = stop, power off\n\n");
135 printf(
"Direction\tSleep\n");
137 struct termios oldt, newt;
138 tcgetattr( STDIN_FILENO, &oldt );
140 newt.c_lflag &= ~( ICANON );
142 newt.c_cc[VTIME] = 1;
143 tcsetattr( STDIN_FILENO, TCSANOW, &newt );
146 printf(
"%2d\t\t%3d",
d, w);
147 fflush(STDIN_FILENO);
152 case '2':
if (w < 512) w <<= 1;
break;
153 case '8':
if (w > 1) w >>= 1;
break;
154 case '4':
d = 1;
break;
155 case '7':
d = 2;
break;
156 case '9':
d = -2;
break;
157 case '6':
d = -1;
break;
159 case '5':
d = 0;
move(io,
d);
break;
160 case '1':
if (
d == 0)
move(io, 1);
break;
161 case '3':
if (
d == 0)
move(io, -1);
break;
162 default:
goto finish;
164 printf(
"\r%2d\t\t%3d",
d, w);
165 fflush(STDIN_FILENO);
170 tcsetattr( STDIN_FILENO, TCSANOW, &oldt );