c++ - 如何显示缓冲区中的值

标签 c++ c embedded contiki

我正在尝试显示缓冲区中的值。

客户端节点将其温度和数据长度作为缓冲区中的有效负载发送到服务器。然后服务器应该接收并显示输入的相同值。

我有以下内容:

    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',则 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");

这将为您提供缓冲区中存在的一系列十六进制值。

关于c++ - 如何显示缓冲区中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18253067/

相关文章:

c++ - 在 C++11 中反序列化 DNS 数据包对象

c++ - 主 Makefile 中 undefined reference

c++ - 运行网络测试的方法

c++ - 具有 union 返回类型的函数调用

c - C 中的线程(和 irq)安全动态内存处理程序

c - 如何在c中读取字符串后跟字符?

c - 通过反转丢失最后一个(第一个)字符

c++ - C中的 "inactive"预处理器 block 是什么意思?

c - make 运行时出错。冲突的类型和先前的声明

embedded - 对于ARM7-TDMI来说,什么是好的FAT文件系统