我正在尝试在缓冲区中显示值。
客户端节点将其温度和数据长度作为缓冲区中的有效负载发送到服务器。然后服务器应该接收并显示相同的值。
我有以下内容:
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));
}
我感觉memcpy行或“printf”行是错误的,因为其他printf工作。
请帮忙 JSON
答案 0 :(得分:0)
我不知道您希望从缓冲区中提取哪种数据,但如果它在开头包含'\ 0',则为printf(“buffer =%s”,buf);不会显示任何数据。
当我想调试缓冲区并且我知道输出不包含ASCII字符时,我使用以下示例:
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");
这将为您提供缓冲区中存在的一系列十六进制值。