Kompletter listbpx eintrag dem Arduino senden und auf SD speichern

  • VB.NET

    Kompletter listbpx eintrag dem Arduino senden und auf SD speichern

    Möchte von meiner GUI, den kompletten inhalt der listbox jedesmal beim Drücken des Buttons Save an dem Arduino senden und ihn auf Sd speichern. ,d.h. jedesmal wird der jetzige inhalt der karte mit dem neuen von der lsitbox überschrieben.

    Das zeilenweise senden des Listboxinhaltes der GUI an dem arduino habe ich folgendermaßen gelöst:

    VB.NET-Quellcode

    1. For Each ListItem As String In listbox_i2c_editparameter.Items
    2. parameter = ListItem
    3. SerialPort_i2c.Write(parameter)
    4. SerialPort_i2c.Write(vbCrLf)
    5. Next


    d.h. jede zeile besteht aus einem parametersatz der wie folgt aufgebaut ist z.b. 3;4;5;6


    von der Arduino seite bekomme ich es nicht hin diese Parameter zeilenweise zu verabieten und sie in die Sd-karte zu speichern :(.

    habe es folgendermaßen programmiert:

    VB.NET-Quellcode

    1. if(!SD.begin(chipSelect))
    2. {
    3. Serial.println("No SD-card");
    4. return;
    5. }//end if Sd.begin
    6. //Serial.println("SD-card ok");
    7. //-----------überprüfen Datei da---------------------//
    8. // wenn ja= löscheu nd erstelle eine neue ,sonst//
    9. //wenn keine da, erstelle neue Datei//
    10. if(SD.exists("I2C.csv"))
    11. {
    12. SD.remove("I2C.csv");
    13. //Datei=SD.open("I2C.csv",O_CREAT | O_WRITE);
    14. //Datei.println("Anz_para ; Address ; Register ; Data ");
    15. //Datei.close();
    16. }//sd exists
    17. write_SD();
    18. //-----Funktion write-SD------//
    19. //wiederhole die schleife,solange ein Zeichen an Serialport anliegt
    20. //und Buffer nicht überschritten wird
    21. //wiederhole die schleife,solange ein Zeichen an Serialport anliegt
    22. //und Buffer nicht überschritten wird
    23. Datei=SD.open("I2C.csv,O_CREAT | O_WRITE");
    24. Datei.println("Anz_Parameter; Address; Register; Data");
    25. Datei.close();
    26. while((Serial.available()) && (index <50))
    27. {
    28. inByte = Serial.read();// lese aktuelles Zeichen ein
    29. //wenn kein enter kommt dann schriebe solange in Buffer,somit parameterzeile nicht vollständig
    30. if(inByte !=10)
    31. {
    32. Text[index]=inByte;
    33. Serial.println("array vor enter");
    34. Serial.println (Text);
    35. index++;//und indexposition erhöhen
    36. }//end if !=13
    37. //falls Enter ankkommt schreibe bufferinhalt in sd und init buffer für nächsten wert
    38. else
    39. {
    40. Datei=SD.open("I2C.csv",O_CREAT | O_WRITE);
    41. //Serial.println("enter");
    42. Serial.print(Text);
    43. Datei.print(Text);
    44. Datei.println();
    45. //close datei, damit inhalt gespeichert wird.
    46. Datei.close();
    47. //Serial.println("Stored");
    48. //init Buffer
    49. index=0;
    50. memset(&Text[0],0,sizeof(Text));//lösche inhalt
    51. //Serial.println("Nach init");
    52. Serial.print(Text);
    53. }//end else
    54. //falls Bufferüberläuft setze ihn zurück
    55. if(index==50)
    56. {
    57. Serial.println("Array overflow");
    58. index=0;
    59. memset(&Text[0],0,sizeof(Text));
    60. }//end if overflow
    61. }//end while
    62. }//end fu



    kann mir da bitte jemand helfen? warum das nicht klappt, hab alles ausprobiert, komme nicht weiter