회원가입 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%를 돌려드립니다.
60 강좌 & 팁 VS2005와 VS 6.0(or EVC++) 동시 설치 [36] 무료 아크마 2010-08-27 0 7783
59 강좌 & 팁 주석(comment)에 대한 이야기 [8] 무료 아크마 2010-06-08 0 3943
58 강좌 & 팁 [잡담] C언어에서 함수 이름 짓기 [7] 무료 빛나는 영혼 2010-04-05 0 5265
» 강좌 & 팁 [잡담] float 형을 4byte로 나누는 것에 관한. [13] 무료 빛나는 영혼 2010-03-22 0 4759
56 강좌 & 팁 [잡담] 비트 디파인 방법 [2] 5P 빛나는 영혼 2010-03-22 2 3748
55 강좌 & 팁 [잡담] 초간단 프로토콜 처리 프로그램 [11] 무료 빛나는 영혼 2010-02-22 0 4707
54 강좌 & 팁 편람 무료 meri5 2010-02-04 0 2503
53 강좌 & 팁 EMC를 고려한 PCB 설계기술 무료 장미향기 2010-01-11 0 1557
52 강좌 & 팁 트랜지스(TR) 스위칭 시뮬레이션[피스파이스] [11] 무료 아크마 2009-10-08 0 7121
51 강좌 & 팁 IAR 컴파일러에 itoa가 없어!! [6] 무료 아크마 2009-02-05 0 5781
50 강좌 & 팁 HOWTO: Visual C++ 어플리케이션에서 메모리 누수 추적하는 방법 [5] 무료 아크마 2009-01-23 0 4260
49 강좌 & 팁 EULER 공식 [2] 무료 아크마 2009-01-20 0 5088
48 강좌 & 팁 라인트레이서 강좌 [26] 무료 clot 2009-01-19 0 2798
47 강좌 & 팁 [잡담] 아이디어 발상 문제 - 조직적 사고 퀴즈 [8] 무료 빛나는 영혼 2008-12-26 0 3679
46 강좌 & 팁 인벤터로 제작한 동영상 및 설명 [7] 무료 뺘쑝 2008-11-23 0 2672
45 강좌 & 팁 전류센싱 IC 검색 [3] 무료 아크마 2008-10-22 0 4562
44 강좌 & 팁 VC++ 6.0 투명이미지 함수 사용에 관해서 무료 아크마 2008-10-05 0 4918
43 강좌 & 팁 [쉬어가기] SI8440 [5] 무료 빛나는 영혼 2008-10-02 0 3165
42 강좌 & 팁 핀치롤러 파는곳 무료 아크마 2008-10-02 0 3979
41 강좌 & 팁 노이즈 방지와 대책 [5] 5P 빛나는 영혼 2008-10-02 5 1340
  • 자유에게는 의무라는 보증인이 필요하다.
    - 투르게네프
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.