Hallo habe zum größtren Teil mein Programm fertig. Nun habe eine GUI, die Parameter in diesem Format(1;2;3;4) an dem Arduino sendet und diese vom Arduino in eine csv.Datei auf die SD-Karte speichert.
Nun kann die GUI auch per Serialport, den kompletten CSV.Datei inhalt(wo die parameter stehen) auch vom arduino empfangen und werden in eine Listbox angezeigt in folgende, format:
1;2;4;4
2;3;3
1;2;3
usw.
Nun ist es meine Absicht in diese Listbox weitere Werte über die GUI hinzuzufügen oder einen Eintrag zu editieren. Damit die änderungen auch erhalten bleiben möchte ich dann den kompletten neuen inhalt der Listobx an dem Arduino senden, somit er diesen mit dem alten inhalt der CSV-Datei überchreibt. Nur weiß ich nicht , wie ich diesen kompletten inhalt vom Arduino so verarbeitet wird, dass er diesen aufnimmt und zeilenweise in die csv datei schreibt.
Wäre sowas möglich, und wie ?
Das ist mein VB.code, der die einträge der listbox an dem Arduino sendet:
und das der Teil vom Arduino, der diesen Inhalt komplett zeilen weise in die csv. datei schrieben sollte:
nur leider werden nur teile davon reingeschrieben und nicht alles :(.
Weiß jemand vllt wie man das besser machen kann? bzw wo der fehler ist?
Anbei noch ein bild, wie das funktionieren sollte
Nun kann die GUI auch per Serialport, den kompletten CSV.Datei inhalt(wo die parameter stehen) auch vom arduino empfangen und werden in eine Listbox angezeigt in folgende, format:
1;2;4;4
2;3;3
1;2;3
usw.
Nun ist es meine Absicht in diese Listbox weitere Werte über die GUI hinzuzufügen oder einen Eintrag zu editieren. Damit die änderungen auch erhalten bleiben möchte ich dann den kompletten neuen inhalt der Listobx an dem Arduino senden, somit er diesen mit dem alten inhalt der CSV-Datei überchreibt. Nur weiß ich nicht , wie ich diesen kompletten inhalt vom Arduino so verarbeitet wird, dass er diesen aufnimmt und zeilenweise in die csv datei schreibt.
Wäre sowas möglich, und wie ?
Das ist mein VB.code, der die einträge der listbox an dem Arduino sendet:
und das der Teil vom Arduino, der diesen Inhalt komplett zeilen weise in die csv. datei schrieben sollte:
Quellcode
- void write_SD()
- {
- if (Serial.available()>0)
- {
- if (inByte ==13) //enter
- {
- Serial.println("Initializing SD Card...");
- if (!SD.begin(chipSelect))
- {
- Serial.println("Initialization failed");
- return; //tue nichts
- }//endif
- Serial.println("SD Card initialized");
- if (SD.exists("test2.csv"))
- {
- Serial.println("File exists");
- }
- else
- {
- Datei=SD.open("test2.csv", O_CREAT | O_WRITE);
- Datei.println("Anz_Parameter;Adresse;Register;Data");
- Datei.close();
- }
- //Schreibzugriff
- Datei= SD.open("test2.csv", O_CREAT | O_WRITE); //Das gleiche wie FILE_WRITE. doch es beschleunigt das Schrieben auf SD
- //Datei=SD.open("test2.txt", FILE_WRITE);
- //falls Datei ok, schreibe
- if (Datei)
- {
- //delay(150); //verzögerung, da schreiben auf SD karte langsamer ist
- //Datei.write(Test); //ohne zeilenumbruch
- //Datei.write(13); //schreibe nach jedem eintrag ein carriage return line feed, damit strings zeilenweise einetragen werden
- Serial.println("inhalt vor der csv");
- Serial.println(Text);
- Datei.print(Text);
- Datei.println(); //Damit er in neue zeile schreibt
- //inhalt von Array Text in SD schreiben(commands.txt)-> println mit zeilenumbruch
- Datei.close(); //Damit änderung gespeichert werden, diese Datei schliessen
- Serial.println("Data stored in SD card");
- /*Nachdem enter gekommen ist und daten gespeichert wurden
- setze Array wieder auf 0 und lösche inhalt*/
- index=0; //index auf 0 initialisieren
- memset(&Text[0], 0, sizeof(Text)); //durch memset wird Array gelöscht
- Serial.println("Array initialized");
- }//endif datei vorhanden?
- }//endif kontroll enter
- else//fals kein enter,soll weiter in array speichern
- {
- if (index <400)//schauen , ob array overflow hat //vorher 400
- {
- Text[index]=inByte; //solange kein ´Enter vom Arduino empfangen wird, schreibe in Array
- index++; //und zähle position hoch -> z.b. wenn ich hallo sende-> jeder buchstabe bekommt eine position
- delay(100);
- }//endif check array of overfolw
- }//end else
- }//endif serial available
- }//end fu
nur leider werden nur teile davon reingeschrieben und nicht alles :(.
Weiß jemand vllt wie man das besser machen kann? bzw wo der fehler ist?
Anbei noch ein bild, wie das funktionieren sollte