Mit LabView übertrage ich Daten über die serielle Schnittstelle auf einen Arduino UNO. Auf dem Arduino läuft ein Programm, welches die ankommenden Daten liest und entsprechend weiterverarbeitet. Ein Auszug:
Möchte ich nun ein anderes Programm auf den Arduino laden erhalte ich folgende Fehlermeldung:
avrdude: ser_open(): can't open device "\.\COM9": Das System kann die angegebene Datei nicht finden.
Der Arduino wird im Gerätemanager erkannt und das Programm läuft fehlerfrei.
Ich vermute, dass der Serial.read() Befehl die Kommunikation mit dem PC verhindert.
Etwas vergleichbares habe ich erlebt, als ich Daten vom Arduino auf ein anderes Gerät per UART gesendet habe. Es konnte erst ein neues Programm hochgelden werden, als die UART Verbindung unterbrochen wurde.
Gibt es einen Möglichkeit, wie ich wieder auf den Arduino zugreifen kann?
Die serielle Abfrage belegt deine Verbindung zur USB-Schnittstelle.
Wenn du zum richtigen Zeitpunkt den Reset drückst, kannst du den wieder flashen.
Immer mal öfter probieren.
besten Dank für Deine Antwort!
Das mit dem Reset versuche ich nun schon eine Weile, ohne Erfolg. Gibt es vielleicht noch einen anderen Weg oder kann ich den Arduino entsorgen?
Bei den Beispielen gibt es auch ein Sketch "ReadASCIIString", wo die Serial.read() Funktion verwendet wird. Eigentlich kann ich mir nicht vorstellen, dass das dann der übliche Weg ist.
Oft hilft es auch schon, wenn man das Terminal, Welches gerade dem Arduino lauscht, schließt.
Wobei ich unter Linux das Problem habe, daß ich den 'Serial-Monitor' schließen muß, bevor ich auf den Arduino erneut zugreifen kann, unter Windows der Monitor aber geöffnet bleiben kann.
besten Dank für Deine Antwort!
Das mit dem Reset versuche ich nun schon eine Weile, ohne Erfolg. Gibt es vielleicht noch einen anderen Weg oder kann ich den Arduino entsorgen?
Bei den Beispielen gibt es auch ein Sketch "ReadASCIIString", wo die Serial.read() Funktion verwendet wird. Eigentlich kann ich mir nicht vorstellen, dass das dann der übliche Weg ist.
Gruß
Du kannst den noch per ISP programmieren.
Das geht mit einem 2.Arduino
vielen Danke für Eure Antworten. Das Problem saß, wie schon einige vermutet haben, mal wieder vor dem Rechner. Ich habe vergessen, die Übertragung in Labview mit VISA:Close zu beenden. Demnach wurde die serielle Übertragung nicht freigegeben, obwohl das Labview Programm schon beendet wurde.