1.選取 KEYBOARD WIDGE,並在Flags 中將 Hidden 打勾
增加 TextArea 的 EVENT,Action為MODIFY FLAG,Trigger 為READY
3. 當點選別的物件時隱藏鍵盤
增加 TextArea 的 EVENT,Action為MODIFY FLAG,Trigger 為DEFOCUSED
/* 自定義代碼塊樣式 */
1.選取 KEYBOARD WIDGE,並在Flags 中將 Hidden 打勾
增加 TextArea 的 EVENT,Action為MODIFY FLAG,Trigger 為READY
增加 TextArea 的 EVENT,Action為MODIFY FLAG,Trigger 為DEFOCUSED
1. 配置版面範例,有兩個 TextArea 輸入欄位及一個Keyboard
2. 點擊TextArea,並在右下方EVENTS按下 ADD EVENT class Arduino_DataBus
{
public:
Arduino_DataBus();
virtual void read(uint8_t cmd, uint8_t addr, uint8_t *data, uint8_t len) = 0;
2. 在 Arduino_ESP32SPI.h 中增加 void read 宣告
class Arduino_ESP32SPI : public Arduino_DataBus
{
public:
void read(uint8_t cmd, uint8_t addr, uint8_t *data, uint8_t len);
3. 在 Arduino_ESP32QSPI.h 中增加 void read 宣告
class Arduino_ESP32QSPI : public Arduino_DataBus
{
public:
void read(uint8_t cmd, uint8_t addr, uint8_t *data, uint8_t len) override;;
4. 在 Arduino_ESP32QSPI.c 中增加 void Arduino_ESP32QSPI::read 作法
void Arduino_ESP32QSPI::read(uint8_t cmd, uint8_t addr, uint8_t *data, uint8_t len)
{
CS_LOW();
spi_transaction_ext_t trans = {};
trans.base.flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR | SPI_TRANS_MODE_QIO;
trans.base.cmd = cmd;
trans.base.addr = addr;
trans.base.rxlength = len * 8;
trans.base.rx_buffer = data;
trans.command_bits = 8;
trans.address_bits = 8;
trans.dummy_bits = 8;
spi_device_polling_transmit(_handle, (spi_transaction_t *)&trans);
CS_HIGH();
}
# Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x5000, otadata, data, ota, 0xe000, 0x2000, app0, app, ota_0, 0x10000, 0x140000, font_hs20,data, , 0x150000,0x2250ac, spiffs, data, spiffs, 0x3C0000,0x30000, coredump, data, coredump,0x3F0000,0x10000,
#include "lvgl/lvgl.h"修改後
#include "../../lvgl.h"
#include <esp_partition.h> #include <esp_err.h> #include <esp_log.h> #include <nvs_flash.h> static const char *TAG = "lv_font_harmony_sans_20";
lv_port_font_harmony_sans_20_load(const char *partition_label)
{
const esp_partition_t *partition = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, partition_label);
if(partition == NULL) {
ESP_LOGE(TAG, "Can't find %s partition!", partition_label);
abort();
}
ESP_LOGE(TAG, "Find %s partition!", partition_label);
const void *flash_offset;
esp_partition_mmap_handle_t map_handle;
// Map the partition to data memory
ESP_ERROR_CHECK(esp_partition_mmap(partition, 0, partition->size, ESP_PARTITION_MMAP_DATA, &flash_offset, &map_handle));
ESP_LOGE(TAG, "Mapped partition to data memory address %p\n", flash_offset);
ESP_LOGE(TAG, "mapped %s@%1p", partition->label, flash_offset);
font_dsc.glyph_bitmap = flash_offset;
font_dsc.glyph_dsc = flash_offset+0x1d26dc; //2bpp
}
extern const lv_font_t font_harmony_sans_20; void lv_port_font_harmony_sans_20_load(const char *partition_label);增加一個 rodata_gen_bin.ld 腳本檔案,確保 .rodata是從0x00的位置開始
SECTIONS {
. = 0x0;
.text : {
*(.rodata)
} = 0
}
C:\Users\yyli\AppData\Local\Arduino15\packages\esp32\tools\esp-x32\2405\bin\xtensa-esp32-elf-gcc -c -D LV_CONF_SKIP -D LV_FONT_FMT_TXT_LARGE -I d:\Users\yyli\Documents\Arduino\\libraries\lvgl font_harmony_sans_20_font.c
C:\Users\yyli\AppData\Local\Arduino15\packages\esp32\tools\esp-x32\2405\bin\xtensa-esp32-elf-ld -T rodata_gen_bin.ld .\font_harmony_sans_20_font.o -o font_harmony_sans_20_font.out
C:\Users\yyli\AppData\Local\Arduino15\packages\esp32\tools\esp-x32\2405\bin\xtensa-esp32-elf-objcopy --output-target elf-xtensa-le -O binary -S font_harmony_sans_20_font.out font_harmony_sans_20_font.bin
C:\Users\yyli\AppData\Local\Arduino15\packages\esp32\tools\esp-x32\2405\bin\xtensa-esp32-elf-objdump -t font_harmony_sans_20_font.out
font_harmony_sans_20_font.out: file format elf32-xtensa-le SYMBOL TABLE: 00000000 l d .text 00000000 .text 00000000 l d .comment 00000000 .comment 00000000 l d .xtensa.info 00000000 .xtensa.info 00000000 l d .xt.prop 00000000 .xt.prop 00000000 l df *ABS* 00000000 font_harmony_sans_20_font.c 00000000 l O .text 001d26db glyph_bitmap 001d26dc l O .text 000529d0 glyph_dsc使用樂鑫官方的Flash downliad tool將font_harmony_sans_20_font.bin燒錄到 Font Flash 定義的為止即可,(定義Arduino flash partition) 上面產生的 font_harmony_sans_20_font.bin 在flash要預留glyph_bitmap + glyph_dsc 的大小,所以在partition.csv中定義 bin起始位址 0x150000,size為 0x2250ac 到此完成把字體bin燒錄到flash,在程式中要用到中文字時先呼叫 lv_port_font_harmony_sans_20_load("font_hs20"); 函數就能夠使用中文字了
lv_init();
lv_display_t * disp;
/*TFT_eSPI can be enabled lv_conf.h to initialize the display in a simple way*/
disp = lv_tft_espi_create(TFT_HOR_RES, TFT_VER_RES, draw_buf, sizeof(draw_buf));
lv_display_set_rotation(disp, TFT_ROTATION);
/* Create simple label */
lv_obj_t *label = lv_label_create(lv_screen_active());
lv_port_font_harmony_sans_20_load("font_hs20");
lv_obj_set_style_text_font(label, &font_harmony_sans_20, 0);
lv_label_set_text(label, "Hello Arduino! (V9.0) 中文版");
lv_obj_align(label, LV_ALIGN_CENTER, 0, -50);
#更新系統軟體
sudo apt update && sudo apt upgrade -y
#安裝資料庫
sudo apt install postgresql -y
#安裝py程序
sudo apt install python3-pip -y
#安裝odoo PDF工具
# for 32bit
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.raspberrypi.bullseye_armhf.deb
sudo apt install ./wkhtmltox_0.12.6.1-2.raspberrypi.bullseye_armhf.deb -y
# for 64bit
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.bullseye_arm64.deb
sudo apt install ./wkhtmltox_0.12.6.1-2.bullseye_arm64.deb -y
#安裝PDF工具中文字形
sudo apt install fonts-wqy-microhei ttf-wqy-microhei fonts-wqy-zenhei ttf-wqy-zenhei -y
#清理快取
fc-cache -f -v
# check Odoo service is running
sudo systemctl status odoo
一個小型桌上型的電源是很久前就想做的,但想了很久還是沒動手做
但,現在只要接幾條線,就可以完成了,先看成品吧
輸出 5V的時候,跟旁邊的硬幣比,就知道大小了
這是用兩個模組拼接起來的,一個是AC轉DC12V2A的電壓轉換模組
1.選取 KEYBOARD WIDGE,並在Flags 中將 Hidden 打勾 2. 當按下鍵盤的確認鍵( ✓ )就設定隱藏鍵盤 增加 TextArea 的 EVENT,Action為MODIFY FLAG,Trigger 為READY 3. 當點選別的物件時隱藏鍵盤...