CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·방탄소년당 ·MaClien ·일본산당 ·자전거당 ·개발한당 ·이륜차당 ·AI당 ·바다건너당 ·물고기당 ·콘솔한당 ·소시당 ·소셜게임한당 ·안드로메당 ·노젓는당 ·갖고다닌당 ·클다방 ·찰칵찍당 ·ADHD당 ·VR당 ·창업한당 ·나혼자산당 ·걸그룹당 ·골프당 ·방송한당 ·여행을떠난당 ·냐옹이당 ·레고당 ·라즈베리파이당 ·달린당 ·나스당 ·3D메이킹 ·X세대당 ·AI그림당 ·날아간당 ·사과시계당 ·육아당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·디아블로당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·IoT당 ·KARA당 ·키보드당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·PC튜닝한당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·품앱이당 ·리듬탄당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·가상화폐당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

팁과강좌

PDA th55 revival project - Part 3 (Hi-Resolution) 6

4
2026-04-15 17:08:37 수정일 : 2026-04-16 09:05:59 175.♡.4.34
Vintage68

안녕하세요.. 


아래 중간보고 편의 하이레조(Hi-Res) 버전, 추억의 소55 감성을 이어가는 (부족한) 강좌, Part 3으로 정리해 봅니다^^

https://www.clien.net/service/board/lecture/19164187


지난 편의 하이라이트는 클리에의 전매특허인 조그다이얼을 이용한 스크롤 업다운을 구현한 것이었죠^^ 

오늘의 핵심은 하이레조 입니다^^ 160x160 답답한 사이즈에서 벗어난 320 x 480 하이레졸루션 모드 진입 ㅋ~

거기에 한 발 더 나아가 다크테마 적용까지.. 이제 클리에로 제품다운 앱을 개발할 수 있는 단계에 진입했네요.. 

그게… 제품은 저만 쓰겠지만 ㅠㅠ


이번에도 자세한 설명은 지루해 지니까 코드는 첨부하고 결과 위주로 보여드릴께요^^


1. 그래픽 위젯

배터리와 메모리 상태는 간단한 바타입 위젯으로 시각화 해 봤네요.. 참고로 저때의 전압은 소숫점 오류 ㅡ.ㅡ;;

온도는 가라 데이터입니다.. ㅎㅎ

스크린샷 2026-04-15 오전 8.27.12.png


TH55의 놀라운 배터리 성능을 계속 강조해 왔으니, 저 위젯 중에서 배터리 쪽만 좀 자세히 말씀 드리자면,  

배터리의 상태값은 팜에서 관리하는 기준으로 시스템함수를 이용해 뽑아 오는데… 아래와 같은 구조로 재구성 해 전역변수로 두었습니다. 

// Battery status structure
typedef struct BatteryInfoTag {
    UInt16 percent;
    UInt16 milliVolts;
    Boolean pluggedIn;

    UInt16 warnThreshold;
    UInt16 criticalThreshold;
    Int16  maxTicks;
    SysBatteryKind kind;
    UInt16 rawInfo;
} BatteryInfoType;


전압(mV), 잔량(%), 외부전원 등이 보이고 특이하게 배터리 타잎이 있는데… 타잎에는 아래와 같은 구분이 있습니다. 

static const Char* BatteryKindStr(SysBatteryKind kind)
{
    switch (kind) {
        case sysBatteryKindAlkaline: return "ALK";
        case sysBatteryKindNiCad:    return "NiCd";
        case sysBatteryKindNiMH:     return "NiMH";
        case sysBatteryKindLiIon:    return "LiIon";
//        case sysBatteryKindLiPoly:   return "LiPoly";
//        case sysBatteryKindUnknown:  return "UNK";
        default:                     return "Unknown";
    }
}


리튬폴리머부터 컴파일에러가 나는걸 보니 제 라이브러리는 리튬이온까지네요.. 물론, 저것이 동적으로 보내지는 값은 아니고, PDA 펌웨어에 고정된 값입니다. TH55는 리튬이온에 해당하는 값이 박혀 있습니다. 


배터리의 동적 변화값으로는 전압과 잔량, 외부전원 정도입니다. 배터리의 상태는 전압과 잔량으로 판별 가능한데, 아래와 같은 기준으로 본다고 합니다.  리튬이온 기준 대략:

전압    상태
4.20V    풀충
4.00V    ~80%
3.80V    ~50%
3.60V    위험


👉 percent랑 같이 보면 재미있다고 지피티가 수다를 떱니다..

예:
    •    74%인데 3.9V면 → 노화
    •    74%인데 4.05V면 → 정상


그래서, 코드로 만들어 둡니다. 

전압과 잔량 기준으로 두가지 버전..


// Battery Monitor
static const Char* GetBatteryStatus(const BatteryInfoType *batt)
{
    if (!batt) return "   --   ";

    if (batt->pluggedIn) {
        if (batt->percent >= 95) return "FULL CHG";
        return "CHG     ";
    }

    if (batt->percent >= 95) return "FULL    ";
    if (batt->percent >= 70) return "GOOD    ";
    if (batt->percent >= 30) return "MID     ";
    return "CRITICAL";
}

static const Char* BatteryStateFromVoltage(UInt16 mV)
{
    if (mV >= 420) return "FULL";
    if (mV >= 400) return "GOOD";
    if (mV >= 380) return "MID";
    if (mV >= 360) return "LOW";
    return "DANGER";
}


프로그램에서의 실제 표시는 잔량 기준으로 하고 있습니다. (이건 배터리 위젯을 터치하면 전압과 잔량 기준이 토글되게 수정^^)

그리고, 이같은 백그라운드로 맥클에서 호출하는 상태(STAT) 명령에 다음과 같이 응답하게 배터리 상태정보 한줄요약을 추가합니다^^

스크린샷 2026-04-15 오후 4.35.02.png


2. 텔레메트리

요청에 따라 텔레메트리 데이터를 주기적으로(0.5초) 뿌리게도 해 봤습니다. 

--> 맥클 동작 시연화면

혹시 재생이 안된다면 아래 첨부파일 링크에 넣어둔 동영상을 보시면 됩니다. 


3. 실크영역 확장

먼저, 160x160 화면에 이전까지 쓰던 텍스트 기반 폼이 아닌 그래픽 윈도우폼을 열고 대략적인 레이아웃을 잡은 다음, 허연 화면 밋밋해 다크테마를 입혀 봅니다 ㅋ~ 방법은 의외로 간단해 백그라운드 컬러와 포어그라운드 컬러를 뒤바꾸면 되요. 그런 후, 하이레조로 가기 전에 저 그래피티 영역(실크라고 하죠^^)부터 확장했습니다. 확장은 성공했는데 아직 제어권 밖입니다..

스크린샷 2026-04-15 오전 8.28.57.png

맨 아래 상태바를 남기거나, 그것까지 제거해 320x480 풀 해상도를 쓸 수도 있는데, 상태바가 있어야 홈버튼으로 런처에 복귀할 수가 있으니 이건 남기기로 합니다. (물로 소55는 백버튼이 있어 큰 문제 없지만요^^)

실크영역을 제거한 다음 위젯에 색깔도 입혀봤는데, 아직코드에 오류가 있어(배터리 퍼센트값이 들어오고 있어서..) 메모리 색상이 빨간색 워닝 레벨입니다. 뭐.. 의도치 않게 레벨 별 컬러 적용이 테스트 됬네요 ㅋ~


4. 하이레조

대망의 하이레조입니다. ㅋ~

먼제 실크를 확장한 화면에서 160x160 기준으로 대략의 레이아웃을 잡아주고...  그리고, 짜잔~

스크린샷 2026-04-15 오전 8.33.10.png

확장이 됩니다^^ 예상대로 위젯은 크기가 1/4로 줄어 1사분면에 표시되네요~

큰위젯은 텍스트 폼에 찍히던 게 오버랩 된거라 의도치 않은 것인데, 크기비교가 자연스럽게 되고 있습니다. 때론 버그도 유용한 역할이 있습니다 ㅋ~


열심 수정중~

스크린샷 2026-04-15 오전 8.31.09.png

근데 폰트는 이상하게 크기가 그대롭니다 ㅎㅎ 그래픽 좌표가 조밀해져도 가독성은 유지해 주는 배려 ㅎㅎ

이건 소니 하이레조폰트로 해결^^ 나머지 레이아웃은 좌표설정 바꿔서 샤샤샥~

스크린샷 2026-04-15 오전 8.34.37.png

160 해상도와 320 해상도로 재배치 한 버전의 비교입니다. 로그창에 찍는 로그만 소니가 제공하는 고해상도용 스몰폰트를 써서 정보량을 늘여놨습니다. 기본폰트로는 9줄, HR폰트로는 15줄이 찍히네요.. 이 과정에서 소니 SDK 헤더들이 제 PRC TOOLS 컴파일러와 호환성 문제를 일으키는데... 지피티가 이걸 제 컴파일러 환경에 맞춰 헤더 대신 코드 초반에 직접 선언으로 넣게 도와줬습니다. 혼자 했으면 엄청 짜증났을 작업을 번개불에 콩구워먹듯 ㅎㅎ


5. 마무리

저기 맥에서 받아본 클리에의 시간 데이터는 제가 프로젝트 시작하면서 처음 풀충전한 날, 클리에 달력으로 04년 1월 1일로부터 경과된 날짜입니다. 한달 반 정도 되었군요 ㅎㅎ

스크린샷 2026-04-15 오후 5.00.15.png


그동안 지피티 도움으로 개발환경 구축부터 기능 살려내기 까지, 나름 개발자 시절 향수를 안고 재미있게 진행 했네요..

일단, 요기서 잠시 휴식기간을 갖고, 다음 편으로는 유니버셜 리모콘이나 OBD2 콘솔에 도전해 볼까 합니다. 


중간중간 새로운 진척이 있으면 가끔 찾아 뵐께요^^

 

한줄요약 : 하이레졸루션과 작은폰트 사용에 성공하다~

스크린샷 2026-04-14 오전 8.48.58.png


관심 있으실 분들을 위해, 언제나 처럼 관련 소스코드는 맨아래 링크로 첨부했습니다. 


첨부화일





Vintage68 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [6]
삭제 되었습니다.
연필깍이
IP 129.♡.204.174
04-15 2026-04-15 23:21:53
·
점점 심오해져서 이해는 다 못하지만ㅎㅎ;
뭔가 되고 있는것 같은데 어떤 앱이 나올지 쭉 기대해보겠습니다.
Vintage68
IP 175.♡.4.34
04-16 2026-04-16 08:21:21 / 수정일: 2026-04-16 09:08:16
·
@연필깍이님 저도 이해하면서 코딩한 부분은 많지 않아요.. 이런 문제가 있어.. 이건 이랬으면 좋겠어.. 한마디에 순식간에 코딩이 주루룩 되서 이유 설명과 함께 나오니.. 놀라운건 대화를 오래 이어가면서 수정되고 바꾸고 추가한 전역변수나 로직을 지피티가 기억하면서 보정해 줬다는 거에요 ㅎ~
보면 지피티도 개발환경 잡거나 시스템 건드리는 라이브러리 호출은 시행착오가 많아 인내가 필요한데, 코딩은 순삭입니다..
CHENG
IP 125.♡.130.50
04-16 2026-04-16 21:47:57
·
PalmOS컴파일 하신거 부터 열정이 대단하세요.
Vintage68
IP 175.♡.4.34
04-17 2026-04-17 09:09:47
·
@CHENG님 별말씀을요^^
그시절그때
IP 218.♡.203.3
04-17 2026-04-17 08:33:05
·
오….속편 또 올라왔네요. 재미있게 보고갑니다.
Vintage68
IP 175.♡.4.34
04-17 2026-04-17 09:12:12
·
@그시절그때님 감사합니다. 다음 OBD 프로젝트에는 위젯을 그래픽 실사화 하려고 아날로그 전압계 이미지 모으고 있어요^^ 일단 여기에다 테스트 중입니다 ㅋ~
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.