?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | 안녕하세요. uint8_t 값 변환 관련 문의입니다.

페이지 정보

작성자 이지웅 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일17-04-05 15:53 조회741회 댓글3건

본문

안녕하세요^^

si4463이라는 rf통신모듈을 이용하여 통신하고 있는데요.

(라이브러리는 Radiohead 의 rf24를 사용중입니다)

라이브러리 참고(http://www.airspayce.com/mikem/arduino/RadioHead/classRH__RF24.html)

보내는 쪽 아두이노에서는 

uint8_t 형식으로 데이터를 보냅니다.

  uint8_t data[] = "1";
  rf24.send(data, sizeof(data));

그리고 받는 쪽에서는


    uint8_t buf[RH_RF24_MAX_MESSAGE_LEN];
    uint8_t len = sizeof(buf);
    if (rf24.recv(buf, &len))
    {
      Serial.print("got request: ");
      Serial.println((char*)buf);  

    ....

이렇게 해서 받습니다.

보내는 sender 아두이노에서 16진수 형태의 배열로 데이터를 여러개 보내고 싶구요.

받는 receiver 아두이노에서 그 형태 그대로 받아서 10진수로 변환 후에 사용하려고 합니다.

그런데 sender에서 16진수 형태로 보내어도. receiver에서는 글자가 깨져서 보입니다.

(물론  uint8_t data[] = "1"; 이렇게 보내면 1 그대로 받고요.  uint8_t data[] = {0x20}; 으로 보내거나 16진수 형태로 보내면 깨져서 받습니다..)

데이터타입을 어떻게 변환해서 맞추어야 할지 도무지 모르겠습니다ㅠ

조언 부탁드립니다.

댓글목록

이지웅님의 댓글

이지웅 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

자문 자답입니다.
보내는 쪽에서 uint8_t data[] = {0xFF, 0x01, 0x05}
이런 식으로 송신하고 받는 쪽에서 배열로 그대로 받더군요^^; 실험 몇번으로 해결이 되었네요.

이지웅님의 댓글

이지웅 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일

추가 질문입니다.
string으로 된 hex 값을
uint8_t 값에 넣고 싶은데요. 방법이 없을까요?
아무리 검색해봐도 나오지를 않아서요ㅠ

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 댓글의 댓글 작성일

아래 코드 참고하세요.
uint8_t data[30];
myString.StringToCharArray(data,30);            // or myString.StringToCharArray(data,sizeof(data));