// --------------------------------------------------------------------------- /// Saves meshes for tecplot.out. // --------------------------------------------------------------------------- void tecIO_saveFields (double time, meshVec_RO_p E, meshVec_RO_p H) { parameter_save (); int fileMap = fileMap_save (); // Saving region. reg_t reg = {{cpu_min[0], cpu_min[1], cpu_min[2]}, {cpu_max[0], cpu_max[1], cpu_max[2]}, 0}; // Saves interpolated vector fields. tecIO_saveVec (IO_nameCpuRec (name_E_full, cpu_here, tecplotNum), E, ®, tecIO_interpE); tecIO_saveVec (IO_nameCpuRec (name_H_full, cpu_here, tecplotNum), H, ®, tecIO_interpH); if (cpu_here) return; // Saves header and descriptor. FILE *fp = cfg_open (IO_nameRec (name_info, tecplotNum), "wb", __func__); fwrite (&time, sizeof (double), 1, fp); fwrite (&cpu_total, sizeof (int), 1, fp); fwrite (&fileMap, sizeof (int), 1, fp); fclose (fp); // Saves partition. partition_save (IO_nameRec (name_prtn_full, tecplotNum)); }
void doRxData(void) { u8 BufferEnable; int i; u8 message[256]={0}; u8 head,length,key; u16 crc_recived,crc_calc; u8 re_h,re_l,ca_h,ca_l; param_t *p = getParam(); GPIO_ResetBits(GPIOC, GPIO_Pin_0); if(Rx_Ok0 == 1){BufferEnable = 0;Rx_Ok0 = 0;} else if(Rx_Ok1 == 1){BufferEnable = 1;Rx_Ok1 = 0;} else return; for(i=0;i<256;i++) message[i] = Rx_Buf[BufferEnable][i]; // head = message[0];//帧头 if(head != '$')return; length = message[1];//包含帧头帧尾的总长度 if(length < 4)return; key = message[2];//关键字 //crc_recived = (message[length-2]<<8)+message[length-1];//校验码 //crc_calc = math_crc16(message,length-2); switch(key) { case 0: parameter_save(); case 1: //uart_putstr(message); if(message[3] == 0) { parameter_send(0); parameter_send(1); parameter_send(2); parameter_send(3); } else { parameter_send(message[3]); } break; case 2: //uart_putstr(message); p->angle_pid[0].p = (*(float *)(&message[3])); p->angle_pid[0].i = (*(float *)(&message[7])); p->angle_pid[0].d = (*(float *)(&message[11])); p->angle_pid[0].imax = (*(float *)(&message[15])); p->angle_pid[0].imin = (*(float *)(&message[19])); p->flag = 1; break; case 3: //uart_putstr(message); p->angle_pid[1].p = (*(float *)(&message[3])); p->angle_pid[1].i = (*(float *)(&message[7])); p->angle_pid[1].d = (*(float *)(&message[11])); p->angle_pid[1].imax = (*(float *)(&message[15])); p->angle_pid[1].imin = (*(float *)(&message[19])); p->flag = 1; break; case 4: //uart_putstr(message); p->angle_pid[2].p = (*(float *)(&message[3])); p->angle_pid[2].i = (*(float *)(&message[7])); p->angle_pid[2].d = (*(float *)(&message[11])); p->angle_pid[2].imax = (*(float *)(&message[15])); p->angle_pid[2].imin = (*(float *)(&message[19])); p->flag = 1; break; case 5: //uart_putstr(message); p->speed_pid[0].p = (*(float *)(&message[3])); p->speed_pid[0].i = (*(float *)(&message[7])); p->speed_pid[0].d = (*(float *)(&message[11])); p->speed_pid[0].imax = (*(float *)(&message[15])); p->speed_pid[0].imin = (*(float *)(&message[19])); p->flag = 1; break; case 6: break; default: parameter_save(); break; } for(i=0;i<256;i++) { Rx_Buf[BufferEnable][i] = 0; } GPIO_SetBits(GPIOC, GPIO_Pin_0); return; }