TinyDuino RC telemetri (med GPS!) (2 / 6 steg)
Steg 2: Förståelse strukturer, pekare, och grundläggande minneshantering.
För att skicka stora tillbaka mängder data över någon form av kommunikationslänk som det mest effektiva sättet att gå tillväga är skicka raw byte från sändaren och läsa dem in i minnet på mottagaren. Detta är inte särskilt svårt men det gör användning av vissa unika låg nivå kod du inte har använt tidigare. Dessutom eftersom vi kommer mixtrande med minne pekare och stora datastrukturer är det möjligt att krascha arduino mycket snabbt.
Strukturer: En struktur är något som en mer grundläggande objekt. Det innehåller en uppsättning variabler kallas egenskaper som kan nås med punktoperatorn. T.ex:
definiera datastruktur
struct myStruct
{
int en = 0;
int b = 0;
int c = 0;
};
skapa en instans av myStruct
myStruct ms;
tilldela värden till den nya instansen av myStruct
MS.a = 10;
MS.b = 11;
MS.c = 21;
Vi använder en datastruktur för att representera dessa data eftersom det kommer att ha en fast storlek och struktur, vilket innebär att när vi läser vår struktur tillbaka till våra mottagarens minne koden automatiskt kommer att veta vad alla data betyder. Du kan inte använda en String-variabel i en struktur så här eftersom strängvariabel tar en dynamisk minne och kommer att orsaka oväntade fel. Snarare om du vill lagra strängar använder en array med tecken med en fast storlek. En annan sak att tänka på är att datastrukturer är storleken på summan av sina delar. så de kan få mycket stor. Läs mer: Här
Tips: En pekare i samband med en C-språket är ett sätt att referera till en adress i det fysiska minnet. Detta är användbart för oss eftersom vi inte kan direkt skapa en kopia av en mottagna struktur. Snarare vi skapa en pekare till en icke-existerande struktur i minnet sedan fylla det minnet med ström av uppgifter vi fått från våra sändare. Men eftersom vi använder en pekare till en struktur snarare än en "riktig" struktur har vi att använda operatorn pilen (->) att ta itu med våra egenskaper snarare än punktoperatorn. Om detta är förvirrande studera koden i nästa två steg och se hur dessa begrepp används. Läs mer: Här
Minneshantering: Eftersom strukturer är stora är att skapa dem vid körning ett bra sätt att fylla den arduino minne och orsaka kraschar. I stället bör vi statiskt fördela våra strukturer och andra statiska data genom att förklara dem utanför loop() eller start() funktionen. Läs mer på bästa praxis för SRAM -minne och variabler Läs mer:här