收到xy自动缩放

Dependencies:   MQTT SDFileSystem WIZnet_Library mbed

Fork of wmx_laser by w mx

Committer:
xmwmx
Date:
Fri Jul 27 10:19:40 2018 +0000
Revision:
8:e76bebe9c45f
Child:
9:a3f9faa9ca1f
???????????py????????????????????????py??????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xmwmx 8:e76bebe9c45f 1 /************************************************************************************************
xmwmx 8:e76bebe9c45f 2 File name: main.cpp
xmwmx 8:e76bebe9c45f 3 Description: 项目激光部分客户端代码
xmwmx 8:e76bebe9c45f 4 Author: 秦智
xmwmx 8:e76bebe9c45f 5 Date: June 4, 2018
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 8:e76bebe9c45f 16
xmwmx 8:e76bebe9c45f 17
xmwmx 8:e76bebe9c45f 18 #define edgex1 30 // 上x(正朝向开关)下y(负朝向开关)
xmwmx 8:e76bebe9c45f 19 #define edgex2 125 // __
xmwmx 8:e76bebe9c45f 20 #define edgey1 90 // ||
xmwmx 8:e76bebe9c45f 21 #define edgey2 150 // 115mm y2
xmwmx 8:e76bebe9c45f 22 #define widthx 95 // x2 || x1
xmwmx 8:e76bebe9c45f 23 #define widthy 60 // //=====190mm====//30mm/|开关
xmwmx 8:e76bebe9c45f 24 #define mm 100//100步1mm // ||
xmwmx 8:e76bebe9c45f 25 // ||
xmwmx 8:e76bebe9c45f 26 // ||
xmwmx 8:e76bebe9c45f 27 // __ y1
xmwmx 8:e76bebe9c45f 28 //
xmwmx 8:e76bebe9c45f 29 // -- 开关 15mm
xmwmx 8:e76bebe9c45f 30
xmwmx 8:e76bebe9c45f 31
xmwmx 8:e76bebe9c45f 32 /////调试
xmwmx 8:e76bebe9c45f 33 Serial pc(PA_9, PA_10);
xmwmx 8:e76bebe9c45f 34 DigitalOut LED(PB_8);
xmwmx 8:e76bebe9c45f 35 /////
xmwmx 8:e76bebe9c45f 36
xmwmx 8:e76bebe9c45f 37 //硬件接口
xmwmx 8:e76bebe9c45f 38 // mosi, miso, sclk, cs, name
xmwmx 8:e76bebe9c45f 39 SDFileSystem sd(PB_15, PB_14, PB_13, PB_12, "sd");
xmwmx 8:e76bebe9c45f 40 //步进电机
xmwmx 8:e76bebe9c45f 41 DigitalOut step[2] = {DigitalOut(PC_5), DigitalOut(PA_5)}; //0--x P9,1--y P17
xmwmx 8:e76bebe9c45f 42 DigitalOut dir[2] = {DigitalOut(PC_4), DigitalOut(PA_4)}; //0--x,1--y
xmwmx 8:e76bebe9c45f 43 DigitalOut en[2] = {DigitalOut(PD_2), DigitalOut(PA_2)}; //0--x,1--y
xmwmx 8:e76bebe9c45f 44 //电子开关,激光开关
xmwmx 8:e76bebe9c45f 45 DigitalOut switch_GS(PC_15);
xmwmx 8:e76bebe9c45f 46 //行程开关
xmwmx 8:e76bebe9c45f 47 DigitalIn switch_pos1(PC_8); //P25
xmwmx 8:e76bebe9c45f 48 DigitalIn switch_pos2(PA_6); //P26
xmwmx 8:e76bebe9c45f 49 DigitalIn switch_pos3(PA_11); //P27
xmwmx 8:e76bebe9c45f 50
xmwmx 8:e76bebe9c45f 51 //运行中的全局变量
xmwmx 8:e76bebe9c45f 52 volatile bool Working, Getawork, Isend, Dataused, Getdata;
xmwmx 8:e76bebe9c45f 53 FILE *fp_drawing; // 存储图案的文件
xmwmx 8:e76bebe9c45f 54 int status = 0; //0: 初始化; 1:建立通信; 2:等候任务; 3:等待数据 4:正在执行一个任务
xmwmx 8:e76bebe9c45f 55 int now_x, now_y;
xmwmx 8:e76bebe9c45f 56 int Endoffile = 0;
xmwmx 8:e76bebe9c45f 57
xmwmx 8:e76bebe9c45f 58 // float thedata[50][3];
xmwmx 8:e76bebe9c45f 59 // char sdata[1024];
xmwmx 8:e76bebe9c45f 60 int Nofdata;
xmwmx 8:e76bebe9c45f 61 bool ifreceive;
xmwmx 8:e76bebe9c45f 62
xmwmx 8:e76bebe9c45f 63 //与实际有关参数
xmwmx 8:e76bebe9c45f 64 float Lenoflattice = 1 ;//mm 取1mm为xy单元 unit_xy/Lenoflattice=100
xmwmx 8:e76bebe9c45f 65 int unit_xy = 200; //单位长度(xy移动一格)对应unit_xy转 大约10cm/3圈/9600step 约96mm/9600step=0.1mm/10step
xmwmx 8:e76bebe9c45f 66 int unit_x = 103; //单位长度(xy移动一格)对应unit_x转 大约10cm/3圈/9600step 约96mm/9600step=0.1mm/10step
xmwmx 8:e76bebe9c45f 67 int unit_y = 103; //单位长度(xy移动一格)对应unit_y转 大约10cm/3圈/9600step 约96mm/9600step=0.1mm/10step
xmwmx 8:e76bebe9c45f 68 ///Ticker ticker_step;
xmwmx 8:e76bebe9c45f 69 float step_halfperiod = 0.0001;//0.0002;
xmwmx 8:e76bebe9c45f 70 int max_x, max_y;
xmwmx 8:e76bebe9c45f 71 int dir_x = 1;///调试时调整
xmwmx 8:e76bebe9c45f 72 int dir_y = 1;///调试时调整
xmwmx 8:e76bebe9c45f 73 int dot_max = 30; //灰度最大值对应多少次激光点击
xmwmx 8:e76bebe9c45f 74 float dot_last = 0.005; //每次激光点击持续多久
xmwmx 8:e76bebe9c45f 75 int H_max = 255; //灰度值最大值
xmwmx 8:e76bebe9c45f 76 double k = 1.0; //缩放比例
xmwmx 8:e76bebe9c45f 77 double y=0;//图片y边长
xmwmx 8:e76bebe9c45f 78 double x=0;//图片x边长
xmwmx 8:e76bebe9c45f 79 int key=0;//判断变量
xmwmx 8:e76bebe9c45f 80
xmwmx 8:e76bebe9c45f 81 void rotate(int id ,int pix);
xmwmx 8:e76bebe9c45f 82
xmwmx 8:e76bebe9c45f 83
xmwmx 8:e76bebe9c45f 84
xmwmx 8:e76bebe9c45f 85
xmwmx 8:e76bebe9c45f 86 void biginning()
xmwmx 8:e76bebe9c45f 87 {
xmwmx 8:e76bebe9c45f 88 pc.printf("x\n"); // 上x(正朝向开关)下y(负朝向开关)
xmwmx 8:e76bebe9c45f 89 while(!switch_pos1.read()) // __ y2
xmwmx 8:e76bebe9c45f 90 { // ||
xmwmx 8:e76bebe9c45f 91 rotate(0,5); // 115mm
xmwmx 8:e76bebe9c45f 92 } // x2 || x1
xmwmx 8:e76bebe9c45f 93 rotate(0,-mm*edgex2); // //=====200mm====//42mm/|开关
xmwmx 8:e76bebe9c45f 94 pc.printf("y\n"); // ||
xmwmx 8:e76bebe9c45f 95 while(!switch_pos2.read()) // ||
xmwmx 8:e76bebe9c45f 96 { // ||
xmwmx 8:e76bebe9c45f 97 rotate(1,-5); // __ y1
xmwmx 8:e76bebe9c45f 98 } //
xmwmx 8:e76bebe9c45f 99 rotate(1,mm*edgey1); // __ 开关 15mm
xmwmx 8:e76bebe9c45f 100
xmwmx 8:e76bebe9c45f 101 //走轮廓
xmwmx 8:e76bebe9c45f 102 rotate(0,mm*widthx);
xmwmx 8:e76bebe9c45f 103 rotate(1,mm*widthy);
xmwmx 8:e76bebe9c45f 104 rotate(0,mm*-widthx);
xmwmx 8:e76bebe9c45f 105 rotate(1,mm*-widthy);
xmwmx 8:e76bebe9c45f 106 }
xmwmx 8:e76bebe9c45f 107
xmwmx 8:e76bebe9c45f 108 void report()
xmwmx 8:e76bebe9c45f 109 {
xmwmx 8:e76bebe9c45f 110 // ser2usb.printf("-1- status: %d \r\n", status);
xmwmx 8:e76bebe9c45f 111 // ser2usb.printf("-2- now_x: %d now_y: %d \r\n", now_x,now_y);
xmwmx 8:e76bebe9c45f 112 //ser2usb.printf("-3- switch_GS: %i \r\n", switch_GS.read());
xmwmx 8:e76bebe9c45f 113 //ser2usb.printf("-4- switch_pos1: %i switch_pos2: %i switch_pos3: %i \r\n", switch_pos1.read(),switch_pos2.read(),switch_pos3.read());
xmwmx 8:e76bebe9c45f 114 //ser2usb.printf("-5- en[0]: %i en[1]: %i \r\n", en[0].read(),en[1].read());
xmwmx 8:e76bebe9c45f 115 //ser2usb.printf("-6- dir[0]: %i dir[1]: %i \r\n", dir[0].read(),dir[1].read());
xmwmx 8:e76bebe9c45f 116 //ser2usb.printf("-7- step[0]: %i step[1]: %i \r\n", step[0].read(),step[1].read());
xmwmx 8:e76bebe9c45f 117 }
xmwmx 8:e76bebe9c45f 118
xmwmx 8:e76bebe9c45f 119 void init()
xmwmx 8:e76bebe9c45f 120 {
xmwmx 8:e76bebe9c45f 121 status = 0;
xmwmx 8:e76bebe9c45f 122 now_x = 0;
xmwmx 8:e76bebe9c45f 123 now_y = 0;
xmwmx 8:e76bebe9c45f 124 step[0] = 0;
xmwmx 8:e76bebe9c45f 125 step[1] = 0;
xmwmx 8:e76bebe9c45f 126 //上x下y
xmwmx 8:e76bebe9c45f 127
xmwmx 8:e76bebe9c45f 128 }
xmwmx 8:e76bebe9c45f 129 void rotate(int id, int pix) //id= 0--x,1--y pix=3200为一圈
xmwmx 8:e76bebe9c45f 130 {
xmwmx 8:e76bebe9c45f 131 if (pix >= 0) {
xmwmx 8:e76bebe9c45f 132 dir[0] = dir_x;
xmwmx 8:e76bebe9c45f 133 dir[1] = dir_y;
xmwmx 8:e76bebe9c45f 134 } else {
xmwmx 8:e76bebe9c45f 135 pix = -pix;
xmwmx 8:e76bebe9c45f 136 dir[0] = 1 - dir_x;
xmwmx 8:e76bebe9c45f 137 dir[1] = 1 - dir_y;
xmwmx 8:e76bebe9c45f 138 }
xmwmx 8:e76bebe9c45f 139 for (int i = 0; i < pix; i++) {
xmwmx 8:e76bebe9c45f 140 step[id] = 1;
xmwmx 8:e76bebe9c45f 141 wait(step_halfperiod);
xmwmx 8:e76bebe9c45f 142 step[id] = 0;
xmwmx 8:e76bebe9c45f 143 wait(step_halfperiod);
xmwmx 8:e76bebe9c45f 144 }
xmwmx 8:e76bebe9c45f 145 }
xmwmx 8:e76bebe9c45f 146
xmwmx 8:e76bebe9c45f 147 void moveto(float x, float y)
xmwmx 8:e76bebe9c45f 148 {
xmwmx 8:e76bebe9c45f 149 rotate(0, (x - now_x)*unit_xy);
xmwmx 8:e76bebe9c45f 150 rotate(1, (y - now_y)*unit_xy);
xmwmx 8:e76bebe9c45f 151 now_x = x;
xmwmx 8:e76bebe9c45f 152 now_y = y;
xmwmx 8:e76bebe9c45f 153 }
xmwmx 8:e76bebe9c45f 154 void fuwei()
xmwmx 8:e76bebe9c45f 155 {
xmwmx 8:e76bebe9c45f 156 moveto(0, 0);
xmwmx 8:e76bebe9c45f 157 status = 1;
xmwmx 8:e76bebe9c45f 158 }
xmwmx 8:e76bebe9c45f 159 void markdot(float value)
xmwmx 8:e76bebe9c45f 160 {
xmwmx 8:e76bebe9c45f 161 //switch_GS=1;
xmwmx 8:e76bebe9c45f 162 int Ndot = floor(value * dot_max / H_max);
xmwmx 8:e76bebe9c45f 163 for (int i = 0; i < Ndot; i++) {
xmwmx 8:e76bebe9c45f 164 switch_GS = 1;
xmwmx 8:e76bebe9c45f 165 wait(dot_last);
xmwmx 8:e76bebe9c45f 166 switch_GS = 0;
xmwmx 8:e76bebe9c45f 167 }
xmwmx 8:e76bebe9c45f 168 }
xmwmx 8:e76bebe9c45f 169 /*
xmwmx 8:e76bebe9c45f 170 void dealdata(){
xmwmx 8:e76bebe9c45f 171 ser2usb.printf("getdata: %s \r\n",sdata);
xmwmx 8:e76bebe9c45f 172 int data_size = 0;//strlen(pch);
xmwmx 8:e76bebe9c45f 173 char * pch;
xmwmx 8:e76bebe9c45f 174 pch = strtok (sdata,"\r\n ,.-)(");
xmwmx 8:e76bebe9c45f 175 while (pch != NULL)
xmwmx 8:e76bebe9c45f 176 {
xmwmx 8:e76bebe9c45f 177 thedata[data_size/3][data_size%3]=atof(pch);
xmwmx 8:e76bebe9c45f 178 pch = strtok (NULL, "\r\n ,.-)(");
xmwmx 8:e76bebe9c45f 179 data_size++;
xmwmx 8:e76bebe9c45f 180 }
xmwmx 8:e76bebe9c45f 181 Nofdata = (data_size)/3;
xmwmx 8:e76bebe9c45f 182 }
xmwmx 8:e76bebe9c45f 183 void usbprintdata(){
xmwmx 8:e76bebe9c45f 184 ser2usb.printf("dealdata: \r\n <<<<<<<<<<<<<<<<");
xmwmx 8:e76bebe9c45f 185 for(int i=0;i<Nofdata;i++){
xmwmx 8:e76bebe9c45f 186 ser2usb.printf("<<< i: %i x: %f y: %f v: %f \r\n",i,thedata[i][0],thedata[i][1],thedata[i][2]);
xmwmx 8:e76bebe9c45f 187 }
xmwmx 8:e76bebe9c45f 188 ser2usb.printf("dealdata done! \r\n >>>>>>>>>>>>");
xmwmx 8:e76bebe9c45f 189 }
xmwmx 8:e76bebe9c45f 190 */
xmwmx 8:e76bebe9c45f 191
xmwmx 8:e76bebe9c45f 192 void draw()
xmwmx 8:e76bebe9c45f 193 {
xmwmx 8:e76bebe9c45f 194 unit_xy=unit_xy*k;
xmwmx 8:e76bebe9c45f 195 float x, y, v;
xmwmx 8:e76bebe9c45f 196 fp_drawing = fopen("/sd/write.txt", "r");
xmwmx 8:e76bebe9c45f 197 pc.printf("reading\r\n");
xmwmx 8:e76bebe9c45f 198 for (int i = 0; fscanf(fp_drawing, "(%f,%f,%f)", &x, &y, &v) == 3; i++)
xmwmx 8:e76bebe9c45f 199 {
xmwmx 8:e76bebe9c45f 200 pc.printf("(%f,%f,%f)\r\n", x, y, v);
xmwmx 8:e76bebe9c45f 201 moveto(x, y);
xmwmx 8:e76bebe9c45f 202 markdot(v);
xmwmx 8:e76bebe9c45f 203 // moveto(thedata[i][0],thedata[i][1]);
xmwmx 8:e76bebe9c45f 204 // markd??>ot(thedata[i][2]);
xmwmx 8:e76bebe9c45f 205 }
xmwmx 8:e76bebe9c45f 206 fclose(fp_drawing);
xmwmx 8:e76bebe9c45f 207 }
xmwmx 8:e76bebe9c45f 208
xmwmx 8:e76bebe9c45f 209 void on_control_cmd(const char* actuator_name, const char* control_value)
xmwmx 8:e76bebe9c45f 210 {
xmwmx 8:e76bebe9c45f 211 //pc.printf("Received [%s] [%s]\r\n", actuator_name, control_value);
xmwmx 8:e76bebe9c45f 212 if (strcmp(actuator_name, "dat") == 0&&status==3) {
xmwmx 8:e76bebe9c45f 213 //接受到的坐标数据写入存储卡
xmwmx 8:e76bebe9c45f 214 //pc.printf("Received yes\n");
xmwmx 8:e76bebe9c45f 215 fprintf(fp_drawing, "%s", control_value);
xmwmx 8:e76bebe9c45f 216 }
xmwmx 8:e76bebe9c45f 217 else if (strcmp(actuator_name, "cmd") == 0) {
xmwmx 8:e76bebe9c45f 218 int the_command = atoi(control_value);
xmwmx 8:e76bebe9c45f 219 //
xmwmx 8:e76bebe9c45f 220 if(key!=0)
xmwmx 8:e76bebe9c45f 221 {
xmwmx 8:e76bebe9c45f 222 if (key==1) {
xmwmx 8:e76bebe9c45f 223 k=the_command*0.1;
xmwmx 8:e76bebe9c45f 224 pc.printf("Received k %f\n",k);
xmwmx 8:e76bebe9c45f 225
xmwmx 8:e76bebe9c45f 226 }
xmwmx 8:e76bebe9c45f 227 if (key==2) {
xmwmx 8:e76bebe9c45f 228 x=the_command;
xmwmx 8:e76bebe9c45f 229 pc.printf("Received x %f\n",y);
xmwmx 8:e76bebe9c45f 230
xmwmx 8:e76bebe9c45f 231 }
xmwmx 8:e76bebe9c45f 232 if (key==3) {
xmwmx 8:e76bebe9c45f 233 y=the_command;
xmwmx 8:e76bebe9c45f 234 pc.printf("Received y %f\n",y);
xmwmx 8:e76bebe9c45f 235 }
xmwmx 8:e76bebe9c45f 236
xmwmx 8:e76bebe9c45f 237 key=0;
xmwmx 8:e76bebe9c45f 238 }
xmwmx 8:e76bebe9c45f 239 else
xmwmx 8:e76bebe9c45f 240 {
xmwmx 8:e76bebe9c45f 241 if (the_command == 1&&status==2&&key==0) {
xmwmx 8:e76bebe9c45f 242 Getawork = 1;
xmwmx 8:e76bebe9c45f 243 }
xmwmx 8:e76bebe9c45f 244 if (the_command == 2&&status==3&&key==0) {
xmwmx 8:e76bebe9c45f 245 Getdata = 1;
xmwmx 8:e76bebe9c45f 246 pc.printf("Received Getdata %d\n",Getdata);
xmwmx 8:e76bebe9c45f 247 }
xmwmx 8:e76bebe9c45f 248 else if (the_command == 3&&status==2&&key==0) {//传k
xmwmx 8:e76bebe9c45f 249 key=1;
xmwmx 8:e76bebe9c45f 250 }
xmwmx 8:e76bebe9c45f 251 else if (the_command == 4&&status==2&&key==0) {//传x
xmwmx 8:e76bebe9c45f 252 key=2;
xmwmx 8:e76bebe9c45f 253 }
xmwmx 8:e76bebe9c45f 254 else if (the_command == 5&&status==2&&key==0) {//传y
xmwmx 8:e76bebe9c45f 255 key=3;
xmwmx 8:e76bebe9c45f 256 }
xmwmx 8:e76bebe9c45f 257 }
xmwmx 8:e76bebe9c45f 258 //
xmwmx 8:e76bebe9c45f 259
xmwmx 8:e76bebe9c45f 260 }
xmwmx 8:e76bebe9c45f 261 }
xmwmx 8:e76bebe9c45f 262
xmwmx 8:e76bebe9c45f 263 int main()
xmwmx 8:e76bebe9c45f 264 {
xmwmx 8:e76bebe9c45f 265 init(); //初始化
xmwmx 8:e76bebe9c45f 266
xmwmx 8:e76bebe9c45f 267 //建立通信
xmwmx 8:e76bebe9c45f 268 status = 1;
xmwmx 8:e76bebe9c45f 269
xmwmx 8:e76bebe9c45f 270 pc.printf("starting\r\n");
xmwmx 8:e76bebe9c45f 271
xmwmx 8:e76bebe9c45f 272 MQTTSocket sock;
xmwmx 8:e76bebe9c45f 273 MClient client(sock);
xmwmx 8:e76bebe9c45f 274
xmwmx 8:e76bebe9c45f 275 //声明所有的传感器,每行一个,每个由名字、单位两部分组成,最后一行必须为空指针作为结尾
xmwmx 8:e76bebe9c45f 276 const char* sensors[][2] = {
xmwmx 8:e76bebe9c45f 277 "report", "",
xmwmx 8:e76bebe9c45f 278 NULL, NULL //最后一行以空指针作为结束标记
xmwmx 8:e76bebe9c45f 279 };
xmwmx 8:e76bebe9c45f 280
xmwmx 8:e76bebe9c45f 281 //声明所有的执行器,每行一个,每个由名字、参数类型两部分组成,最后一行必须为空指针作为结尾
xmwmx 8:e76bebe9c45f 282 const char* actuators[][2] = {
xmwmx 8:e76bebe9c45f 283 "dat", "",
xmwmx 8:e76bebe9c45f 284 "cmd", "",
xmwmx 8:e76bebe9c45f 285 NULL, NULL //最后一行以空指针作为结束标记
xmwmx 8:e76bebe9c45f 286 };
xmwmx 8:e76bebe9c45f 287 pc.printf("connecting...\r\n");
xmwmx 8:e76bebe9c45f 288
xmwmx 8:e76bebe9c45f 289 networking_init(sock, client, "192.168.1.100", sensors, actuators, on_control_cmd);
xmwmx 8:e76bebe9c45f 290
xmwmx 8:e76bebe9c45f 291 pc.printf("Initialization done.\r\n");
xmwmx 8:e76bebe9c45f 292
xmwmx 8:e76bebe9c45f 293 status = 2;
xmwmx 8:e76bebe9c45f 294
xmwmx 8:e76bebe9c45f 295
xmwmx 8:e76bebe9c45f 296 pc.printf("laser printer send ready.haha\r\n");
xmwmx 8:e76bebe9c45f 297
xmwmx 8:e76bebe9c45f 298 Getawork = 0;
xmwmx 8:e76bebe9c45f 299 Getdata = 0;
xmwmx 8:e76bebe9c45f 300
xmwmx 8:e76bebe9c45f 301 publish_value(client, "report", "input x:");
xmwmx 8:e76bebe9c45f 302 client.yield(5000);
xmwmx 8:e76bebe9c45f 303 publish_value(client, "report", "input y:");
xmwmx 8:e76bebe9c45f 304 client.yield(5000);
xmwmx 8:e76bebe9c45f 305
xmwmx 8:e76bebe9c45f 306 pc.printf("input k:\r\n");
xmwmx 8:e76bebe9c45f 307 publish_value(client, "report", "input k:");
xmwmx 8:e76bebe9c45f 308 wait(1);
xmwmx 8:e76bebe9c45f 309 int i=10;
xmwmx 8:e76bebe9c45f 310 while(y*k>widthy||i>0)
xmwmx 8:e76bebe9c45f 311 {
xmwmx 8:e76bebe9c45f 312 pc.printf("no%f|%f|%f|%d\r\n",y,k,y*k,i);
xmwmx 8:e76bebe9c45f 313 client.yield(1000);
xmwmx 8:e76bebe9c45f 314 i--;
xmwmx 8:e76bebe9c45f 315 }
xmwmx 8:e76bebe9c45f 316 pc.printf("yes%f|%f|%f\r\n",y,k,y*k);
xmwmx 8:e76bebe9c45f 317 pc.printf("ready.\r\n");
xmwmx 8:e76bebe9c45f 318
xmwmx 8:e76bebe9c45f 319
xmwmx 8:e76bebe9c45f 320 pc.printf("biginning\r\n");
xmwmx 8:e76bebe9c45f 321 biginning();
xmwmx 8:e76bebe9c45f 322 pc.printf("finish\r\n");
xmwmx 8:e76bebe9c45f 323
xmwmx 8:e76bebe9c45f 324 while (true)
xmwmx 8:e76bebe9c45f 325 {
xmwmx 8:e76bebe9c45f 326 if (status == 2)
xmwmx 8:e76bebe9c45f 327 {
xmwmx 8:e76bebe9c45f 328 if (Getawork)
xmwmx 8:e76bebe9c45f 329 { //收到新任务
xmwmx 8:e76bebe9c45f 330 Getawork = 0;
xmwmx 8:e76bebe9c45f 331 pc.printf("Begin receiving... %d\r\n",status);
xmwmx 8:e76bebe9c45f 332 // 打开文件,准备接受坐标数据
xmwmx 8:e76bebe9c45f 333 fp_drawing = fopen("/sd/write.txt", "w");
xmwmx 8:e76bebe9c45f 334 if (fp_drawing)
xmwmx 8:e76bebe9c45f 335 {
xmwmx 8:e76bebe9c45f 336 pc.printf("File opened\r\n");
xmwmx 8:e76bebe9c45f 337 status = 3;
xmwmx 8:e76bebe9c45f 338 publish_value(client, "report", "wait data.");
xmwmx 8:e76bebe9c45f 339 }
xmwmx 8:e76bebe9c45f 340 }
xmwmx 8:e76bebe9c45f 341 else
xmwmx 8:e76bebe9c45f 342 {
xmwmx 8:e76bebe9c45f 343 wait(0.1);
xmwmx 8:e76bebe9c45f 344 publish_value(client, "report", "ready.");
xmwmx 8:e76bebe9c45f 345 }
xmwmx 8:e76bebe9c45f 346 }
xmwmx 8:e76bebe9c45f 347
xmwmx 8:e76bebe9c45f 348
xmwmx 8:e76bebe9c45f 349 else if (status == 3)
xmwmx 8:e76bebe9c45f 350 {
xmwmx 8:e76bebe9c45f 351 if (Getdata)
xmwmx 8:e76bebe9c45f 352 { //数据接收完
xmwmx 8:e76bebe9c45f 353 Getdata = 0;
xmwmx 8:e76bebe9c45f 354 pc.printf("End receiving... %d\r\n",status);
xmwmx 8:e76bebe9c45f 355 fclose(fp_drawing);
xmwmx 8:e76bebe9c45f 356 publish_value(client, "report", "received.");
xmwmx 8:e76bebe9c45f 357 status = 4;
xmwmx 8:e76bebe9c45f 358 }
xmwmx 8:e76bebe9c45f 359 }
xmwmx 8:e76bebe9c45f 360 else if (status == 4)
xmwmx 8:e76bebe9c45f 361 {
xmwmx 8:e76bebe9c45f 362 // pc.printf("debug4 \r\n");
xmwmx 8:e76bebe9c45f 363 // dealdata();
xmwmx 8:e76bebe9c45f 364 pc.printf("Drawing.. %d \r\n",status);
xmwmx 8:e76bebe9c45f 365 // usbprintdata();
xmwmx 8:e76bebe9c45f 366 draw();
xmwmx 8:e76bebe9c45f 367 publish_value(client, "report", "done.");
xmwmx 8:e76bebe9c45f 368 status = 2;
xmwmx 8:e76bebe9c45f 369 }
xmwmx 8:e76bebe9c45f 370 client.yield(1000);
xmwmx 8:e76bebe9c45f 371 }
xmwmx 8:e76bebe9c45f 372
xmwmx 8:e76bebe9c45f 373 }