w mx / Mbed 2 deprecated wmx_arm_scara

Dependencies:   MQTT SDFileSystem WIZnet_Library mbed

Fork of wmx_arm_communication by w mx

Committer:
xmwmx
Date:
Thu Aug 02 06:45:17 2018 +0000
Revision:
13:a6e12b4c7192
Parent:
12:51be919e2c78
Child:
14:6a6c6def773a
scara

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xmwmx 8:e76bebe9c45f 1 /************************************************************************************************
xmwmx 8:e76bebe9c45f 2 File name: main.cpp
xmwmx 13:a6e12b4c7192 3 Description: 项目部分客户端代码
xmwmx 13:a6e12b4c7192 4 Author:
xmwmx 13:a6e12b4c7192 5 Date:
xmwmx 8:e76bebe9c45f 6 Others: 本程序编写在mbed平台(https://os.mbed.com/)上
xmwmx 8:e76bebe9c45f 7
xmwmx 8:e76bebe9c45f 8 *************************************************************************************************/
xmwmx 8:e76bebe9c45f 9
xmwmx 8:e76bebe9c45f 10 #include "mbed.h"
xmwmx 8:e76bebe9c45f 11 #include <math.h>
xmwmx 8:e76bebe9c45f 12 #include <cstring>
xmwmx 8:e76bebe9c45f 13 #include <stdlib.h>
xmwmx 8:e76bebe9c45f 14 #include "SDFileSystem.h"
xmwmx 8:e76bebe9c45f 15 #include "networking.h"
xmwmx 13:a6e12b4c7192 16 #include <cmath>
xmwmx 8:e76bebe9c45f 17
xmwmx 8:e76bebe9c45f 18
xmwmx 13:a6e12b4c7192 19 #define run 10000
xmwmx 13:a6e12b4c7192 20 #define M_PI 3.141526535
xmwmx 13:a6e12b4c7192 21 #define ky 4.0// 52/13
xmwmx 13:a6e12b4c7192 22 #define kx 5.84615// 76/13
xmwmx 13:a6e12b4c7192 23 #define lianggang 30// 量纲
xmwmx 10:acc53f50c9df 24
xmwmx 8:e76bebe9c45f 25 /////调试
xmwmx 8:e76bebe9c45f 26 Serial pc(PA_9, PA_10);
xmwmx 10:acc53f50c9df 27 Serial bt(PB_10, PB_11);
xmwmx 8:e76bebe9c45f 28 DigitalOut LED(PB_8);
xmwmx 8:e76bebe9c45f 29 /////
xmwmx 8:e76bebe9c45f 30
xmwmx 8:e76bebe9c45f 31 //硬件接口
xmwmx 8:e76bebe9c45f 32 // mosi, miso, sclk, cs, name
xmwmx 8:e76bebe9c45f 33 SDFileSystem sd(PB_15, PB_14, PB_13, PB_12, "sd");
xmwmx 8:e76bebe9c45f 34 //步进电机
xmwmx 10:acc53f50c9df 35 DigitalOut step[3] = {DigitalOut(PC_5), DigitalOut(PA_5),DigitalOut(PC_3)}; //0--x P9,1--y P17
xmwmx 10:acc53f50c9df 36 DigitalOut dir[3] = {DigitalOut(PC_4), DigitalOut(PA_4),DigitalOut(PC_2)}; //0--x,1--y
xmwmx 10:acc53f50c9df 37 DigitalOut en[3] = {DigitalOut(PD_2), DigitalOut(PA_2),DigitalOut(PC_13)}; //0--x,1--y
xmwmx 8:e76bebe9c45f 38 //电子开关,激光开关
xmwmx 8:e76bebe9c45f 39 DigitalOut switch_GS(PC_15);
xmwmx 8:e76bebe9c45f 40 //行程开关
xmwmx 13:a6e12b4c7192 41 DigitalIn switch_pos1(PA_3); //P25
xmwmx 8:e76bebe9c45f 42 DigitalIn switch_pos2(PA_6); //P26
xmwmx 10:acc53f50c9df 43 DigitalIn switch_pos3(PC_6); //P27
xmwmx 12:51be919e2c78 44
xmwmx 8:e76bebe9c45f 45 //与实际有关参数
xmwmx 13:a6e12b4c7192 46 double now_x = 0,
xmwmx 13:a6e12b4c7192 47 now_y = 0,
xmwmx 13:a6e12b4c7192 48 now_z = 0,
xmwmx 13:a6e12b4c7192 49 now_theta=0,
xmwmx 13:a6e12b4c7192 50 now_alpha=1.0;
xmwmx 13:a6e12b4c7192 51 double first[]={150,150,0};
xmwmx 8:e76bebe9c45f 52 ///Ticker ticker_step;
xmwmx 8:e76bebe9c45f 53 float step_halfperiod = 0.0001;//0.0002;
xmwmx 13:a6e12b4c7192 54 int dir_x = 0;///调试时调整
xmwmx 13:a6e12b4c7192 55 int dir_y = 0;///调试时调整
xmwmx 10:acc53f50c9df 56 int dir_z = 1;///调试时调整
xmwmx 10:acc53f50c9df 57
xmwmx 13:a6e12b4c7192 58 FILE *fp_drawing;// 存储图案的文件
xmwmx 13:a6e12b4c7192 59
xmwmx 13:a6e12b4c7192 60 double theta=0,alpha=0;
xmwmx 11:568789ce1397 61
xmwmx 10:acc53f50c9df 62 char buf[256];
xmwmx 10:acc53f50c9df 63 int cur;
xmwmx 13:a6e12b4c7192 64 bool ready;
xmwmx 10:acc53f50c9df 65 bool received;
xmwmx 13:a6e12b4c7192 66 bool start;
xmwmx 13:a6e12b4c7192 67 bool done;
xmwmx 8:e76bebe9c45f 68
xmwmx 8:e76bebe9c45f 69 void rotate(int id ,int pix);
xmwmx 12:51be919e2c78 70 void init_zero();
xmwmx 13:a6e12b4c7192 71 void moveto(double x, double y,double z);
xmwmx 8:e76bebe9c45f 72
xmwmx 8:e76bebe9c45f 73
xmwmx 10:acc53f50c9df 74 void beginning()
xmwmx 8:e76bebe9c45f 75 {
xmwmx 13:a6e12b4c7192 76 //
xmwmx 13:a6e12b4c7192 77 //
xmwmx 13:a6e12b4c7192 78 pc.printf("y\r\n"); //
xmwmx 13:a6e12b4c7192 79 while(switch_pos2.read()) //
xmwmx 13:a6e12b4c7192 80 {
xmwmx 13:a6e12b4c7192 81 //pc.printf("y\r\n"); //
xmwmx 13:a6e12b4c7192 82 rotate(1,-5); // --
xmwmx 13:a6e12b4c7192 83 } // ||
xmwmx 13:a6e12b4c7192 84 rotate(1,200); // ||
xmwmx 13:a6e12b4c7192 85 pc.printf("z\r\n"); // || y
xmwmx 13:a6e12b4c7192 86 while(switch_pos3.read()) // z |==|======[]======[]
xmwmx 13:a6e12b4c7192 87 { // ||
xmwmx 13:a6e12b4c7192 88 pc.printf("z\r\n"); // ||
xmwmx 13:a6e12b4c7192 89 rotate(2,-5); // ||x
xmwmx 13:a6e12b4c7192 90 } // ---------------------------------
xmwmx 13:a6e12b4c7192 91 rotate(2,50000); //
xmwmx 13:a6e12b4c7192 92 pc.printf("x\r\n"); //
xmwmx 10:acc53f50c9df 93 while(switch_pos1.read()) //
xmwmx 13:a6e12b4c7192 94 {
xmwmx 13:a6e12b4c7192 95 //pc.printf("x\r\n"); //
xmwmx 13:a6e12b4c7192 96 rotate(0,-5); //
xmwmx 13:a6e12b4c7192 97 }
xmwmx 13:a6e12b4c7192 98 rotate(0,400);
xmwmx 13:a6e12b4c7192 99 //moveto(first[0],first[1],first[2]);
xmwmx 12:51be919e2c78 100 init_zero();
xmwmx 13:a6e12b4c7192 101 pc.printf("x %f | y %f || th %f | al %f \r\n",now_x,now_y,theta,alpha);
xmwmx 13:a6e12b4c7192 102 //wait(3);
xmwmx 13:a6e12b4c7192 103 //moveto(200,0,0);
xmwmx 13:a6e12b4c7192 104 //wait(3);
xmwmx 13:a6e12b4c7192 105 //moveto(200,200,0);
xmwmx 13:a6e12b4c7192 106
xmwmx 13:a6e12b4c7192 107 }
xmwmx 13:a6e12b4c7192 108 /****************
xmwmx 13:a6e12b4c7192 109 * x, y单位为mm
xmwmx 13:a6e12b4c7192 110 * theta, alpha单位为rad
xmwmx 13:a6e12b4c7192 111 ******************/
xmwmx 13:a6e12b4c7192 112 void scaraArmCal(double x, double y, double &theta, double &alpha)
xmwmx 13:a6e12b4c7192 113 {
xmwmx 13:a6e12b4c7192 114 const double a(200.0), b(200.0);
xmwmx 13:a6e12b4c7192 115
xmwmx 13:a6e12b4c7192 116 double rouSquare = x * x + y * y;
xmwmx 13:a6e12b4c7192 117 double rou = sqrt(rouSquare);
xmwmx 13:a6e12b4c7192 118 alpha = acos((a * a + b * b - rouSquare) / (2 * a * b));
xmwmx 13:a6e12b4c7192 119 theta = acos((a * a + rouSquare - b * b) / (2 * a * rou)) + (y >= 0 ? atan2(y, x) : (atan2(y, x) + M_PI * 2));
xmwmx 8:e76bebe9c45f 120 }
xmwmx 8:e76bebe9c45f 121
xmwmx 10:acc53f50c9df 122 void init_zero()
xmwmx 8:e76bebe9c45f 123 {
xmwmx 8:e76bebe9c45f 124 now_x = 0;
xmwmx 8:e76bebe9c45f 125 now_y = 0;
xmwmx 10:acc53f50c9df 126 now_z = 0;
xmwmx 13:a6e12b4c7192 127 now_theta=0;
xmwmx 13:a6e12b4c7192 128 now_alpha=1.0;
xmwmx 10:acc53f50c9df 129 strcpy(buf,"");
xmwmx 10:acc53f50c9df 130 // step[0] = 0;
xmwmx 10:acc53f50c9df 131 // step[1] = 0;
xmwmx 10:acc53f50c9df 132 // step[2] = 0;
xmwmx 12:51be919e2c78 133 }
xmwmx 8:e76bebe9c45f 134
xmwmx 12:51be919e2c78 135 void rotate(int id, int pix) //id= 0--x,1--y ,2--z pix=32000为一圈
xmwmx 8:e76bebe9c45f 136 {
xmwmx 12:51be919e2c78 137 if (pix >= 0)
xmwmx 12:51be919e2c78 138 {
xmwmx 8:e76bebe9c45f 139 dir[0] = dir_x;
xmwmx 8:e76bebe9c45f 140 dir[1] = dir_y;
xmwmx 10:acc53f50c9df 141 dir[2] = dir_z;
xmwmx 12:51be919e2c78 142 }
xmwmx 12:51be919e2c78 143 else
xmwmx 12:51be919e2c78 144 {
xmwmx 8:e76bebe9c45f 145 pix = -pix;
xmwmx 8:e76bebe9c45f 146 dir[0] = 1 - dir_x;
xmwmx 8:e76bebe9c45f 147 dir[1] = 1 - dir_y;
xmwmx 10:acc53f50c9df 148 dir[2] = 1 - dir_z;
xmwmx 8:e76bebe9c45f 149 }
xmwmx 12:51be919e2c78 150 for (int i = 0; i < pix; i++)
xmwmx 12:51be919e2c78 151 {
xmwmx 8:e76bebe9c45f 152 step[id] = 1;
xmwmx 8:e76bebe9c45f 153 wait(step_halfperiod);
xmwmx 8:e76bebe9c45f 154 step[id] = 0;
xmwmx 8:e76bebe9c45f 155 wait(step_halfperiod);
xmwmx 8:e76bebe9c45f 156 }
xmwmx 8:e76bebe9c45f 157 }
xmwmx 8:e76bebe9c45f 158
xmwmx 13:a6e12b4c7192 159 void moveto(double x, double y,double z)
xmwmx 8:e76bebe9c45f 160 {
xmwmx 13:a6e12b4c7192 161 scaraArmCal(x, y , theta, alpha);
xmwmx 13:a6e12b4c7192 162 if(theta>=0&&alpha>=1.0&&((x*x+y*y)<160000))
xmwmx 12:51be919e2c78 163 {
xmwmx 13:a6e12b4c7192 164 if(z-now_z<=0)
xmwmx 13:a6e12b4c7192 165 {
xmwmx 13:a6e12b4c7192 166 rotate(0, (theta-now_theta)*run*kx/(2*M_PI));
xmwmx 13:a6e12b4c7192 167 rotate(1, (alpha-now_alpha)*run*ky/(2*M_PI));
xmwmx 13:a6e12b4c7192 168 rotate(2, (z - now_z)*run/10);
xmwmx 13:a6e12b4c7192 169 }
xmwmx 13:a6e12b4c7192 170 else
xmwmx 13:a6e12b4c7192 171 {
xmwmx 13:a6e12b4c7192 172 rotate(2, (z - now_z)*run/10);
xmwmx 13:a6e12b4c7192 173 rotate(0, (theta-now_theta)*run*kx/(2*M_PI));
xmwmx 13:a6e12b4c7192 174 rotate(1, (alpha-now_alpha)*run*ky/(2*M_PI));
xmwmx 13:a6e12b4c7192 175 }
xmwmx 13:a6e12b4c7192 176 pc.printf("x %f | y %f | th| %f | al %f \r\n",x,y,theta,alpha);
xmwmx 12:51be919e2c78 177 now_x = x;
xmwmx 12:51be919e2c78 178 now_y = y;
xmwmx 12:51be919e2c78 179 now_z = z;
xmwmx 13:a6e12b4c7192 180 now_theta=theta;
xmwmx 13:a6e12b4c7192 181 now_alpha=alpha;
xmwmx 13:a6e12b4c7192 182
xmwmx 12:51be919e2c78 183 }
xmwmx 12:51be919e2c78 184 else
xmwmx 12:51be919e2c78 185 {
xmwmx 13:a6e12b4c7192 186 pc.printf("x %f | y %f | th| %f | al %f limited\r\n",x,y,theta,alpha);
xmwmx 12:51be919e2c78 187 }
xmwmx 13:a6e12b4c7192 188 theta=0;
xmwmx 13:a6e12b4c7192 189 alpha=0;
xmwmx 8:e76bebe9c45f 190 }
xmwmx 10:acc53f50c9df 191
xmwmx 10:acc53f50c9df 192
xmwmx 13:a6e12b4c7192 193 /*
xmwmx 8:e76bebe9c45f 194 void draw()
xmwmx 8:e76bebe9c45f 195 {
xmwmx 10:acc53f50c9df 196 //unit_xy=unit_xy*k;
xmwmx 10:acc53f50c9df 197 float x, y, z,a;
xmwmx 10:acc53f50c9df 198 FILE *fp_drawing = fopen("/sd/write.txt", "r");
xmwmx 8:e76bebe9c45f 199 pc.printf("reading\r\n");
xmwmx 10:acc53f50c9df 200 flagp=0;
xmwmx 10:acc53f50c9df 201 for (int i = 0; fscanf(fp_drawing, "(%f %f %f %f)", &x, &y, &z,&a) == 4&&flagp==0; i++)
xmwmx 8:e76bebe9c45f 202 {
xmwmx 10:acc53f50c9df 203 pc.printf("(%f,%f,%f)|%d\r\n", x, y, z,i);
xmwmx 10:acc53f50c9df 204 moveto(x, y,z);
xmwmx 8:e76bebe9c45f 205 // moveto(thedata[i][0],thedata[i][1]);
xmwmx 8:e76bebe9c45f 206 // markd??>ot(thedata[i][2]);
xmwmx 8:e76bebe9c45f 207 }
xmwmx 8:e76bebe9c45f 208 fclose(fp_drawing);
xmwmx 10:acc53f50c9df 209 flagw = false;
xmwmx 10:acc53f50c9df 210 flagp = false;
xmwmx 10:acc53f50c9df 211 pc.printf("Here4!\r\n");
xmwmx 8:e76bebe9c45f 212 }
xmwmx 8:e76bebe9c45f 213
xmwmx 10:acc53f50c9df 214
xmwmx 8:e76bebe9c45f 215
xmwmx 11:568789ce1397 216 void on_control_cmd(const char* actuator_name, const char* control_value)
xmwmx 11:568789ce1397 217 {
xmwmx 11:568789ce1397 218
xmwmx 11:568789ce1397 219 if (strcmp(actuator_name, "create") == 0)
xmwmx 11:568789ce1397 220 {
xmwmx 11:568789ce1397 221 int the_command = atoi(control_value);
xmwmx 11:568789ce1397 222 //
xmwmx 11:568789ce1397 223 if(the_command==0)
xmwmx 11:568789ce1397 224 {
xmwmx 11:568789ce1397 225 ready=1;
xmwmx 11:568789ce1397 226 pc.printf("get ready\r\n");
xmwmx 11:568789ce1397 227 }
xmwmx 11:568789ce1397 228 else if(the_command==1)
xmwmx 11:568789ce1397 229 {
xmwmx 11:568789ce1397 230 start=1;
xmwmx 11:568789ce1397 231 pc.printf("get start\r\n");
xmwmx 11:568789ce1397 232 }
xmwmx 11:568789ce1397 233 else if(the_command==2)
xmwmx 11:568789ce1397 234 {
xmwmx 11:568789ce1397 235 done=1;
xmwmx 11:568789ce1397 236 pc.printf("get done\r\n");
xmwmx 11:568789ce1397 237 }
xmwmx 11:568789ce1397 238 //
xmwmx 11:568789ce1397 239
xmwmx 11:568789ce1397 240 }
xmwmx 11:568789ce1397 241 }
xmwmx 13:a6e12b4c7192 242 */
xmwmx 11:568789ce1397 243
xmwmx 13:a6e12b4c7192 244 void on_control_cmd(const char* actuator_name, const char* control_value)
xmwmx 13:a6e12b4c7192 245 {
xmwmx 13:a6e12b4c7192 246 //pc.printf("Received [%s] [%s]\r\n", actuator_name, control_value);
xmwmx 13:a6e12b4c7192 247 if (strcmp(actuator_name, "move") == 0)
xmwmx 13:a6e12b4c7192 248 {
xmwmx 13:a6e12b4c7192 249 //接受到的坐标数据写入存储卡
xmwmx 13:a6e12b4c7192 250 if(strcmp(control_value, "(255,255,255)") == 0)
xmwmx 13:a6e12b4c7192 251 {
xmwmx 13:a6e12b4c7192 252 pc.printf("received (255,255,255)\r\n");
xmwmx 13:a6e12b4c7192 253 received=1;
xmwmx 13:a6e12b4c7192 254 fclose(fp_drawing);
xmwmx 13:a6e12b4c7192 255 }
xmwmx 13:a6e12b4c7192 256 else
xmwmx 13:a6e12b4c7192 257 {
xmwmx 13:a6e12b4c7192 258 fprintf(fp_drawing, "%s", control_value);
xmwmx 13:a6e12b4c7192 259 pc.printf("received %s\r\n",control_value);
xmwmx 13:a6e12b4c7192 260 }
xmwmx 13:a6e12b4c7192 261 }
xmwmx 13:a6e12b4c7192 262 if (strcmp(actuator_name, "command") == 0)
xmwmx 13:a6e12b4c7192 263 {
xmwmx 13:a6e12b4c7192 264 int the_command = atoi(control_value);
xmwmx 13:a6e12b4c7192 265 //
xmwmx 13:a6e12b4c7192 266 if(the_command==1)
xmwmx 13:a6e12b4c7192 267 {
xmwmx 13:a6e12b4c7192 268 ready=1;
xmwmx 13:a6e12b4c7192 269 pc.printf("get ready\r\n");
xmwmx 13:a6e12b4c7192 270 }
xmwmx 13:a6e12b4c7192 271 else if(the_command==2)
xmwmx 13:a6e12b4c7192 272 {
xmwmx 13:a6e12b4c7192 273 start=1;
xmwmx 13:a6e12b4c7192 274 pc.printf("get start\r\n");
xmwmx 13:a6e12b4c7192 275 }
xmwmx 13:a6e12b4c7192 276 else if(the_command==3)
xmwmx 13:a6e12b4c7192 277 {
xmwmx 13:a6e12b4c7192 278 done=1;
xmwmx 13:a6e12b4c7192 279 pc.printf("get done\r\n");
xmwmx 13:a6e12b4c7192 280 }
xmwmx 13:a6e12b4c7192 281 //
xmwmx 13:a6e12b4c7192 282
xmwmx 13:a6e12b4c7192 283 }
xmwmx 13:a6e12b4c7192 284
xmwmx 13:a6e12b4c7192 285
xmwmx 13:a6e12b4c7192 286
xmwmx 13:a6e12b4c7192 287
xmwmx 13:a6e12b4c7192 288 }
xmwmx 11:568789ce1397 289
xmwmx 8:e76bebe9c45f 290 int main()
xmwmx 8:e76bebe9c45f 291 {
xmwmx 11:568789ce1397 292 MQTTSocket sock;
xmwmx 11:568789ce1397 293 MClient client(sock);
xmwmx 11:568789ce1397 294 //声明所有的传感器,每行一个,每个由名字、单位两部分组成,最后一行必须为空指针作为结尾
xmwmx 11:568789ce1397 295 const char* sensors[][2] = {
xmwmx 11:568789ce1397 296 "report", "",
xmwmx 11:568789ce1397 297 NULL, NULL //最后一行以空指针作为结束标记
xmwmx 11:568789ce1397 298 };
xmwmx 11:568789ce1397 299
xmwmx 11:568789ce1397 300 //声明所有的执行器,每行一个,每个由名字、参数类型两部分组成,最后一行必须为空指针作为结尾
xmwmx 11:568789ce1397 301 const char* actuators[][2] = {
xmwmx 11:568789ce1397 302 "create", "",
xmwmx 11:568789ce1397 303 NULL, NULL //最后一行以空指针作为结束标记
xmwmx 11:568789ce1397 304 };
xmwmx 11:568789ce1397 305 pc.printf("connecting...\r\n");
xmwmx 11:568789ce1397 306
xmwmx 11:568789ce1397 307 networking_init(sock, client, "192.168.1.100", sensors, actuators, on_control_cmd);
xmwmx 11:568789ce1397 308
xmwmx 11:568789ce1397 309 pc.printf("Initialization done.\r\n");
xmwmx 11:568789ce1397 310 pc.printf("laser printer send ready.haha\r\n");
xmwmx 13:a6e12b4c7192 311
xmwmx 13:a6e12b4c7192 312
xmwmx 13:a6e12b4c7192 313 init_zero(); //初始化
xmwmx 13:a6e12b4c7192 314 pc.printf("beginning\r\n");
xmwmx 13:a6e12b4c7192 315 beginning();
xmwmx 13:a6e12b4c7192 316 pc.printf("finish\r\n");
xmwmx 13:a6e12b4c7192 317
xmwmx 13:a6e12b4c7192 318
xmwmx 11:568789ce1397 319 ready=0;
xmwmx 13:a6e12b4c7192 320 received=0;
xmwmx 11:568789ce1397 321 start=0;
xmwmx 11:568789ce1397 322 done=0;
xmwmx 13:a6e12b4c7192 323
xmwmx 13:a6e12b4c7192 324
xmwmx 11:568789ce1397 325 while(1)
xmwmx 11:568789ce1397 326 {
xmwmx 11:568789ce1397 327 if(!ready)
xmwmx 11:568789ce1397 328 {
xmwmx 11:568789ce1397 329 publish_value(client, "report", "ready.");
xmwmx 11:568789ce1397 330
xmwmx 11:568789ce1397 331 }
xmwmx 13:a6e12b4c7192 332 else if(ready&&!received)
xmwmx 9:a3f9faa9ca1f 333 {
xmwmx 13:a6e12b4c7192 334 pc.printf("send wait.\r\n");
xmwmx 13:a6e12b4c7192 335 fp_drawing = fopen("/sd/write.txt", "w");
xmwmx 13:a6e12b4c7192 336 pc.printf("opened\r\n");
xmwmx 13:a6e12b4c7192 337 publish_value(client, "report", "wait data.");
xmwmx 13:a6e12b4c7192 338 ready=0;
xmwmx 9:a3f9faa9ca1f 339 }
xmwmx 10:acc53f50c9df 340
xmwmx 13:a6e12b4c7192 341 else if(received&&!start)
xmwmx 13:a6e12b4c7192 342 {
xmwmx 13:a6e12b4c7192 343 publish_value(client, "report", "received.");
xmwmx 13:a6e12b4c7192 344 pc.printf("send received.\r\n");
xmwmx 13:a6e12b4c7192 345 received=0;
xmwmx 13:a6e12b4c7192 346 }
xmwmx 13:a6e12b4c7192 347
xmwmx 13:a6e12b4c7192 348 else if(start)
xmwmx 13:a6e12b4c7192 349 {
xmwmx 13:a6e12b4c7192 350 float x, y, z;
xmwmx 13:a6e12b4c7192 351 fp_drawing = fopen("/sd/write.txt", "r");
xmwmx 13:a6e12b4c7192 352 pc.printf("reading\r\n");
xmwmx 13:a6e12b4c7192 353 for (int i = 0; fscanf(fp_drawing, "(%f,%f,%f)", &x, &y, &z) == 3; i++)
xmwmx 9:a3f9faa9ca1f 354 {
xmwmx 13:a6e12b4c7192 355 pc.printf("(%f,%f,%f)|%d\r\n", x, y, z,i);
xmwmx 13:a6e12b4c7192 356 moveto(x*lianggang+first[0], y*lianggang+first[1],z*lianggang+first[2]);
xmwmx 13:a6e12b4c7192 357 pc.printf("(%f,%f,%f)|%d\r\n", x*lianggang+first[0], y*lianggang+first[1],z*lianggang+first[2],i);
xmwmx 9:a3f9faa9ca1f 358 }
xmwmx 13:a6e12b4c7192 359 fclose(fp_drawing);
xmwmx 11:568789ce1397 360 ready=0;
xmwmx 13:a6e12b4c7192 361 received=0;
xmwmx 11:568789ce1397 362 start=0;
xmwmx 11:568789ce1397 363 done=0;
xmwmx 13:a6e12b4c7192 364 publish_value(client, "report", "done.");
xmwmx 13:a6e12b4c7192 365 pc.printf("done.\r\n");
xmwmx 10:acc53f50c9df 366 }
xmwmx 13:a6e12b4c7192 367
xmwmx 13:a6e12b4c7192 368
xmwmx 10:acc53f50c9df 369
xmwmx 11:568789ce1397 370 client.yield(1000);
xmwmx 13:a6e12b4c7192 371 }
xmwmx 8:e76bebe9c45f 372 }