不命名类型,怎么定义?


#include <WiFi.h>
#include <esp_now.h>
#include <Ticker.h>

#include <TFT_eSPI.h>
#include "ui.h"
#include <ArduinoJson.h>
static const uint16_t screenWidth  = 240;
static const uint16_t screenHeight = 240;
u8_t ti=0,tongren_n,biaoqing_n=0,eye_n=0;
int shangyanpi[18]={-220,-180,-140,-100,-60,-20,0,0,0,0,0,0,-20,-60,-100,-140,-180,-220};
static lv_disp_draw_buf_t draw_buf;
static lv_color_t buf[ screenWidth * screenHeight / 10 ];
static lv_color_t buf2[ screenWidth * screenHeight / 10 ];

TFT_eSPI tft = TFT_eSPI(screenWidth, screenHeight);
int a_degx,a_degy;

// void eyeclick_a()
// {
// lv_obj_set_x(ui_bgu, 0);
// lv_obj_set_y(ui_bgu, -240);
// eyeclick_Animation(ui_bgu,0);
// //eyeclickdown_Animation(ui_bgd,0);
// delay(50);
// }

void my_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p )
{
    uint32_t w = ( area->x2 - area->x1 + 1 );
    uint32_t h = ( area->y2 - area->y1 + 1 );
    // tft.setSwapBytes(true);
    // tft.pushImageDMA(area->x1, area->y1, w, h,(uint16_t *)&color_p->full);
    tft.startWrite();
    tft.setAddrWindow( area->x1, area->y1, w, h );
    tft.pushColors( ( uint16_t * )&color_p->full, w * h, true );
    tft.endWrite();

    lv_disp_flush_ready( disp );
}

/*Read the touchpad*/
void my_touchpad_read( lv_indev_drv_t * indev_driver, lv_indev_data_t * data )
{
    uint16_t touchX = 0, touchY = 0;

    bool touched = false;//tft.getTouch( &touchX, &touchY, 600 );

    if( !touched )
    {
        data->state = LV_INDEV_STATE_REL;
    }
    else
    {
        data->state = LV_INDEV_STATE_PR;

        /*Set the coordinates*/
        data->point.x = touchX;
        data->point.y = touchY;

        //Serial.print( "Data x " );
        //Serial.println( touchX );

        //Serial.print( "Data y " );
        //Serial.println( touchY );
    }
}

// 设置数据结构体
typedef struct Data_Package {
  byte j1PotX;  //左右摇杆
  byte j1PotY;
  byte j2PotX;
  byte j2PotY;
  bool buttonR1;  //左右按键
  bool buttonR2;
  bool j1Button;  //左右摇杆按键
  bool j2Button;
  bool buttonLB;  //左右扳机按键
  bool buttonRB;
  bool tSwitch1;  //拨动开关   
  byte roll;      //用于M5StackCore2或未来增加的陀螺仪功能
  byte pitch;
  bool buttonR3;
};
Data_Package data; //Create a variable with the above structure

// 数据接收回调函数
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
  memcpy(&data, incomingData, sizeof(data));
  //Serial.printf("x:%d y:%d ",data.j1PotX,data.j1PotY);
  //Serial.print("  ESP32 Board MAC Address:  ");
  //Serial.println(WiFi.macAddress());
  //Serial.println();
}
/**
 * Structure for holding display buffer information.
 */
/
} lv_disp_draw_buf_t;

void setup() {
  Serial.begin(9600);
  Serial.print("  ESP32 Board MAC Address:  ");
  Serial.println(WiFi.macAddress());
  // 初始化 ESP-NOW
  WiFi.mode(WIFI_STA);
  if (esp_now_init() != 0) {
    Serial.println("Error initializing ESP-NOW");
    return;
  }

  // 设置接收数据回调函数
  esp_now_register_recv_cb(OnDataRecv);

  lv_init();

  #if LV_USE_LOG != 0
    lv_log_register_print_cb( my_print ); /* register print function for debugging */
  #endif

    tft.begin();          /* TFT init */
    tft.setRotation( 0 ); /* Landscape orientation, flipped */

    lv_disp_draw_buf_init( &draw_buf, buf, buf2, screenWidth * screenHeight / 10 );

    /*Initialize the display*/
    static lv_disp_drv_t disp_drv;
    lv_disp_drv_init( &disp_drv );
    /*Change the following line to your display resolution*/
    disp_drv.hor_res = screenWidth;
    disp_drv.ver_res = screenHeight;
    disp_drv.flush_cb = my_disp_flush;
    disp_drv.draw_buf = &draw_buf;
    lv_disp_drv_register( &disp_drv );

    /*Initialize the (dummy) input device driver*/
    static lv_indev_drv_t indev_drv;
    lv_indev_drv_init( &indev_drv );
    indev_drv.type = LV_INDEV_TYPE_POINTER;
    indev_drv.read_cb = my_touchpad_read;
    lv_indev_drv_register( &indev_drv );

    
    // analogWrite(2, 102);//2048---10ms 205---1ms 0
    // analogWrite(3, 205);//45 
    // analogWrite(19, 306);//90
    // analogWrite(18, 409);//135
     analogWrite(2, 306);//90
     analogWrite(3, 306);//90
    // analogWrite(19, 306);//90
    // analogWrite(18, 306);//90
     data.j2PotX=127;
     data.j2PotY=127;
     analogWriteResolution(12);
     analogWriteFrequency(50);

    ui_init();
    
}

void loop() {
  lv_timer_handler(); /* let the GUI do its work */
  lv_obj_set_x(ui_changgui, data.j1PotX-127);
  lv_obj_set_y(ui_changgui, data.j1PotY-127);
  lv_obj_set_x(ui_huachi, data.j1PotX-127);
  lv_obj_set_y(ui_huachi, data.j1PotY-127);
  lv_obj_set_y(ui_sm, shangyanpi[eye_n]);
  lv_obj_set_y(ui_xm, -shangyanpi[eye_n]);
  a_degx=map(data.j2PotX,0,255,102,512);
  a_degy=map(data.j2PotY,0,255,102,512);
  analogWrite(2, a_degx);//90
  analogWrite(3, a_degy);//90
  delay(10);
  if(data.buttonLB==0)
  {
    if(eye_n<=17&&eye_n>=0)
    {
      eye_n+=1;
      //Serial.printf("eye_n=%d",eye_n);
      //Serial.println();
      //delay(5);
    }
    else
    {
      eye_n=0;
    }
  }
  // if(data.buttonRB==0)
  // {
  //   //eyeclick_a();
  // }
   if(data.buttonR2==0)
  {
    lv_obj_add_flag(ui_tongren30, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_ADV_HITTEST);
    lv_obj_add_flag(ui_tongren60, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_ADV_HITTEST);
    lv_obj_add_flag(ui_tongren90, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_ADV_HITTEST);
    lv_obj_add_flag(ui_tongren155, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_ADV_HITTEST);
    lv_obj_add_flag(ui_tongren255, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_ADV_HITTEST);
    lv_obj_add_flag(ui_tongren300, LV_OBJ_FLAG_HIDDEN | LV_OBJ_FLAG_ADV_HITTEST);
    switch(tongren_n)
    {
      case 0:
      lv_obj_clear_flag(ui_tongren30, LV_OBJ_FLAG_HIDDEN);break;
      case 1:
      lv_obj_clear_flag(ui_tongren60, LV_OBJ_FLAG_HIDDEN);break;
      case 2:
      lv_obj_clear_flag(ui_tongren90, LV_OBJ_FLAG_HIDDEN);break;
      case 3:
      lv_obj_clear_flag(ui_tongren155, LV_OBJ_FLAG_HIDDEN);break;
      case 4:
      lv_obj_clear_flag(ui_tongren255, LV_OBJ_FLAG_HIDDEN);break;
      case 5:
      lv_obj_clear_flag(ui_tongren300, LV_OBJ_FLAG_HIDDEN);break;
      case 6:
      lv_obj_clear_flag(ui_tongren255, LV_OBJ_FLAG_HIDDEN);break;
      case 7:
      lv_obj_clear_flag(ui_tongren155, LV_OBJ_FLAG_HIDDEN);break;
      case 8:
      lv_obj_clear_flag(ui_tongren90, LV_OBJ_FLAG_HIDDEN);break;
      case 9:
      lv_obj_clear_flag(ui_tongren60, LV_OBJ_FLAG_HIDDEN);break;
    }
    if(tongren_n<=8&&tongren_n>=0)
    {
      tongren_n+=1;
    }
    else
    {
      tongren_n=0;
    }
    delay(10);
    //eyeclick_a();
  }
   if(data.buttonR1==0)
    {
      lv_obj_add_flag(ui_changgui, LV_OBJ_FLAG_HIDDEN);
    lv_obj_add_flag(ui_huachi, LV_OBJ_FLAG_HIDDEN);
    switch(biaoqing_n)
    {
      case 0:
      lv_obj_clear_flag(ui_changgui, LV_OBJ_FLAG_HIDDEN);break;
      case 1:
      lv_obj_clear_flag(ui_huachi, LV_OBJ_FLAG_HIDDEN);break;
    }
    if(biaoqing_n<=0&&biaoqing_n>=0)
    {
      biaoqing_n+=1;
    }
    else
    {
      biaoqing_n=0;
    }
    delay(200);
    }
}
}

看不清

img

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7510960
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:想要对人工智能模型进行评估,不了解评估指标怎么办?
  • 除此之外, 这篇博客: 如何列出目录的所有文件?中的 获取完整的路径名 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 正如您所注意到的,上面的代码中没有文件的完整路径。 如果需要绝对路径,则可以使用os.path模块的另一个函数_getfullpathname ,将从os.listdir()获得的文件作为参数。 还有其他完整路径的方法,稍后我们将进行检查(如mexmex所建议,我将_getfullpathname替换为abspath )。

     import os
     files_path = [os.path.abspath(x) for x in os.listdir()]
     print(files_path)
    
     >>> ['F:\\documenti\applications.txt', 'F:\\documenti\collections.txt']
    
    • 您还可以看一下 褚英昊老师的人工智能必备数学知识课程中的 马尔科夫链的定义小节, 巩固相关知识点
    • 以下回答由chatgpt基于相关博客总结生成:

      在Java中如果不给变量或对象命名类型,是无法定义的。Java是一种强类型语言,每个变量或对象都必须有明确的类型。如果不指定类型,代码是无法通过编译的。因此,不能提供相关代码示例。