/********************************************************************* * * _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); }
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); }
/* ********************************************************************************************************* * 函 数 名: 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); }