diff --git a/examples/ex06_Image/guy_image.h b/examples/ex06_Image/guy_image.h index 2da55d3..64a2fd6 100644 --- a/examples/ex06_Image/guy_image.h +++ b/examples/ex06_Image/guy_image.h @@ -41,21 +41,21 @@ class readguyImage{ public: - readguyImage(ReadguyDriver &_guy):guy(&_guy){} - + readguyImage(ReadguyDriver &_guy):guy(&_guy){ + w=guy->width(); h=guy->height(); + } /** @brief 显示图像. use16grey: 为true则使用16灰度,false则不用 - * @note 需要提前设置绘制参数, 直接在类的外部 设置此类的成员函数即可. - * 对于不会C++的朋友们, 可以看示例. + * @note 需要提前设置绘制参数, 直接在类的外部 设置此类的成员函数即可. 对于不会C++的朋友们, 可以看示例. + * 注意该函数会调用 guy.display 来刷屏, 因此 * @param baseFs, filename 文件系统和文件名. 必须指定. * @param x, y 显示在屏幕的什么地方 - * - * @param use16grey 0: 使用单色抖动 1:使用16灰度 2:使用16灰度但不抖动 + * @param use16grey 0: 使用单色抖动 1:使用16灰度 (如果要开关抖动则需要用setGreyQuality设置) * */ void drawImageFile(bool use16grey = 0); /** @brief 将图像绘制到系统缓存内. 必须预分配内存, 并且需要知道分配的大小. - * @note 需要提前设置绘制参数, 直接在类的外部 设置此类的成员函数即可. - * 对于不会C++的朋友们, 可以看示例. + * @note 需要提前设置绘制参数, 直接在类的外部 设置此类的成员函数即可. 对于不会C++的朋友们, 可以看示例. + * 注意该函数会调用 guy.display 来刷屏 * @param baseFs, filename 文件系统和文件名. 必须指定. * @param x, y 显示在屏幕缓存的什么地方 * @param w, h 开辟的缓存宽度和高度. 最好是和图片的大小相匹配. diff --git a/src/guy_epaper/lcdDebug/lcdDebug.cpp b/src/guy_epaper/lcdDebug/lcdDebug.cpp index f9273cc..0d2fa84 100644 --- a/src/guy_epaper/lcdDebug/lcdDebug.cpp +++ b/src/guy_epaper/lcdDebug/lcdDebug.cpp @@ -81,7 +81,9 @@ void drv::drv_dispWriter(std::function f,uint8_t m){ //单色刷 } } } + yield(); } + delay(50); } void drv::drv_sleep() {} } diff --git a/src/guy_wireless.cpp b/src/guy_wireless.cpp index e677d1d..8e755d8 100644 --- a/src/guy_wireless.cpp +++ b/src/guy_wireless.cpp @@ -177,14 +177,17 @@ const char *ReadguyDriver::epd_drivers_list[EPD_DRIVERS_NUM_MAX]={ //x==62 -> _ //#define R2CHAR(x) (((x)==63)?42:(((x)==62)?95:(((x)>=36)?((x)+61):(((x)>=10)?((x)+55):((x)+48))))) void ReadguyDriver::ap_setup(){ + return ap_setup("readguy","12345678"); +} +void ReadguyDriver::ap_setup(const char *ssid, const char *pass, int m){ //初始化WiFi AP模式, 用于将来的连接WiFi 处于已连接状态下会断开原本的连接 - WiFi.mode(WIFI_AP); + if(m>=0 && m<=3) WiFi.mode((WiFiMode_t)m); //有时候还需要STA+AP或者是一开始就确定好了wifi模式 IPAddress local_IP(192,168,4,1); IPAddress gateway(192,168,4,1); IPAddress subnet(255,255,255,0); WiFi.softAPConfig(local_IP, gateway, subnet); - WiFi.softAP("readguy","12345678"); - Serial.println(F("[Guy AP] ap_setup SSID: readguy, Pass: 12345678")); + WiFi.softAP(ssid,pass); + Serial.printf_P(PSTR("[Guy AP] ap_setup SSID: %s, Pass: %s\n"),ssid,pass); } void ReadguyDriver::server_setup(const String ¬ify, const serveFunc *serveFuncs, int funcs){ //启动WiFi服务器端, 这样就可以进行配网工作 diff --git a/src/readguy.h b/src/readguy.h index 7760ffe..b435757 100644 --- a/src/readguy.h +++ b/src/readguy.h @@ -163,6 +163,16 @@ #define READGUY_SLOW_END 4 #define READGUY_FAST_END 5 + //按键行为 下一个 上一个 确定 返回/退出 特殊操作(如切换输入法) + //1个按键 返回 1=点按 2=双击 4=长按 8=三击 3=点按后接长按 + //2个按键 返回 1=左键点按 2=左键长按 4=右键点按 8=右键长按 3=按住左键点按右键 + //3个按键 返回 1=右键点按 2=左键点按 4=中键点按 8=中键长按 3=中间按键双击(需手动开启) +#define GUY_BTN_PREV 1 //上一个 +#define GUY_BTN_NEXT 2 //下一个 +#define GUY_BTN_SPECIAL 3 //确定 选择 +#define GUY_BTN_OK 4 //返回/退出 +#define GUY_BTN_BACK 8 //特殊操作(如切换输入法) + class ReadguyDriver: public LGFX_Sprite{ // readguy 基础类 public: #ifdef READGUY_ESP_ENABLE_WIFI @@ -247,6 +257,11 @@ class ReadguyDriver: public LGFX_Sprite{ // readguy 基础类 } serveFunc; /// @brief 初始化WiFi AP模式, 用于将来的连接WiFi 处于已连接状态下会断开原本的连接 void ap_setup(); + /*** @brief 初始化WiFi AP模式, 用于将来的连接WiFi 可以自定义模式切换的函数 + * @param ssid 设置ap的名称 + * @param pass 设置ap的密码 + * @param m WiFi模式 */ + void ap_setup(const char *ssid, const char *pass, int m=(int)WIFI_AP); /// @brief 初始化WiFi AP模式, 用于将来的连接WiFi 处于已连接状态下会断开原本的连接 void server_setup(const String ¬ify=emptyString, const serveFunc *serveFuncs = nullptr, int funcs = 0); bool server_loop(); @@ -260,6 +275,7 @@ class ReadguyDriver: public LGFX_Sprite{ // readguy 基础类 } serveFunc; /// @brief 初始化WiFi AP模式, 用于将来的连接WiFi 处于已连接状态下会断开原本的连接 void ap_setup(){} + void ap_setup(const char *ssid, const char *pass, int m=2){} /// @brief 初始化服务器模式, 用于将来的连接WiFi 处于已连接状态下会断开原本的连接 void server_setup(const String ¬ify=emptyString, const serveFunc *serveFuncs = nullptr, int funcs = 0){} bool server_loop(){ return true; }