실제 오늘 있었던 디버깅 원인...

in kr-dev 커뮤니티2 years ago

안녕하세요! Jimae입니다.

오늘 오후에 발생한 일인대 안드로이드 Java 만지작 거리다가 갑자기 C언어로 돌아서니

긴가 민가 하더라구요.

ㅎㅎㅎ 그건 둘째치고 우선 버그가 있었습니다.

형변환이 서툴렀던 건지 제가 이걸 놓치고 넘어간건지는 모르지만

프로토콜상의 나올수있는 데이어 범위가 -3725.8 ~ 3725.8 인값에 factor 가 0.1인 값인대요.

6650.0 이렇게 값이 넘어가서 나오더라구요.

image.png

생각보다 어처구니가 없어서

왜 이게 -값이 안나오고 unsigned 되어버려서 부호값이 데이터값으로 취급되서 나오는지 알아보니

이런식으로 사용했습니다.

byte 데이터인대 그것도 리틀 엔디안으로 넘어오는 데이터 입니다.

이걸 배열값으로 읽어서

double test = (short)((unsigned short) data[0] << 8) | (unsigned short) data[1]) *0 .1;

이렇게 사용하더라구요.

저게 컴파일 돌려보니 계속 음수여야 하는 값이 양수로 튀어나와 해법은 따로 변수를 선언해서 먼저 형변환을 시켜버리고 그다음에 factor 를 곱해서 결과를 도출했습니다.

뭔가 어설프게 프로그램을 하다보니 이런실수를 하게됬내요.

하하하하.. ㅠㅠ

나름 IOT 개발자 인지라 이런 데이터 계산에 민감하다보니 이런 실수가 민감한대....

이게 설치된 기기가 파주에 있고 아직 기기에 OTA를 적용을 안했다보니 현장에 직접가서 업데이트를 해줘야 하는 상황입니다.

설치직원에게 애도를

그분에게 미안하다고 굽신굽신 이메일을 보내드렸어요.

하하하하.

image.png

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.26
TRX 0.11
JST 0.033
BTC 64359.90
ETH 3105.50
USDT 1.00
SBD 3.87