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 |