프로그램 사용/lvgl2026. 2. 2. 19:50

피그마를 쓰는법 익혀야 하나.. 고민이네

일단은~ lvgl pro용 외에

[링크 : https://www.figma.com/ko-kr/community/plugin/1362005814860504095/figma-to-lvgl]

 

squreline 용 플러그인도 발견

[링크 : https://www.figma.com/ko-kr/community/plugin/1578047295955007191/figma-to-squareline-vision]

 

 

'프로그램 사용 > lvgl' 카테고리의 다른 글

lvgl perf mon  (0) 2026.02.03
ebike demo ui 구조 분석 - 속도 슬라이더 및 텍스트  (0) 2026.02.02
eez studio  (0) 2026.02.02
esp32 lvgl benchmark  (0) 2026.02.02
esp32 lvgl 소스 코드 따라가기  (0) 2026.01.28
Posted by 구차니
프로그램 사용/lvgl2026. 2. 2. 19:50

figma용 lvgl 플러그인 찾다가 발견한 다른 오픈소스 프로그램

[링크 : https://www.envox.eu/studio/studio-introduction/]

[링크 : https://m.blog.naver.com/alfee0/224110418959]

 

그나저나 squareline studio 와는 결별하고 따로 만들었다는데

댓글들 보고 있노라니 lvgl8.x 까지 squareline studio에서 지원하고 9.x대는 안했다 이런 이야기도 있고

불안정하다 별별 이야기가 있는데.. 어찌되려나?

[링크 : https://forum.lvgl.io/t/lvgl-ends-its-collaboration-with-squareline-studio/14638/13?page=4]

'프로그램 사용 > lvgl' 카테고리의 다른 글

ebike demo ui 구조 분석 - 속도 슬라이더 및 텍스트  (0) 2026.02.02
figma lvgl plugin  (0) 2026.02.02
esp32 lvgl benchmark  (0) 2026.02.02
esp32 lvgl 소스 코드 따라가기  (0) 2026.01.28
squartline studio 설치  (0) 2026.01.28
Posted by 구차니
프로그램 사용/lvgl2026. 2. 2. 17:30

새롭게 빌드한걸 어떻게 넣어야 하나 이런거 고민하고 있었는데

그전에 소스를 보다보니 benchmark가 있어서 실행해보려고 꼼지락 꼼지락.

 

5_35_LVGL_Full_Test-S024/components/lv_examples/lv_examples/lv_examples.h

한줄 추가

#define LV_USE_DEMO_BENCHMARK   1

 

5_35_LVGL_Full_Test-S024/main/main.c

두 줄 추가, 두 줄 삭제

// #include "lv_examples/src/lv_demo_widgets/lv_demo_widgets.h"
#include "lv_examples/src/lv_demo_benchmark/lv_demo_benchmark.h"



// lv_demo_widgets();
lv_demo_benchmark();

    while (1) {
vTaskDelay(1);
// 尝试锁定信号量,如果成功,请调用lvgl的东西
if (xSemaphoreTake(xGuiSemaphore, (TickType_t)10) == pdTRUE) {
            lv_task_handler();
            xSemaphoreGive(xGuiSemaphore);  // 释放信号量
        }
    }
    vTaskDelete(NULL);      // 删除任务

 

위에는 50 fps 라는데 아래는 33fps가 나온다. 멀 믿어야 하나 -_-?

'프로그램 사용 > lvgl' 카테고리의 다른 글

figma lvgl plugin  (0) 2026.02.02
eez studio  (0) 2026.02.02
esp32 lvgl 소스 코드 따라가기  (0) 2026.01.28
squartline studio 설치  (0) 2026.01.28
lvgl pro + figma vs square line studio  (0) 2026.01.28
Posted by 구차니
프로그램 사용/gcc2026. 1. 29. 16:38

weak는 약한 애라 강한애가 오면 치환당한다.

tt.c 에는 a()함수가 weak로 존재하고

$ cat tt.c 
#include <stdio.h>

__attribute__((weak)) void a() { printf("a\n"); }

void main()
{
a();
}

 

t2.c에는 weak가 아닌 동일 이름의 함수가 있는데

$ cat t2.c 
#include <stdio.h>

void a() { printf("b\n"); }

 

tt.c를 빌드해서 실행하면 weak 함수가 실행되서 a가 나오고

$ gcc tt.c 
$ ./a.out 
a

 

두개를 한번에 넣어서 빌드하고 실행하면 weak가 밀려나서 링크 시에는 strong이 붙어 b가 나오게 된다.

$ gcc tt.c t2.c 
$ ./a.out 
b

 

 

---

링커에서 처리하는거라 컴파일 단계에서 단일 파일에 있다면 중복 선언으로 에러가 발생하니 반드시 파일을 분리해야 한다.

$ cat tt.c 
#include <stdio.h>

__attribute__((weak)) void a() { printf("a\n"); }
void a() { printf("b\n"); }

void main()
{
a();
}

$ gcc tt.c 
tt.c:4:6: error: redefinition of ‘a’
    4 | void a() { printf("b\n"); }
      |      ^
tt.c:3:28: note: previous definition of ‘a’ with type ‘void()’
    3 | __attribute__((weak)) void a() { printf("a\n"); }
      |                            ^

'프로그램 사용 > gcc' 카테고리의 다른 글

gcc -D 를 이용하여 명령줄에서 define 하기  (0) 2026.03.12
gcc __cplusplus 선언  (0) 2026.02.18
gcc cortex-a9 double형 neon 연산 가속  (3) 2023.08.08
gcc tree vectorize  (0) 2023.01.26
gcc fstack-protector-strong  (0) 2022.12.06
Posted by 구차니
프로그램 사용/ncurses2026. 1. 29. 10:17

창을 찾았으니 이제 문득 예전에 마우스로 막 돌리던거 같은데 싶어서 마우스 이벤트 검색.

 

[링크 : https://widian.tistory.com/58]

[링크 : https://stackoverflow.com/questions/7462850/mouse-movement-events-in-ncurses]

 

#include <curses.h>

typedef unsigned long mmask_t;

typedef struct
{
    short id;         /* ID to distinguish multiple devices */
    int x, y, z;      /* event coordinates */
    mmask_t bstate;   /* button state bits */
}
MEVENT;
bool has_mouse(void);
-int getmouse(MEVENT *event);
int ungetmouse(MEVENT *event);
mmask_t mousemask(mmask_t newmask, mmask_t *oldmask);
bool wenclose(const WINDOW *win, int y, int x);
bool mouse_trafo(int* pY, int* pX, bool to_screen);
bool wmouse_trafo(const WINDOW* win, int* pY, int* pX,
bool to_screen);
int mouseinterval(int erval);

[링크 : https://linux.die.net/man/3/getmouse]

'프로그램 사용 > ncurses' 카테고리의 다른 글

ncurse window 관리 함수  (0) 2026.01.28
ncurse screen size  (0) 2025.09.30
ncurses 상자 및 색상 적용하기  (0) 2024.12.02
ncurses 예제  (0) 2024.11.30
ncurse example  (0) 2022.05.17
Posted by 구차니
프로그램 사용/ncurses2026. 1. 28. 23:07

해보잣!

[링크 : https://magmatart.dev/development/2017/06/02/ncurses1.html]

[링크 : https://magmatart.dev/development/2017/06/05/ncurses2.html]

 

#include <curses.h>
int border(chtype ls, chtype rs, chtype ts, chtype bs, chtype tl, chtype tr, chtype bl, chtype br);
int wborder(WINDOW *win, chtype ls, chtype rs, chtype ts, chtype bs, chtype tl, chtype tr, chtype bl, chtype br);
int box(WINDOW *win, chtype verch, chtype horch);
int hline(chtype ch, int n);
int whline(WINDOW *win, chtype ch, int n);
int vline(chtype ch, int n);
int wvline(WINDOW *win, chtype ch, int n);
int mvhline(int y, int x, chtype ch, int n);
int mvwhline(WINDOW *, int y, int x, chtype ch, int n);
int mvvline(int y, int x, chtype ch, int n);
int mvwvline(WINDOW *, int y, int x, chtype ch, int n);

[링크 : https://linux.die.net/man/3/box]

 

#include <curses.h>

WINDOW *newwin(int nlines, int ncols, int begin_y, int begin_x);
int delwin(WINDOW *win);
int mvwin(WINDOW *win, int y, int x);
WINDOW *subwin(WINDOW *orig, int nlines, int ncols, int begin_y, int begin_x);
WINDOW *derwin(WINDOW *orig, int nlines, int ncols, int begin_y, int begin_x);
int mvderwin(WINDOW *win, int par_y, int par_x);
WINDOW *dupwin(WINDOW *win);
void wsyncup(WINDOW *win);
int syncok(WINDOW *win, bool bf);
void wcursyncup(WINDOW *win);
void wsyncdown(WINDOW *win);

[링크 : https://linux.die.net/man/3/mvwin]

'프로그램 사용 > ncurses' 카테고리의 다른 글

ncurse 마우스 이벤트 처리  (0) 2026.01.29
ncurse screen size  (0) 2025.09.30
ncurses 상자 및 색상 적용하기  (0) 2024.12.02
ncurses 예제  (0) 2024.11.30
ncurse example  (0) 2022.05.17
Posted by 구차니
프로그램 사용/lvgl2026. 1. 28. 23:00

저기를 새로 만든걸로 갈아치우면 되려나?

 

main.c
#include "lv_examples/src/lv_demo_widgets/lv_demo_widgets.h"

void app_main() {
printf("\r\nAPP %s is start!~\r\n", TAG);
vTaskDelay(1000 / portTICK_PERIOD_MS);
xTaskCreatePinnedToCore(guiTask, "gui", 4096*2, NULL, 0, NULL, 1);
}

void guiTask(void *pvParameter) {
lv_demo_widgets();

    while (1) {
vTaskDelay(1);
if (xSemaphoreTake(xGuiSemaphore, (TickType_t)10) == pdTRUE) {
            lv_task_handler();
            xSemaphoreGive(xGuiSemaphore);
        }
    }
    vTaskDelete(NULL);
}

 

lv_demo_widgets.h
void lv_demo_widgets(void);

 

lv_demo_widgets.c
void lv_demo_widgets(void){
    tv = lv_tabview_create(lv_scr_act(), NULL);

    t1 = lv_tabview_add_tab(tv, "Controls");
    t2 = lv_tabview_add_tab(tv, "Visuals");
    t3 = lv_tabview_add_tab(tv, "Selectors");

    // ...
}

 

옆에 있는(?) lv_demo_stress 를 보는데

Stress demo
Overview
A stress test for LVGL. It contains a lot of object creation, deletion, animations, styles usage, and so on. It can be used if there is any memory curruption during heavy usage or any memory leaks.

Printer demo with LVGL embedded GUI library

Run the demo
In lv_ex_conf.h set LV_USE_DEMO_STRESS 1
In lv_conf.h enable all the widgets (LV_USE_BTN 1) and the animations (LV_USE_ANIMATION 1)
After lv_init() and initializing the drivers call lv_demo_stress()

 

5_35_LVGL_Full_Test-S024\components\lv_examples\lv_examples\lv_ex_conf_templ.h

파일에 먼가 설정이 있는데 한번 stress 활성화 시켜서 봐야겠다.

/**
 * @file lv_ex_conf.h
 *
 */
/*
 * COPY THIS FILE AS lv_ex_conf.h
 */

#if 0 /*Set it to "1" to enable the content*/

#ifndef LV_EX_CONF_H
#define LV_EX_CONF_H


/*******************
 * GENERAL SETTING
 *******************/
#define LV_EX_PRINTF       0       /*Enable printf-ing data in demoes and examples*/
#define LV_EX_KEYBOARD     0       /*Add PC keyboard support to some examples (`lv_drivers` repository is required)*/
#define LV_EX_MOUSEWHEEL   0       /*Add 'encoder' (mouse wheel) support to some examples (`lv_drivers` repository is required)*/

/*********************
 * DEMO USAGE
 *********************/

/*Show some widget*/
#define LV_USE_DEMO_WIDGETS        0
#if LV_USE_DEMO_WIDGETS
#define LV_DEMO_WIDGETS_SLIDESHOW  0
#endif

/*Printer demo, optimized for 800x480*/
#define LV_USE_DEMO_PRINTER     0

/*Demonstrate the usage of encoder and keyboard*/
#define LV_USE_DEMO_KEYPAD_AND_ENCODER     0

/*Benchmark your system*/
#define LV_USE_DEMO_BENCHMARK   0

/*Stress test for LVGL*/
#define LV_USE_DEMO_STRESS      0

#endif /*LV_EX_CONF_H*/

#endif /*End of "Content enable"*/

'프로그램 사용 > lvgl' 카테고리의 다른 글

eez studio  (0) 2026.02.02
esp32 lvgl benchmark  (0) 2026.02.02
squartline studio 설치  (0) 2026.01.28
lvgl pro + figma vs square line studio  (0) 2026.01.28
freertos on esp32 lvgl 예제 분석  (0) 2026.01.26
Posted by 구차니
프로그램 사용/lvgl2026. 1. 28. 21:58

어제 일찍 안자고 뻘짓했는데 -_-

아무튼 오늘은 어제 못해본 squareline studio 시도!

[링크 : https://squareline.io/downloads#lastRelease]

 

오 깔끔해!

 

오!! 편하게 끝났어!!

 

가입없이 30일 쓸 수 있어서 합격!

 

나름 디자인이 깔끔하고 센스있네

드러운(?) 다이얼로그에서 EULA 창을 안여니 합격!

 

가장보고 싶었던 ebike demo!

그런데 해상도가 480x272 혹은 800x480 으로 만 선택이 가능하다.

처음부터 해상도 정해서 해야 하는거라면.. 320x240에 맞춰서 변형하던가 새로 만들어야 겠군..

 

오오오오!

 

두 개 페이지고 메뉴 선택하면 우측 창이 열리는 구조인가 두개가 보인다.

 

왜 저기있는지 모르겠지만.. 우측의history 옆에 inspecto? 버튼에 올려진

재생 버튼을 누르면 ui를 테스트 해볼수 있다.

 

속도계를 어떻게 그렸나 궁금했었던 지라 분석 모드로 전환!

해당 엘리먼트(?)를 클릭하면 Slider Speed라는 이름으로 나온다.

 

slider_speed로 검색해보니 옆에 값들이 먼가 보이는 느낌?


void ui_Home_screen_init(void) 함수에 위의 객체가 그려지고 있는것 같고


void ui_init(void) 에서 해당 화면을 초기화 한다. 그리고 ui_init은 호출되는게 없는걸 보니 이게 최상위 진입 경로인 듯.

 

+

2026.02.02

홈페이지 하단에 보니 LVGL과 squareline은 분리되었고, 공식 제휴가 없는 독립적인 회사이다. 라고 명시해둠.

[링크 : https://squareline.io/]

'프로그램 사용 > lvgl' 카테고리의 다른 글

esp32 lvgl benchmark  (0) 2026.02.02
esp32 lvgl 소스 코드 따라가기  (0) 2026.01.28
lvgl pro + figma vs square line studio  (0) 2026.01.28
freertos on esp32 lvgl 예제 분석  (0) 2026.01.26
lvgl pro on win10 실패  (0) 2026.01.22
Posted by 구차니

modbus 읽기 명령에 따른 주소번지

표준인지 아니면 사실상 표준인지 모르겠지만 많이들 언급하니까 머..

그런데 예를 들어 read input reg 30001~40000 의 경우

10진수 값이고 30000을 뺴고 1~10000 번 에 펑션코드를 섞는거 같은데

내부 코드 상으로 0부터 인지 아니면 30000 부터 받는건지 모르겠어서 헷갈리네..

 

 

[링크 : https://machinejw.tistory.com/25]

 

[링크 : https://seung-seop.tistory.com/4]

'프로그램 사용 > libmodbus' 카테고리의 다른 글

mbpoll  (0) 2025.08.06
libmodbus backend  (0) 2025.03.13
libmodbus pi 함수들  (0) 2022.05.10
libmodbus modbus_mapping_new()  (0) 2022.05.10
libmodbus poll 적용  (0) 2022.05.04
Posted by 구차니
프로그램 사용/lvgl2026. 1. 28. 11:10

좀 더 다뤄봐야겠지만..

lvgl pro는 독립으로 쓰긴 힘들고(xml로 html 코딩하듯 가능하다면 가능할지도..)

figma 에서 figma to LVGL 플러그인을 통해서 저렇게 내보내는 걸 보면..

개발자가 디자인 툴을 익히는 불상사가 생길 느낌인데

[링크 : https://docs.lvgl.io/master/xml/tools/figma.html]

 

아무튼, figma 에서 디자인한 걸 받아서 변환해 준다고 하면 두 개 가격이 드는건데, 년 단위로 비용은

starter 1000 + 192(16 * 12)

business 3000 + 192(16 * 12)

[링크 : https://pro.lvgl.io/pricing]

 

[링크 : https://www.figma.com/ko-kr/pricing/]

 

small 비지니스라면 약 800$. 

business도 2200$

[링크 : https://squareline.io/pricing/licenses#licenseTable]

'프로그램 사용 > lvgl' 카테고리의 다른 글

esp32 lvgl 소스 코드 따라가기  (0) 2026.01.28
squartline studio 설치  (0) 2026.01.28
freertos on esp32 lvgl 예제 분석  (0) 2026.01.26
lvgl pro on win10 실패  (0) 2026.01.22
lvgl pro, square line studio  (0) 2026.01.09
Posted by 구차니