Esempio n. 1
0
// ---------------------------------------------------------------------------
/// 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, &reg, tecIO_interpE);
    tecIO_saveVec (IO_nameCpuRec (name_H_full, cpu_here, tecplotNum), H, &reg, 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));
}
Esempio n. 2
0
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;
}