Serielle Kommunikation mit Due

Hallo liebe Arduino Community,

im Rahmen eines etwas umfangreicheren Projektes, ist es für mich notwendig eine Kommunikation zwischen Rechner und Arduino Due über die serielle Schnittstelle aufzubauen.

Dabei werde ich vom Rechner an den Arduino eine Variable senden, die einen Case auswählt. Im Anschluss sollen einige Messwerte vom Arduino an den Rechner übertragen werden.

Ursprünglich wollte ich das Ganze über ein Batch-File abwickeln wobei ich nach einiger Recherche das Gefühl habe, dass Processing die bessere Wahl wäre, insbesondere beim Übertragen der Messwerte an den Rechner. Gehe ich richtig in der Annahme oder denkt ihr das ist auch leicht per .bat umsetzbar?

Zu meinem aktuellen Problem:

Als ersten Schritt möchte ich mit Hilfe dieses Beispiels über die serielle Schnittstelle eine LED ein- und ausschalten:

https://hikro.de/arduino-serial-tutorial

In der Arduino IDE mit seriellem Monitor funktioniert alles einwandfrei.

Vom Batch-File aus glimmt die LED mit folgendem Code allerdings nur kurz auf und geht sofort wieder aus.

mode COM6 BAUD=9600 PARITY=n DATA=8 >NUL
ECHO e > \\.\COM6

Habt ihr eine Idee woran es liegen könnte, dass die LED nicht eingeschalten bleibt?

Im Anschluss habe ich es mit Processing versucht und komme zu demselben Ergebnis wie mit dem Code aus dem Batch-File.

import processing.serial.*;


Serial myPort;       

myPort = new Serial(this, Serial.list()[1], 9600);
  
// Send a small e out the serial port:
myPort.write(101);

Auch hier ist mir unklar, wieso die LED nur kurz aufleuchtet und sofort wieder ausgeht?

Vielen Dank für Eure Hilfe,
Viele Grüße,
KoMo93

Ich befürchte, dass der DUE bei jedem öffnen der Schnittstelle einen Reset macht.

Du solltest den nativen USB Port für diese Zwecke verwenden.

Vielen Dank für die schnelle Antwort und den Hinweis. Aktuell verwende ich einen Nano, da sich der Due in der Anlieferung befindet.
Beim Nano gibt es ja nur einen USB Port. Denkst Du auch beim Nano findet bei jedem Öffnen der Schnittstelle ein Reset statt?

Ja, natürlich!

Hier eine Batch Datei, die zeigt, wie man den Reset vermeiden kann

@echo on
set port=COM9
mode %port% BAUD=9600 PARITY=N DATA=8 STOP=1 to=off xon=off odsr=off octs=off dtr=hs rts=hs idsr=off

echo 80>\\.\%port%

pause

Ich hoffe, das klappt auch bei dir.

Es muss halt vermieden werden, dass der USB Teil mit seinem DTR am Reset des AVR wackelt.
Siehe Schaltplan des Nano.

Leider glimmt die LED auch mit deiner Konfiguration des COM Ports nur kurz auf, sprich das Verhalten ist immer noch dasselbe.

Mit @Echo on ist mir aber gerade folgendes aufgefallen:
\SW>ECHO e 1>\.\COM6
Woher kommt die 1 hinter dem e? Ich möchte lediglich ein e verschicken und tue das in der .bat auch.

Auch mit einem Kondensator kann man den Reset unterdrücken.
Siehe dazu die Arduino as ISP Tutorials.

komo93:
Mit @Echo on ist mir aber gerade folgendes aufgefallen:
\SW>ECHO e 1>\.\COM6
Woher kommt die 1 hinter dem e? Ich möchte lediglich ein e verschicken und tue das in der .bat auch.

1 ist stdout
2 ist stderror

1 ist der default.

Wird also nicht gesendet, sondern gibt nur die Quelle der Sendung an.

Wen's interessiert:
Da ich über MODE ... DTR=HS keine Doku gefunden habe, ausser vereinzelt dass es möglich ist,
hab ich mal dies ausprobiert ( Win 8.1 Deutsch, cmd im Administrator - Modus ):

C:\WINDOWS\system32>mode com3: DTR=HS
Die Voreinstellung für die Parität ist gerade.

Status von Gerät COM3:
----------------------
    Baudrate:        1200
    Parität:         Even
    Datenbits:       7
    Stoppbits:       1
    Timeout:       OFF
    XON/XOFF:        OFF
    CTS-Handshaking: OFF
    DSR-Handshaking: OFF
    DSR-Prüfung:     OFF
    DTR-Signal:      HANDSHAKE
    RTS-Signal:      ON

Was das konkret bedeutet, ist mir allerdings immer noch unklar.
( Ich hatte bei HS auf ein HOLD STATE oder so gehofft, also "egal wie es ist, unverändert lassen" )

Herzlichen Dank für die Hinweise und Informationen.

Ich habe heute meinen Due bekommen und tatsächlich funktioniert es mit der Konfiguration von combie.

Der Due steckt dabei sogar am Programming Port und DTR und RTS sind auf Handshake gesetzt und es geht!

Nochmal ganz kurz zurück zu meiner Ausgangsfrage:

Wenn ich zu einem späteren Zeitpunkt Messwerte vom Arduino per serieller Schnittstelle an den Rechner übertragen möchte, ist es dann sinnvoller Processing zu verwenden oder ist es auch möglich mir die aktuellen Messwerte im Batch-File ausgeben zu lassen?