【杂记 OLED 】

提示:文档


前言

提示::

例如:


提示:以下是本篇文章正文内容,下面案例可供参考

图片: 在这里插入图片描述这段

代码是一个简单的图形用户界面(GUI)刷新函数,用于根据按键操作更新界面。下面是对代码的逐行解释:

  1. void GUI_Refresh(void): 定义一个名为GUI_Refresh的函数,该函数没有参数,也没有返回值。
  2. {: 开始定义函数体。
  3. u8 key_val=Get_KEY_Value();: 调用Get_KEY_Value函数来获取按键的值,并将其存储在变量key_val中。
  4. if(key_val!=0): 检查key_val是否不等于0,即检查是否有按键被按下。
  5. {: 开始if语句的代码块。
  6. last_index=func_index;: 将last_index设置为当前的func_index,以保存上一个界面的索引。
  7. switch(key_val): 根据key_val的值执行不同的操作。
    8-15. case KEY_XXX: func_index=table[func_index].XXX; break;: 根据不同的按键值(如KEY_PREVIOUS, KEY_ENTER, KEY_NEXT, KEY_BACK),更新func_index的值。
  8. if(BEEP_swi==ON): 检查是否打开蜂鸣器。
  9. {: 开始if语句的代码块。
  10. BEEP=1;: 打开蜂鸣器。
  11. Delay_Ms(50);: 延迟50毫秒。
  12. BEEP=0;: 关闭蜂鸣器。
  13. }: 结束if语句的代码块。
  14. OLED_Clear(0);: 清除OLED屏幕的内容。
  15. }: 结束if语句的代码块。
  16. current_operation_func=table[func_index].current_operation;: 将current_operation_func设置为当前界面索引对应的操作函数。
  17. (*current_operation_func)(func_index,key_val);: 调用当前操作函数,并传递func_indexkey_val作为参数。
  18. }: 结束函数体。

总体来说,这个函数首先检查是否有按键被按下,并根据按键的值更新界面索引。然后,它会根据当前界面索引执行相应的操作函数,并传递当前的界面索引和按键值作为参数。如果启用了蜂鸣器,则在更新界面时发出短暂的蜂鸣声。
在这里插入图片描述
这段代码是一个C语言函数,用于在OLED屏幕上显示一个主界面。以下是该函数的详细解释:

  1. 函数定义:

    • 函数名:Main_UI
    • 参数:u8 page_indexu8 key_val
    • 返回值:无
  2. 函数功能:
    该函数用于在OLED屏幕上显示主界面。

  3. 代码详解:

    • char buff[20];:定义一个字符数组buff,用于存储格式化后的日期和时间字符串。
    • OLED_Display_Image(0,0,11,7,(char*)Signal_11x7,NO_ALGIN);:在OLED屏幕的指定位置(0,0)显示一个名为Signal_11x7的图像,尺寸为11x7。这里假设Signal_11x7是一个预定义的图像资源。
    • OLED_Display_Image(14,0,9,9,(char*)Bluetooth_9x9,NO_ALGIN);:在OLED屏幕的指定位置(14,0)显示一个名为Bluetooth_9x9的图像,尺寸为9x9。这里假设Bluetooth_9x9是一个预定义的图像资源。
    • snprintf(buff,sizeof(buff),"%02d-%02d-%02d",Current_Time.year%100,Current_Time.month,Current_Time.day);:使用snprintf函数将当前日期格式化为“MM-DD-YY”的形式,并存储在buff中。
    • OLED_Display_String(0,1,8,8,buff,NORMAL,CEN_ALIGN);:在OLED屏幕的指定位置(0,1)显示格式化后的日期字符串。
    • snprintf(buff,sizeof(buff),"%02d:%02d",Current_Time.hour,Current_Time.min);:使用snprintf函数将当前时间格式化为“HH:MM”的形式,并存储在buff中。
    • OLED_Display_String(0,2,16,32,buff,NORMAL,CEN_ALIGN);:在OLED屏幕的指定位置(0,2)显示格式化后的时间字符串。
    • OLED_Display_Image(112,0,16,8,(char*)Bat_16x8,NO_ALGIN);:在OLED屏幕的指定位置(112,0)显示一个名为Bat_16x8的图像,尺寸为16x8。这里假设Bat_16x8是一个预定义的图像资源,代表电池电量。
    • OLED_Display_Chinese(...):这部分代码用于在OLED屏幕上显示中文字符。例如,“星”、“期”和“一~七”分别代表星期一到星期日。
    • OLED_Display_Image(0,6,16,16,(char*)Menu_16x16,NO_ALGIN);:在OLED屏幕的指定位置(0,6)显示一个名为Menu_16x16的图像,尺寸为16x16。这里假设Menu_16x16是一个预定义的图像资源,代表菜单。
    • OLED_Display_Image(112,6,16,16,(char*)Lock_16x16,NO_ALGIN);:在OLED屏幕的指定位置(112,6)显示一个名为Lock_16x16的图像,尺寸为16x16。这里假设Lock_16x16是一个预定义的图像资源,代表锁屏。
  4. 总结:
    这个函数主要用于在OLED屏幕上显示一个主界面,其中包括信号强度、蓝牙状态、日期、时间、电池电量、菜单和锁屏等元素。每个元素都是通过调用特定的显示函数来显示的,这些函数可能是自定义的或从外部库中引入的。
    在这里插入图片描述
    这段代码是一个C语言函数,用于在OLED屏幕上显示一个主菜单。以下是该函数的详细解释:

函数功能:
主菜单显示函数,用于在OLED屏幕上显示主菜单的界面。

参数:

  • u8 page_index: 页面索引,用于决定要显示哪个页面或功能的图标。
  • u8 key_val: 按键值,但在此函数中未使用。

返回值: 无。

代码详解:

  1. 显示信号塔、蓝牙、时间和电量:
    这部分代码与Main_UI函数类似,用于在OLED屏幕上显示信号塔、蓝牙、时间和电量。
  2. 显示左、右箭头和确定、返回箭头:
    这部分代码用于在OLED屏幕上显示左箭头、右箭头、确定和返回箭头。
  3. 根据page_index决定显示哪个图标的部分:
    这部分代码使用switch语句根据page_index的值来决定在屏幕的指定位置显示哪个图标。例如,当page_index_Wifi_Option时,会在屏幕的指定位置显示Wifi图标;当page_index_Bluetooth_Option时,会显示蓝牙图标,以此类推。

总的来说,这个函数主要用于在OLED屏幕上显示一个主菜单界面,根据不同的页面索引显示不同的功能图标。

在这里插入图片描述
这段代码是一个Wifi选项子菜单的函数,用于在OLED屏幕上显示Wifi的配置选项。以下是该函数的详细解释:

函数功能:
Wifi选项子菜单函数,用于在OLED屏幕上显示Wifi的配置选项,并允许用户通过按键进行选择和更改。

参数:

  • u8 page_index: 页面索引,用于判断是否是第一次进入此界面。
  • u8 key_val: 按键值,用于决定用户的操作。

返回值: 无。

代码详解:

  1. 变量定义:
    定义了一些静态变量,用于保存Wifi的状态、模式、TCP服务器状态和MQTT模式。

  2. 判断是否是第一次进入此界面:
    如果last_index不等于_Wifi_Option,则进入此判断。如果是第一次进入此界面,则将cur_pos设置为1;否则,根据key_val的值进行相应的操作。

  3. 按键处理:
    根据不同的按键值,执行不同的操作。例如,按下“上”键(KEY_PREVIOUS)时,如果当前位置是1,则将cur_pos设置为6;否则,将cur_pos减1。按下“下”键(KEY_NEXT)时,如果当前位置是6,则将cur_pos设置为1;否则,将cur_pos加1。按下“确定”键(KEY_ENTER)时,根据当前位置执行相应的操作,如开关Wifi、切换Wifi模式、开启或关闭TCP服务器、开启或关闭MQTT模式等。

  4. 显示配置选项:
    如果当前位置小于或等于4,则在OLED屏幕上显示相应的Wifi配置选项。例如,“1.Switch:ON/OFF”、“2.Mode:AP+STA/AP/STA”、“3.TCP server:ON/OFF”和“4.Mqtt mode:ON/OFF”。这些选项的显示内容会根据实际配置进行反转(使用REVERSE标志)。

  5. 未完成部分:
    代码在最后一部分被截断,所以无法确定后续的操作或功能。从已有的代码看,似乎原意是继续显示其他配置选项或进行其他操作。
    未完成部分 续

  6. 总的来说,这个函数用于在OLED屏幕上显示Wifi的配置选项子菜单,并允许用户通过按键进行选择和更改。但代码中存在一些不完整或未完成的部分。
    这段代码是OLED屏幕显示字符串的函数调用,用于在OLED屏幕上显示Wifi的配置选项。以下是该段代码的详细解释:

  7. OLED_Display_String(0,4,8,16,esp_tcpserver?"3.TCP server:ON":"3.TCP server:OFF",cur_pos==3?REVERSE:NORMAL,NO_ALGIN);

    • 这一行代码在OLED屏幕的(0,4)位置显示一个字符串。
    • 字符串的内容根据esp_tcpserver的值决定,如果esp_tcpserver为真,则显示"3.TCP server:ON",否则显示"3.TCP server:OFF"。
    • 字符串的显示方式由cur_pos==3?REVERSE:NORMAL决定,如果cur_pos等于3,则使用反转方式显示(可能是为了强调当前选中项)。
  8. OLED_Display_String(0,6,8,16,esp_unvarnishedmode?"4.Mqtt mode:ON":"4.Mqtt mode:OFF",cur_pos==4?REVERSE:NORMAL,NO_ALGIN);

    • 这一行代码在OLED屏幕的(0,6)位置显示一个字符串。
    • 字符串的内容根据esp_unvarnishedmode的值决定,如果esp_unvarnishedmode为真,则显示"4.Mqtt mode:ON",否则显示"4.Mqtt mode:OFF"。
    • 字符串的显示方式由cur_pos==4?REVERSE:NORMAL决定,如果cur_pos等于4,则使用反转方式显示。
  9. else if(cur_pos<=8)

    • 这是一个条件判断,只有当cur_pos小于或等于8时,下面的代码块才会执行。
  10. OLED_Display_String(0,0,8,16,"5.RSSI:",cur_pos==5?REVERSE:NORMAL,NO_ALGIN);

    • 在OLED屏幕的(0,0)位置显示一个字符串"5.RSSI:"。
    • 如果cur_pos等于5,则使用反转方式显示。
  11. OLED_Display_String(0,2,8,16,"6.Esp touch",cur_pos==6?REVERSE:NORMAL,NO_ALGIN);

    • 在OLED屏幕的(0,2)位置显示一个字符串"6.Esp touch"。
    • 如果cur_pos等于6,则使用反转方式显示。

总结:这段代码用于在OLED屏幕上显示Wifi的配置选项,包括开关状态、模式、TCP服务器状态和MQTT模式等。当用户通过按键进行选择时,相应的选项会被高亮显示。

在这里插入图片描述
这段代码是一个蓝牙选项子菜单的函数,用于在OLED屏幕上显示蓝牙的配置选项。以下是该函数的详细解释:

函数功能:
蓝牙选项子菜单函数,用于在OLED屏幕上显示蓝牙的配置选项,并允许用户通过按键进行选择和更改。

参数:

  • u8 page_index: 页面索引,用于判断是否是第一次进入此界面。
  • u8 key_val: 按键值,用于决定用户的操作。

返回值: 无。

代码详解:

  1. 变量定义:
    定义了一些静态变量,用于保存蓝牙的状态。
  2. 判断是否是第一次进入此界面:
    如果last_index不等于_Bluetooth_Option,则进入此判断。如果是第一次进入此界面,则将cur_pos设置为1;否则,根据key_val的值进行相应的操作。
  3. 按键处理:
    根据不同的按键值,执行不同的操作。例如,按下“上”键(KEY_PREVIOUS)时,如果当前位置是1,则将cur_pos设置为4;否则,将cur_pos减1。按下“下”键(KEY_NEXT)时,如果当前位置是4,则将cur_pos设置为1;否则,将cur_pos加1。按下“确定”键(KEY_ENTER)时,根据当前位置执行相应的操作,如开关蓝牙等。
  4. 显示配置选项:
    在OLED屏幕上显示相应的蓝牙配置选项。例如,“1.Switch:ON/OFF”、“2.Addr match”、“3.RSSI:”和“4.Mode set”。这些选项的显示内容会根据实际配置和当前位置进行反转(使用REVERSE标志)。

需要注意的是,这个函数中缺少了一些具体的内容和功能实现,例如蓝牙状态的切换、地址匹配、RSSI显示和模式设置等。这些可能需要进一步的代码来完成。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值