touchGFX snprintf 사용하기

엠칩 2024. 12. 18. 12:26
반응형

Unicode::UnicodeChar 버퍼를 사용하여 char 배열을 변환해야 합니다.
Unicode::strncpy() 함수를 사용하여 char 배열을 Unicode::UnicodeChar 버퍼로 복사합니다.
변환된 Unicode 버퍼를 Unicode::snprintf()에 전달합니다.
다음은 이 문제를 해결하는 코드 예시입니다:


Unicode::UnicodeChar buffer[20];
const char str[] = "test";
Unicode::strncpy(buffer, str, 20);
Unicode::snprintf(textAreaItemBuffer, 20, "%s", buffer);

const char* runStopMessages[] = {
    "Running",
    "STOP",
    "DELAY",
    "PAUSE"
};

sprintf 사용할때처럼 사용하면 안되는 경우가 많이 발생한다.
Unicode::snprintf(txt_RunStopBuffer, TXT_RUNSTOP_SIZE, "%s", runStopMessages[rundotcnt]); // 안됨.

방법1
char tempBuffer[TXT_RUNSTOP_SIZE];
strncpy(tempBuffer, runStopMessages[rundotcnt], sizeof(tempBuffer)); // 경고 문구를 임시 버퍼에 복사
touchgfx::Unicode::strncpy(txt_RunStopBuffer, tempBuffer, TXT_RUNSTOP_SIZE); // 임시 버퍼의 내용을 Unicode 버퍼로 복사

방법2
touchgfx::Unicode::strncpy(txt_RunStopBuffer, runStopMessages[rundotcnt], TXT_RUNSTOP_SIZE); // 잘됨.

 snprintf는 
%c (요소 유형: char), %s (요소 유형: null로 끝나는 UnicodeChar 목록), %u, %i, %d, %o, %x 형식에서만 작동한다고 
문서에 명시되어 있다고 하네요.. 참 까다로운 놈일쎄....

코드에 문제가 없어도 touchGFX에서 폰트가 안잡혀 있으면... 문제가 된다...

TouchGFX Designer에서 와일드카드 범위를 설정하는 방법은 다음과 같습니다:
TouchGFX Designer에서 타이포그래피 설정으로 이동합니다.
사용하려는 타이포그래피(예: Default 타이포그래피)를 선택합니다.
"Wildcard Ranges" 열에서 원하는 범위를 추가합니다.

예를 들어:
숫자만 사용하려면 "0-9"를 추가합니다.
영문자와 숫자를 사용하려면 "A-z, 0-9"를 추가합니다.
ASCII 문자 전체를 사용하려면 "0x20-0x7E"를 추가합니다.
설정을 저장하고 프로젝트를 다시 생성합니다.
이렇게 와일드카드 범위를 설정하면, TextArea 위젯에서 해당 범위의 문자들을 동적으로 표시할 수 있습니다. 와일드카드 범위를 올바르게 설정하는 것은 특히 snprintf를 사용할 때 문자열이 제대로 표시되도록 하는 데 중요합니다.

wildcard range는 아래에서 설정하면 됩니다.

1. Font : 사용할 폰트를 선택

2. Type : Bitmap 또는 Vector 선택

3. Bpp (Bits Per Pixel) : 폰트의 피트 크기를 결정....

4. Size : 폰트의 표시 크기

5. Direction : 문자열 방향

6. Fallback Characters : 폰트가 지원하지 않는 문자에 대해 대체할 문자를 설정..
   => 이항목 때문에 표시하지 못할 문자가 발생하면 ?표로 대체된다.

7. Wildcard Characters : 와일드카드 문자를 설정 > 잘 모르겠음

8. Widget Wildcard Characters : 위젯내 사용할 와일드카드 문자를 설정 > 잘 모르겠음

9. Wildcard Ranges : 와일드카드를 사용할 문자열 범위를 지정

10. Ellipsis Character : 생략 부호 문자를 설정 예를 들어 ... 등..

반응형

'' 카테고리의 다른 글

주요 금융지주사 배당기준일  (1) 2024.12.23
SK 텔레콤 배당금...  (1) 2024.12.19
LDL  (0) 2024.12.15
RP가 없는 토스증권에서 예치금 굴리려면?  (0) 2024.12.14
미래에셋 TDF2040 vs 한국투자 TDF2030  (0) 2024.12.13