/*********************************************************************
*
*       _DispFillrate
*/
static void _DispFillrate(char * sPre, float FillratePPS, char * sPost) {
  unsigned int   i;
  char         * apLabel[] = {" KPixel/s", " MPixel/s"};

  GUI_DispString(sPre);
  for (i = 0; i < GUI_COUNTOF(apLabel); i++) {
    FillratePPS /= 1000;
    if (FillratePPS < 1000) {
      GUI_DispFloatFix((float)FillratePPS, 7, 3);
      GUI_DispString(apLabel[i]);
      break;
    }
  }
  GUI_DispString(sPost);
}
Example #2
0
void GUIDEMO_Unclassified(void) {
  int xSize = LCD_GetXSize();
	int32_t acc_adc_data[3] = {0};
	float acc_nkg[3] = {0};
	uint32_t baro_data = 0;
	int32_t temp_data = 0;
	uint32_t humi_data = 0;
	uint32_t als_data = 0;
	uint32_t ps_data = 0;
  uint32_t step = 0;
#if 0
	if (sensor_all_open() != 0)
		return;
#endif
  sensor_all_open();

  // lighten GS-LED and ALS-LED
  hal_gpio_output_low(&brd_gpio_table[GPIO_LED_GS]);
  hal_gpio_output_low(&brd_gpio_table[GPIO_LED_ALS]);

  // set back screen black

  // GUIDEMO_HideInfoWin();
  // GUIDEMO_ShowControlWin();
  // GUI_Exec();
  GUIDEMO_DrawBk(1);
  GUI_SetColor(GUI_BLACK);
  GUIDEMO_DrawBk(1);

  // set font
	GUI_SetColor(GUI_WHITE);
  GUI_SetFont(&GUI_Font16_ASCII);

  GUI_DispStringAt("step",                GUIDEMO_UNCLASSIFIED_OFFSET, Y_START);
  GUI_DispStringAt("acc_x",               GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  2);
  GUI_DispStringAt("acc_y",               GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  4);
  GUI_DispStringAt("acc_z",               GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  6);
#if 0
  GUI_DispStringAt("barometer",     GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  6);
  GUI_DispStringAt("temperature",   GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  8);
  GUI_DispStringAt("humidity",      GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  10);
#endif
  GUI_DispStringAt("als",                  GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  8);
	GUI_DispStringAt("proximity",            GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  10);
  GUI_DispStringAt("sensor data upload:",  GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  12);


  // GUI_HWIN hWnd;

  do{
      // print value
      // GUI_SetOrientation(GUI_SWAP_XY);

   //   hWnd = WM_CreateWindow(10, 10, 200, 200, WM_CF_HIDE, _cbDesktop, 0);
   //   HAL_Delay(1000);
   //   WM_DeleteWindow(hWnd);

      // print value type

      if (!get_acc_data(&acc_adc_data[0], &acc_adc_data[1], &acc_adc_data[2], &step)) {
				acc_nkg[0] = (float)acc_adc_data[0] * 9.8 / 1024;
				acc_nkg[1] = (float)acc_adc_data[1] * 9.8 / 1024;
				acc_nkg[2] = (float)acc_adc_data[2] * 9.8 / 1024;
				GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START);
        GUI_DispDec(step, DEC_LEN_DEF);
				GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  2);
				GUI_DispFloatFix(acc_nkg[0], 7, 3);
				GUI_DispString(" N/kg");
				GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  4);
				GUI_DispFloatFix(acc_nkg[1], 7, 3);
				GUI_DispString(" N/kg");
				GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  6);
				GUI_DispFloatFix(acc_nkg[2], 7, 3);
				GUI_DispString(" N/kg");
      }
      else {
        GUI_DispStringAt("unknow", (xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  2);
        GUI_DispStringAt("unknow", (xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  4);
        GUI_DispStringAt("unknow", (xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  6);
      }
#if 0
      if (!get_baro_data(&baro_data)) {
        GUI_GotoXY((xSize >> 1) + GUIDEMO_UNCLASSIFIED_OFFSET, Y_START + Y_STEP *  6);
        GUI_DispDec(baro_data, DEC_LEN_DEF);
      }
Example #3
0
/*
*********************************************************************************************************
*	函 数 名: DispCh1Wave
*	功能说明: 显示通道1波形
*	形    参:无
*	返 回 值: 无
*********************************************************************************************************
*/
 void DispCh1Wave(void)
{
	int16_t i,j = 0;		/* 有符号数 */
	uint16_t *px;
	uint16_t *py;
	int16_t iTemp;
    uint16_t VccMax,VccMin;
	uint16_t Average;

      for(i=0;i<1024;i++)
	{ 
		
		g_DSO.Ch1Buf[j++]=g_DSO.buffer[i]>>16;		//ADC2
		g_DSO.Ch1Buf[j++]=g_DSO.buffer[i] & 0xFFFF;	//ADC1
	}

	if (g_DSO.BufUsed == 0)
	{
		g_DSO.BufUsed = 1;
	}
	else
	{
		g_DSO.BufUsed = 0;
	}

	if (g_DSO.BufUsed == 0)
	{
		px = g_DSO.xCh1Buf1;
		py = g_DSO.yCh1Buf1;
	}
	else
	{
		px = g_DSO.xCh1Buf2;
		py = g_DSO.yCh1Buf2;
	}

	  GUI_SetColor(GUI_MAGENTA);
	
	 /* 下面的代码用于实现 最大值和最小值得差值  */
	 VccMax=g_DSO.Ch1Buf[0];
	 VccMin=g_DSO.Ch1Buf[0];
	 for(i=1;i<1024;i++)
	 {
	    if(VccMax<g_DSO.Ch1Buf[i])VccMax=g_DSO.Ch1Buf[i];
		if(VccMin>g_DSO.Ch1Buf[i])VccMin=g_DSO.Ch1Buf[i];
	 }
	  VccMax=VccMax-VccMin;
      GUI_GotoXY(323-55,104);
	  GUI_DispFloatFix((VccMax* 1.406)/1050,5,2);
	 
	 /* CH1通道, 输入0V时,ADC采样值 = 1900 ,1024个点求到的平均值 */
	 /* 增益1:1的时候 1.406对应的AD值是2951 -1901 = 1050  */
	  for(i=1;i<21;i++)
	 {
	    Average +=g_DSO.Ch1Buf[i];
	 } 
	 Average = Average / 20;
	 GUI_GotoXY(323-55,40);
	 GUI_DispFloatFix(((Average-1900) * 1.406)/1050,5,2);
	 

	 GUI_DispDecAt(g_DSO.Ch1Buf[0], 323-55, 72, 4);
	/* 下面的代码用于实现波形的刷新  */
	for (i = 0; i < 300; i++)
	{
		px[i] = 15 + i;
		iTemp = g_DSO.Ch1VOffset + (int16_t)((1900 - g_DSO.Ch1Buf[i + 1]) * 10)/g_DSO.Ch1Attenuation ;
		if (iTemp > 200)
		{
			iTemp = 200;
		}
		else if (iTemp < 0)
		{
			iTemp = 0;
		}
		py[i] = iTemp;
	}

	/* 下面的代码采取清除上帧波形,然后再重新描绘新波形,避免整屏刷新的闪烁感 */
	/* 清除上帧波形 */
	if (g_DSO.BufUsed == 0)
	{
		GUI_SetColor(GUI_BLUE);
	    GUI_DrawGraph((signed short *)g_DSO.yCh1Buf2, 250, 14,20);

	}
	else
	{
		GUI_SetColor(GUI_BLUE);
	    GUI_DrawGraph((signed short *)g_DSO.yCh1Buf1, 250, 14,20);
	}

	/* 显示更新的波形 */
	GUI_SetColor(GUI_YELLOW);
	GUI_DrawGraph((I16 *)py, 250, 14,20);
}