Hallo zusammen, ich mache mir für mein nächstes Projekt ein paar Gedanken und bin gerade an der Stelle, wie ich am besten die Daten speichern kann. Hardwaretechnisch besteht es im Wesentlichen aus einem (evtl Touch)Display, ein paar Tasten, einem PIC24 (in C) oder evtl auch gleich einen PIC32 (in C o. C++) sowie einen externen NICHT flüchtigen Speicher. (Bitte keine Diskussionen über PIC/ARM ;) ) Bei dem Speicher bin ich noch unsicher, ob ich eine µSD-Karte oder einen Flash-IC nehme. Sollte es eine SD-Karte werden, wird diese jedoch nicht zugänglich sein, es sei denn, man öffnet das Gehäuse. Es sollen in dem externen Speicher 2 verschiedene Datensätze gespeichert werden. Die Anzahl der Datensätze wird lediglich durch den Speicher begrenzt. Zudem sollen die einzelnen Datensätze wieder gelesen werden können. Datensatz A: 1 String (max 50 Buchstaben o. Zahlen), 4 float-Variablen 50Byte + 4*4Byte = max 66Byte Datensatz B: 1 String (max 100 Buchstaben o. Zahlen), eine Liste oder 2D-Array, welches eine uint16-Variable sowie ein Verweis auf einen Datensatz A beinhaltet. Datensatzgröße ist abhängig der Listengröße. Ich schätze im Schnitt sind es so 10-20 Einträge. Jetzt bleibt die Frage, wie ich die Daten abspeichere. Da habe ich mir 3 verschiedene Szenarien überlegt: 1. Ich speichere die Daten vom Satz A mit einer festen Größe ab, sodass ich mit einem Adressenabstand von 66 Byte immer zum nächsten Eintrag komme. Hiermit fülle ich den Speicher "von Hinten" an, sodass die B-Datensätze am Beginn des Speichers anfangen können. Bei diesen muss man wohl oder übel nach einem Abschlussbyte suchen, welches hinter jeder Liste steht. Der Nachteil ist bloß, dass durch die feste Größe mehr Speicherplatz als nötig verbraucht wird, da vermutlich selten die 50 Zeichen des Strings ausgereizt werden. Das Suchen nach den B-Datensätzen ist ebenfalls umständlich. Ich habe auch schon überlegt, 2 separate Speicher zu nehmen, doch das nimmt unnötig Platz weg, bei der SD-Kartenlösung ist es vergeudeter Speicher/Kosten und zusätzlich will ich da vielleicht auch noch Konfigurationen abspeichern, was wieder ein Datenmix verursacht. Zudem kann man nicht mehr ohne Weiteres die Liste in einem Datensatz B erweitern. Für mich ist diese Speicherart Aufgrund des Aufwandes eigentlich schon raus. 2. Das andere Extrem wäre, sofern überhaupt möglich, ein Datenbanksystem wie z.B. SQL. Ist ja auch quasi dafür gemacht. Verschiedene Tabellen für die verschiedenen Datensätze usw. Ich kenne mich allerdings nicht so gut mit dem SQL-Hintergrund aus - meine Erfahrungen kommen eher aus der PHP-MySQL Kombi bei Webseiten. Ich nehme an, dass dort auch allerhand zusätzlicher Speicherplatz benötigt wird. Bei einer 2-4GB SD-Karte oder einen 4Gbit-Flash ist aber denke ich genug Platz dafür da. Hier sehe ich die Rechenleistung eher als Problem, um die Daten zu lesen. SQL bietet ja die Funktion, beim Abruf nach wählbarer Spalte zu sortieren und gleich nach Inhalten zu Filtern. Das alles braucht Rechenleistung. Wieviel genau und wie es dann auf einem PIC24 o. PIC32 läuft weiß ich nicht. Ich will aber nicht 5 Sekunden warten müssen, um auf die Daten zuzugreifen. Auf der anderen Seite hat der µC neben der Displayansteuerung auch nicht viel zu tun, wodurch sowas vielleicht doch machbar wäre. Mit SQL oder anderen Datenbanksystemen stelle ich mir die Lösung bzw. den Zugriff auf die Daten am übersichtlichsten vor, sobald das Drumherum steht. Das gibt es aber vielleicht schon fertig!? Wenn ich nach PIC32 und SQL suche, kommen nur Beiträge um mit einem PIC32 via LAN oder gar Internet auf eine Datenbank zuzugreifen. Bei mir ist Server und Client ja das Selbe. 3. Ich formatiere den Speicher mit FAT16 o. FAT32 und erstelle mir damit eine Ordnerstruktur wie auf dem PC. Im Hauptverzeichnis könnte dann eine Konfig-Datei liegen sowie verschiedene Unterordner für die beiden Datensätze. In den Ordnern liegen dann Dateien, die den String als Dateinamen haben, und darin sind dann Zeilenweise getrennt die float-Zahlen bzw die Listeneinträge. Scheint aus meiner Sicht die momentan beste Lösung zu sein. Kann man denn auch ein normalen Flash-IC mit FAT formatieren? Ich kenne die Ansteuerung von SD-Karten, gibt es ja auch oft fertige Libs für, doch da geht es nur um den Zugriff, nicht um das formatieren selbst. Dort wird immer eine formatierte SD-Karte vorausgesetzt. Sind die angelegten Dateien eigentlich gleich Alphabetisch sortiert? Und wie sieht es bei FAT16/32 mit solch kleinen Dateien aus? Gibt es da eine Minimalgröße oder ist das eine Eigenschaft der Festplatten? Wie würdet ihr es machen? Ist SQL o.ä. zu übertrieben? Oder gibt es vielleicht noch andere, bessere Lösungsarten? Ich würde mich über Ratschläge oder Ideen sehr freuen. Grüße Michael
:
Bearbeitet durch User
Michael S. schrieb: > ein Datenbanksystem > wie z.B. SQL. SQL ist kein Datenbanksystem, sondern nur die Abfragesprache für ein solches.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.