2016-03-09 4 views
-1

My z1 mote действует как базовая станция и подключается непосредственно к шлюзу (ПК). Я хотел, чтобы сохранить данные, поступающие на текстовый файл, используя этот код в однонаправленной-receiver.c:C - ошибка: неизвестный тип имя 'FILE' на Zolertia z1 motes

//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’ 

Eventhough 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> 
+0

Вы '#include '? – LPs

+0

Да, я сделал сэр. @LPs –

+0

Является ли ваш SDK разработки хорошо установленным? – LPs

ответ

1

msp430 очень ограниченно аппаратно-платформа, так что функциональность стандартной библиотеки полного С не поддерживается. В частности, на типичных платформах msp430 нет жесткого диска или даже SD-карты, поэтому также нет необходимости иметь подпрограммы, связанные с файловой системой, в программном обеспечении.

Если вы посмотрите на msp430-libcsource code, вы можете ясно видеть, что он поддерживает только семейство функций printf.

Интерфейс xmem можно использовать для хранения данных на встроенной вспышке. Интерфейс определен в contiki/core/dev/xmem.h. Использовать это просто: сначала удалите весь сектор, затем вы можете писать в этом секторе. Вызовите xmem_erase с флеш-адресом в качестве аргумента (любой адрес в секторе, который вы хотите удалить), затем вызовите xmem_write, передавая буфер, который нужно записать, и адрес флэш-памяти (начальное смещение), где записывается. Flash-адреса обычно начинаются с нуля.

Также возможно использовать файловую систему Coffee, Contiki.

+0

О, это имеет смысл тогда. Как насчет альтернативных методов? Есть ли способ сохранить данные, если я могу использовать только функцию 'printf'? –

+0

Вы можете использовать интерфейс 'xmem', определенный для прямого доступа к флэш-памяти (' contiki/core/dev/xmem.h'). FYI, вам нужно стереть сектор, прежде чем писать в нем, если вы знаете, что он довольно прост в использовании. – kfx

+0

Хм, я должен признать, что я понятия не имею, как это сделать. Не могли бы вы помочь мне или предложить учебник, который я могу сделать для этого? Я попытался прочитать данные из последовательного порта, но я столкнулся с множеством ошибок, и это заставляет меня намного больше, чем я думал! .. –

1

Contiki предоставляет библиотеку под названием CFS (Coffee flash system) абстрагировать флэш-памяти и записи/чтения в файл, как способ, есть руководство в Contiki's wiki page

The Zolertia Z1 поддерживает CFS.

Смежные вопросы