회원가입 ID/PW 찾기

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

콘텐츠 수 63
판매자 빛나는 영혼 판매 납포인트 무료 평점 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%를 돌려드립니다.
63 Digital 회로 설계 데이터 전송 인터페이스 LVDS Application and Data Handbook [2] 무료 아크마 2018-02-18 0 195
62 Digital 회로 설계 LVDS 의 이해 (National Semicon) [10] 무료 2014-08-18 0 618
61 Digital 회로 설계 I2C-BUS의 이해 (Philips Semicon) [13] 무료 2014-08-18 0 378
60 Digital 회로 설계 회로도 좀 부탁 드립니다. [2] 무료 Binic 2013-07-16 0 1046
59 Digital 회로 설계 cds를 이용한 LED제어에 관하여~ [2] 무료 후리후리 2012-11-23 0 2413
58 Digital 회로 설계 회로도 부탁 드립니다.fishing Bot 회로도 [1] 무료 용탄왕자 2011-09-29 0 3954
57 Digital 회로 설계 Interfacing PECL to LVDS [5] 무료 아크마 2011-04-14 0 2817
56 Digital 회로 설계 TMDS[DVI & HDMI]입력 LVDS 출력 회로도 혹 구성은 ? [4] 무료 정상까지 가보자! 2011-04-08 0 6875
55 Digital 회로 설계 verilog 기초에 관해 중요한 정보들 정리되어있어요~ [9] 무료 나는야한다 2010-09-07 0 2837
54 Digital 회로 설계 Verilog 문법입니다. [12] 무료 연구연구 2010-08-09 0 4285
53 Digital 회로 설계 TTL과 CMOS 관련 자료입니다. [5] 무료 풩님 2010-07-20 0 2466
52 Digital 회로 설계 74시리즈에 대한 이해 [5] 무료 s나이키 2010-07-01 0 2096
51 Digital 회로 설계 표준로직 IC나 PLD도 구사하는 로직 디바이스의 기초 [5] 무료 샤스케 2010-06-24 0 1774
50 Digital 회로 설계 바이패스 콘덴서란! [18] 무료 김사장 2010-04-06 0 2619
49 Digital 회로 설계 분주회로 [9] 무료 김사장 2010-04-06 0 5622
48 Digital 회로 설계 d2audio라는 class-d amplifier자료입니다 [2] 무료 퀴아쿠 2010-02-19 0 2218
47 Digital 회로 설계 Karnaugh map Minimizer [5] 무료 티케 2009-12-22 0 2439
46 Digital 회로 설계 디지털 아나로그 ZIC 활용입문 [5] 무료 하이에나 2009-12-15 0 2148
45 Digital 회로 설계 순차회로설계~! [21] 무료 roruca 2009-11-19 0 2971
44 Digital 회로 설계 555 timer R,C 계산 PROGRAM [7] 무료 엘시알 2009-10-28 0 3861
  • 인생은 우주의 영광이요, 또한 우주의 모욕이다.
    - 파스칼
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.