회원가입 ID/PW 찾기

1) 지식 창고는 본인이 작성한 콘텐츠(팁/노하우/리소스/강좌 등)을 무료 혹은 가상화폐인 납포인트를 통해 공유하는 공간입니다.
2) 본인이 작성한 콘텐츠에 대해서만 지식 창고에 등록할 수 있으며, 저작권에 위배되는 콘텐츠는 사전경고 없이 삭제될 수 있습니다.
3) 콘텐츠 구매 및 첨부파일 다운로드는 회원그룹 '연구원' 이상 가능하오니, 경험치를 쌓아 진급한 후에 이용 부탁드립니다.
4) 무료 콘텐츠의 본문은 구매절차 없이 즉시 이용할 수 있으며, 판매 납포인트가 있는 콘텐츠는 구매 후 이용할 수 있습니다.
5) 콘텐츠 판매에 따른 납포인트 수익은 지정한 비율(50%)에 따라 판매자에게 지급하며, 납포인트 수익을 통해 진급을 빨리할 수 있습니다.
6) 구매 후 평가를 하면 구매 납포인트의 20%를 돌려 드립니다.

콘텐츠 수 120
판매자 빛나는 영혼 판매 납포인트 무료 평점 4.0점 / 총 9명 참여

안녕하세요.

보통 printf ("%lf", 0.1234); 이런식으로 micom 에서 쓰면 0.1234를 PC로 전송합니다.
그럼 PC에서는 걍 받아서 변환하면 되는데...

마이컴과 마이컴끼리 float 전송 할때 0.1234를 변환하는것이 어렵더군요.

윈도우처럼 무슨 함수로 한번에 알아서 변환해 주면 좋을텐데...

일일히 10000을 곱해서 하나씩 추출하는것도 불합리 하고.... 잘못하다간 5.000이 4.9999가 될 수도 있고...

그래서 편하게 할 수 있는게 없을까 하다가 생각한게 float가 4byte 니까 일일히 나누면 편하겠다 생각했습니다.

그래서 만든 함수 입니다.  한번 써 보세요. ^.^

PS : 누군가가 좋은 함수 만들어 놓은거 부탁해요. 참 윈도우는 e 표기법까지 알아서 인식해 주네요. 이거 인식해서 만들기도 귀찮은데 말이죠.  ^.^



// 사용법 예제

// byte cBuf1 , cBuf2 , cBuf3 , cBuf4 ;
// util_FloatTo4Byte ( -45.3345 , &cBuf1 , &cBuf2 , &cBuf3 , &cBuf4 ) ;

// fBuf = util_f4ByteToFloat ( &cBuf1 , &cBuf2 , &cBuf3 , &cBuf4 ) ;
// comm_Printf_PC ( " \n %lf " , (float)fBuf ) ;

// cBuf1 (상위 바이트) ~ cBuf4 (하위 바이트)
// 크기 4byte 고정 (가정 : long == float)
float util_f4ByteToFloat ( byte *cBuf1 , byte *cBuf2 , byte *cBuf3 , byte *cBuf4 )
{
    float fBuf ;

    unsigned long ulBuf1 , ulBuf2 , ulBuf3 , ulBuf4 ;
    unsigned long ulBuf ;


    ulBuf1 = *cBuf1 ;
    ulBuf2 = *cBuf2 ;
    ulBuf3 = *cBuf3 ;
    ulBuf4 = *cBuf4 ;

    ulBuf = (ulBuf1<<24) | (ulBuf2<<16) | (ulBuf3<<8) | (ulBuf4) ;

    fBuf = *(float*)&ulBuf ;

    return fBuf ;
}


// cBuf1 (상위 바이트) ~ cBuf4 (하위 바이트)
// 크기 4byte 고정 (가정 : long == float)
void util_FloatTo4Byte ( float fBuf , byte *cBuf1 , byte *cBuf2 , byte *cBuf3 , byte *cBuf4 )
{
    unsigned long ulBuf ;

    ulBuf = *(unsigned long*)&fBuf ;


    *cBuf1 = ulBuf >> 24;
    *cBuf2 = ulBuf >> 16;
    *cBuf3 = ulBuf >> 8 ;
    *cBuf4 = ulBuf ;
}

profile

profile
아크마 2010.03.22 20:16
VERY GOOD~``
profile
아크마 2010.03.22 20:20

드래그 카피했습니다. 하하^^ 훔쳐서 죄송해요..ㅋㅋ

profile
부경공돌이 2010.03.23 19:20

머가 먼지 하나도 모르겠지만..ㅜㅜ 언젠간 저도 이해하는 날이..ㅎㅎ

profile
부흥레비쉬 2010.03.29 23:46
나두.. 이해되고파
profile
대뽕 2010.03.31 20:52

저도 빨리 마음대로 다룰수 있었으면 좋겟네요~

profile
commidi 2010.04.13 22:44

음.....보통 자료형 변환을 할 때 공용체(union)을 사용하시면 좋은 결과를 얻을 수 있습니다.
예를 들어 어떤 컴파일러가 float 형이 4바이트형이라고 가정할 경우 이를 4바이트 캐릭터로 변환하고자
할 때  다음과 같이 사용합니다.

union dataTrans
{
    float fData ;
    unsigned char cArrData[4] ;
} ;

이런식으로  공용체를 선언해 놓고..

 dataTrans transBuf ;
unsigned char output[4] ;

transBuf.fData = 0.1234 ;
를 집어 넣고 나서..

transBuf.cArrData을 보내면 됩니다.

4바이트의 값을 다시 플롯으로 변환하려면.

transBuf.cArrData에 4바이트의 캐릭터를 넣으시고.
transBuf.fData 를 읽으시면 정확히 float값으로 변환된 것을 확인 할 수 있으실 겁니다.

예제를 보여드리면 좋을 건데....지면상..생략하도록 하겠습니다....

profile
commidi 2010.04.13 22:46

위의 방법대로 이용하여 C의 기본자료형으로 있는 것들은
모두 오류없이 대부분 변환 가능합니다.
수고하세요.

profile
빛나는 영혼 2010.04.14 09:45

아 공용체를 쓰면 간편하겠네요. 정보 감사드립니다. ^.^

소스도 깔끔해지고...

좋은 정보 감사드려요.

profile
commidi 2010.04.16 11:21
^^; 저도 예전에...듀얼포트 디램을 써서...플롯형하고, 인트형을 보낼려고 하다보니
이런 부분들에 생각을 많이 했고,  그때는 영혼님처럼 만들어서 사용했었죠...
그 뒤에 어떤 소스였는지 모르겠지만...참고하다보니..
공용체를 써서 자료를 바꾸고 있드라구요..
지금은 이 방법이 주로 사용하는 형태가 되더라구요........사실은 예전에..
"공용체를 뭐하러 만들어 놨지?" 라는 생각을 했었는데...지금은 공용체의 존재 필요성을 이런곳에
쓰는 거라고 생각하고 있지요..ㅎㅎㅎ
profile
빛나는 영혼 2010.04.17 19:06
네. 저도 공용체는 마땅히 쓰고 싶어도 쓸일이 없어서... 어디에 쓰면 좋을까 생각하다가... ....
마땅히 없더군요.
예전에 함 변수 서로 공용해서 써봤다가 헷갈리기만 하고... (그날 버그 잡느라고 피봤어요 -_-)
실험해 보니 소스 코드가 매우 가독성도 높아지고 간결해 졌어요 ^.^
다시한번 감사드려요.
profile
너구리한마리 2010.06.23 17:56

함수의 공유라 정말 좋은 생각이네요 저두 한번 시도해볼까요?
실력이 없어 쪽팔릴까봐 올리기가 좀..............

profile
꼬돌이 2010.11.08 11:20

ㅋㅋ 저도 아직까지는 모름 ^^    모든걸 마스타 할때까지 아자 ~~

profile
하루백만원 2011.02.23 09:18

좋은 정보 감사합니다. 공부가 되는 군요..^^

search
List of Articles
번호 분류 제목 평점 포인트 판매자 등록일 구매수 조회 수
공지 공공의 목적으로 공유하고자 하는 소프트웨어는 '소프트웨어 자료실'에 업로드를 요청드립니다.
공지 구매후 평점 댓글을 남겨주시면 구매포인트의 20%를 돌려드립니다.
118 강좌 & 팁 OP-amp의 특징과 설계시 주의사항 [3] 5P dmz1723 2019-06-24 15 359
117 강좌 & 팁 PCB 비용 절감을위한 기본 지침 [4] 무료 아크마 2018-06-17 0 712
116 강좌 & 팁 인쇄 회로 기판 (PCB)에 사용되는 개념과 용어 [6] 무료 아크마 2018-06-17 0 1191
115 강좌 & 팁 알티움을 유지보수하면 좋은 이유 (1) / Altium 17 Draftsman 무료 아크마 2018-01-06 0 268
114 강좌 & 팁 VHDL 기초이론 [2] 5P 태양인이제마 2017-12-26 14 287
113 강좌 & 팁 [국문번역] Programmable-Gain Transimpedance Amplifiers Maximize Dynamic Range in Spectroscopy Systems 5P 오로랏 2017-08-26 4 129
112 강좌 & 팁 이론상 가장 빠른 정렬 알고리즘 [1] 10P 오로랏 2017-08-26 4 362
111 강좌 & 팁 와이어 솔더링 노하우 [10] 5P 아그네스 2017-04-04 16 448
110 강좌 & 팁 vi Editor “Cheat Sheet” [2] 5P 아크마 2017-01-30 2 115
109 강좌 & 팁 AVR 기초강좌_1.보드에 프로그램 다운로드하기_퓨즈설정 [16] 무료 소중이 2010-05-18 0 3130
108 강좌 & 팁 미국 전선 규격 환산 5P 아크마 2012-12-30 2 240
107 강좌 & 팁 EMI 및 EMI 필터 설명, 설계, 주의사항 등 전반적인 내용 [1] 50P 솔개처럼 2016-12-16 8 305
106 강좌 & 팁 노이즈방지 PCB 설계법 [33] 5P 직장인 2016-07-21 31 760
105 강좌 & 팁 Fluorescent Lamps, Ballasts, and Fixtures [2] 5P 오로랏 2016-05-28 0 65
104 강좌 & 팁 [PCB설계] 전압에 따른 최소 도체 간격 & 패턴폭과 허용전류 & TH경에 따른 패턴폭 [6] 5P 킬유21 2015-11-06 13 554
103 강좌 & 팁 2015년 1월~2월에 진행을 하였던 모바일 로봇입니다. [1] 5P 한백금설 2015-05-14 8 459
102 강좌 & 팁 Rc Car를 이용하여 만든 자동주차시스템입니다. [3] 5P 한백금설 2015-05-14 5 627
101 강좌 & 팁 자작 라인 트레이서 [1] 무료 윤컴 2015-05-02 0 317
  • 알차게 보낸 하루가 편안한 잠을 제공하는 것처럼 알찬 생애가 평온한 죽음을 제공한다.
    - 다빈치
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.