2013-08-15 5 views
0

버퍼에 값을 표시하려고합니다.버퍼에서 값을 표시하는 방법

클라이언트 노드는 온도와 데이터 길이를 버퍼의 페이로드로 서버에 전송합니다. 서버는 다음 수신에 넣어 같은 값을 표시하도록되어 나는 다음과 같은 한

:.

handler(void) 
    { 
     memset(buf, 0, MAX_PAYLOAD_LEN);//set payload 
     if(uip_newdata()) { //if new data is received from client 
      leds_on(LEDS_RED); 
      len = uip_datalen(); 
      memcpy(buf, uip_appdata, len); 
      printf("buffer = %s", buf); 
      PRINTF("%u\n\r bytes from [", len); 
      PRINT6ADDR(&UIP_IP_BUF->srcipaddr); 
      PRINTF("]:%u\n\r", UIP_HTONS(UIP_UDP_BUF->srcport));   
     } 

나는 방어 적이기 라인 또는 "printf와"선이 다른 때문에 잘못되었다는 느낌이를 printf 작업.

난 당신이 버퍼에서 추출하고자하는 데이터의 종류를 모르는 JSON

+2

무엇이 당신의 질문입니까? 오류가 무엇입니까? 느낌? – Devolus

+0

'PRINTF'와'printf'는 다른 기능입니까 아니면 오타입니까? –

+0

'uip_appdata'가 ASCII 문자 또는 어떤 종류의 바이너리 데이터를 포함 할 것으로 기대합니까? (예 : 첫 번째 바이트가' '\ 0' '이면 printf()는 아무 것도 출력하지 않습니다. –

답변

0

도움이 있지만, 그것은 '\ 0'시작 부분에서의 printf와 포함 된 경우 ("버퍼 = %하세요 s ", buf); 어떤 데이터도 보여주지 않을 것입니다.

char buf[MAX_BUF_LEN]; 

do_fill_buffer_stuff(buf); 
// Print the output of the buffer as Hexadecimal values: 
for (int i = 0; i < MAX_BUF_LEN; i++) { 
    printf("%02x ", buf[i] & 0xff); 
} 
printf("\n"); 

이것은 당신에게 당신의 버퍼에 존재 진수 일련의 값을 줄 것이다 : 나는 다음과 같은 예제를 사용,

나는 디버그 버퍼 싶을 때 나는 출력이 ASCII 문자를 포함하지 않는 것을 알고있다.

+0

감사합니다. 응답 – json

+0

우선, 버퍼에 전달되는 데이터 형식이 표준 정수입니다. 코드를 테스트하기 위해 단지 온도 값의 소수 부분 만 전송하기로 결정했습니다 (매우 간단해야 함). 둘째, PRINTF와 printf의 차이점을 처음 들어 본 적이 있습니다. lib 코드에 따르면 유일한 차이점은 "stdio.h"파일이 필요하다는 것입니다. 그게 전부 야. 나는 현재 Jan Jaap의 코드를 광산에 통합하고 있으며 결과는 좋지 않다. 고맙다. – json

+0

코드를 광산에 통합했고 서버 출력이 지저분했다. 루프를 사용하여 16 진수를 출력한다. 버퍼의 최초의 값은 나머지의 경우 "00"을 출력합니다. 코드를 편집했습니다 : // (i = 0; i > % s", buf [0]); //} // PRINTF ("buffer = % s", buf); 그러나 이것도 정확한 값을 출력하지 않습니다. – json

관련 문제