>

최근에 송수신 할 때 데이터를 ASCII 10 진수 (A = 65)로 포맷하는 새로운 LoRa 송수신기가 있습니다. 따라서 40 바이트 페이로드 "전송 기능 데모 ..."를 보내면 수신 측에 다음과 같이 출력됩니다.

84 114 97 110 115 109 105 115 115 105 111 110 32 99 97 112 97 98 105 108 105 116 121 32 100 101 109 111 110 115 116 114 97 116 105 111 110 46 46 46

... 다음과 같이 약간의 for 루프가 있습니다 :

for(int i = 0; i < 40; i++) {
  Serial.print(trx.read());
  Serial.print(" ");
  delay(1);
}

Arduino 플랫폼에서 데이터 유형 변환에 익숙하지 않아서 (ASCII 처리 경험이 없음)이 출력을 C/C ++에서 문자열로 변환하는 간단한 방법을 찾지 못했습니다. 완전한 페이로드를 배열에 넣고 ASCII 해시 맵을 사용하여 하나씩 변환하는 것을 고려했지만 더 쉬운 방법이 있다고 생각합니다.

업데이트 :나는 jacoblaw의 답변을 사용하고 더 깨끗한 출력을 위해 약간 수정했습니다. 어느 시점에서 캐스팅 할 요소를 선언하지 않고 배열에서 문자 캐스트를 사용하려고 시도 했으므로 당시에는 바이트를 문자로 캐스트 할 수 없다고 생각했습니다. 그런 배열을 사용하지 않는 것이 아니라 메서드가 작동합니다. @jacoblaw와 @Groo의 도움에 감사드립니다. 여기 내가 지금 사용하고있는 것이 있습니다 :

 for(int i = 0; i < 40; i++) {
      Serial.print((char)trx.read());
      delay(1);
  }

이것을 재사용하려면, 두 번째 "for"조건을 페이로드 길이에 관계없이 변경해야합니다. 다시 감사합니다!

  • 답변 # 1

    나는 당신이 원하는 것에 대해 완전히 명확하지 않습니다. 내가 이해 한 것에서 당신은 송수신기로부터받는 것의 문자를 원합니다

    char rcv_str[40]; // Make sure this is large enough!
    int temp; // From yuor example, it looks like trx.read() outputs ints
    for(int i = 0; i < 40; i++) {
      temp = trx.read();
      rcv_str[i] = (char)temp;  
      Serial.print(temp);
      Serial.print(" ");
      delay(1);
    }
    
    

  • 이전 javascript - 사진 라디오 버튼 변경
  • 다음 wordpress - PHP 함수의 일부로 URL에서 쿼리 문자열 제거