C-错误 : unknown type name ‘FILE’ on Zolertia z1 motes

标签 c msp430 contiki

我的 z1 mote 充当基站,它直接连接到网关 (pc)。我想使用 unicast-receiver.c 中的以下代码保存文本文件中的数据:

//after printing on the screen then store
FILE *f = fopen("clients.txt", "wb");
fwrite(data, sizeof(char), sizeof(data), f);
fclose(f); 

但我收到此错误:

unicast-receiver.c: In function ‘receiver’:
unicast-receiver.c:49:1: error: unknown type name ‘FILE’

尽管包含了 stdio.h。有人以前遇到过同样的错误吗?我如何解决它?如果没有办法通过 z1 motes 来做到这一点,那么还有其他方法来存储数据吗?

以下是程序中的内容

#include "contiki.h"
#include "lib/random.h"
#include "sys/ctimer.h"
#include "sys/etimer.h"
#include "net/ip/uip.h"
#include "net/ipv6/uip-ds6.h"
#include "net/ip/uip-debug.h"

#include "simple-udp.h"
#include "servreg-hack.h"

#include "net/rpl/rpl.h"

#include "dev/cc2420/cc2420.h"

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

最佳答案

msp430 是一个硬件非常有限的平台,因此不支持完整的 C 标准库功能。特别是典型的 msp430 平台上没有硬盘,甚至没有 SD 卡,因此软件中也几乎不需要有与文件系统相关的例程。

如果你看看msp430-libcsource code ,您可以清楚地看到它仅支持 printf 函数族。

可以使用xmem接口(interface)将数据存储在板载闪存上。该接口(interface)在 contiki/core/dev/xmem.h 中定义。使用它很简单:首先删除整个扇区,然后您可以在该扇区中写入。使用闪存地址作为参数(要删除的扇区中的任何地址)调用 xmem_erase ,然后调用 xmem_write 传递要写入的缓冲区和闪存地址(起始地址) offset) 写入的位置。闪存地址通常从零开始。

也可以使用 Coffee、Contiki 文件系统。

关于C-错误 : unknown type name ‘FILE’ on Zolertia z1 motes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35891725/

相关文章:

c - 为什么地址 sanitizer 对 bss 全局溢出不起作用?

c - MSP430 在 UP 模式下终止 timer_A

c - Contiki 中的头文件在哪里?

c - 如何在C语言的cooja模拟器中获得一个随时间变化的随机数?

c - 处理结构体c

c++ - 函数参数是否允许静态说明符?

c - 打印出用户选择的两个不同年份之间的天数的程序有困难

c - 串行 c 在 linux 中读取有问题

c - Pragma 和中断 vector 表 : TI MSP430

c - 如何分配一个变量指针来访问msp430上的硬件寄存器?