회원가입 ID/PW 찾기

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

콘텐츠 수 35
판매자 빛나는 영혼 판매 납포인트 무료 평점 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%를 돌려드립니다.
35 전기전자 아무거나 간단한 RF 필터 설계 프로그램 5P 썸남썸남 2022-12-23 1 118
34 전기전자 아무거나 마이컴 초짜의 넋두리~ [12] 무료 소스리 2009-08-20 0 1403
33 전기전자 아무거나 안녕하세요 자동차 전장품 회로설계에 대해 질문드립니다 [2] 무료 오간지 2017-04-25 0 207
32 전기전자 아무거나 TI 아날로그 엔지니어 포켓 레퍼런스 입니다... [19] 무료 솔개처럼 2016-12-16 0 357
31 전기전자 아무거나 바리스터 기초 자료 입니다. [7] 무료 kme 2016-10-09 0 381
30 전기전자 아무거나 포토인터럽트란 [4] 무료 kme 2016-10-09 0 224
29 전기전자 아무거나 poly switch란 [1] 무료 kme 2016-10-09 0 152
28 전기전자 아무거나 포토커플러사용방법 [1] 무료 kme 2016-10-09 0 357
27 전기전자 아무거나 전자회로 부품정리 자료 [8] 무료 kme 2016-10-09 0 561
26 전기전자 아무거나 IGBT Driver파형 분석 [11] 무료 sensor 2015-03-06 0 519
25 전기전자 아무거나 SMPS Transformer 계산 자료 [19] 무료 sensor 2015-03-01 0 1688
24 전기전자 아무거나 입문자에게 [314] 무료 아크마 2013-09-14 0 5022
23 전기전자 아무거나 도움을 받았으면 추천 눌러 주세요. [4] 무료 테리우스형 2012-07-24 0 28166
22 전기전자 아무거나 저항 코드에 대하여...... [14] 무료 시나브로69 2012-05-31 0 1753
21 전기전자 아무거나 저항 칼라표입니다. [9] 무료 시나브로69 2012-05-31 0 1568
20 전기전자 아무거나 전자회로,수학 ,회로이론 [7] 무료 tbwnaoslwj1 2012-05-03 0 2632
19 전기전자 아무거나 datasheet 8051 [5] 무료 마산마구 2012-03-19 0 2190
18 전기전자 아무거나 laplace 공식 [8] 무료 마산마구 2012-03-15 0 2489
17 전기전자 아무거나 요새 운영자의 생각^^ [8] 무료 아크마 2011-04-03 0 38260
16 전기전자 아무거나 미묘하게 특성 타는 회로? 무료 밝은전기구슬 2011-03-26 0 19868
  • 가장 행복한 삶을 살기 위해서 낮시간은 엄격하게 계획되어야 하고 밤시간은 한가하게 비워놓아야 한다.
    - 무니
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.