Serial Daten von console ohne IDE ??

Hallo Liebes Forum, Bin neu hier und habe schon mal mein erstes Problem...

Bin vor einiger Zeit von Pic's auf Arm umgestiegen :slight_smile: ( Geile Teile!!)

So, Ich habe einen Arduino mega Über USB auf meinem Linux Desktop verbunden.

Wenn ich Daten via 232 senden will, stell ich erstmals die Parameter in Linux ein :

stty -F /dev/ttyACM1 9600 raw -hupcl min 0

mit einem Anschließendem :

echo "TEST String auf dem Display!" > /dev/ttyACM1 bekomme ich wass ich will, allerdings nur mit im Hintergrund laufender IDE .. && Seriallem Monitor ??
ist die Ide geschlossen , ist nichts am Display ... ?

Ich habe den Code nur AUszugsweise angehängt, bei Fragen bitte melden!

Vielen Dank für euer feedback!!!

  Auszugsweise...


void setup() {   Serial.begin(9600);  } 

void loop(){
if (ser_data) { 
  ser_data=false;
  Display_String();
}

void serialEvent() {
Serial_string = "";
   while (Serial.available() > 0)    {
      char recieved = Serial.read();
      if (recieved != 10)  Serial_string += recieved;
      if (recieved == '|' ) {     controll = true;  }   // Sonderkomando
      if (recieved == '\n')  {      ser_data = true; 
        if (controll) { // Sonderkomando!!
          switch (Serial_string.charAt(1)) {
            // b für brightness
            case  98: var = (int) Serial_string.charAt(2) - 48;   todo = 1; break; 
            // f flash
            case 102: var = (int) Serial_string.charAt(2) - 48;  
                               col = (int) Serial_string.charAt(3) - 48; 
                               displ = (int) Serial_string.charAt(4) - 48;
                                todo = 2; 
             break;          

            } //  end switch
      } // end Sondercomando
    }
}

JoHARRER:
Wenn ich Daten via 232 senden will, stell ich erstmals die Parameter in Linux ein :

stty -F /dev/ttyACM1 9600 raw -hupcl min 0

mit einem Anschließendem :

echo "TEST String auf dem Display!" > /dev/ttyACM1 bekomme ich wass ich will, allerdings nur mit im Hintergrund laufender IDE .. && Seriallem Monitor ??
ist die Ide geschlossen , ist nichts am Display ... ?

Kannst Du unter Linux echt dieselbe serielle Schnittstelle von verschiedenen Anwendungen aus gleichzeitig geöffnet haben? Also während die Schnittstelle bereits vom seriellen Monitor geöffnet ist noch zusätzlich von einem Konsolenfenster aus einen Echo-Befehl an die bereits geöffnete Schnittstelle raushauen?

Unter Windows geht das nicht, da ist eine serielle Schnittstelle keine "shared" Ressource, sondern kann immer nur von einer Anwendung zur Zeit geöffnet werden.

Anyway. Dein Problem bei geschlossenem seriellen Monitor dürfte der automatische Reset sein. Jedesmal, wenn vom PC aus die serielle Schnittstelle geöffnet wird, führt das Arduino-Board einen automatischen Reset aus und startet den Bootloader und testet, ob vielleicht ein neuer Sketch über Serial und den Bootloader hochgeladen werden soll. Erst wenn der Bootloader feststellt, dass kein Sketch-Upload erfolgt, beendet sich der Bootloader und der Sketch startet.

Bei Dir dürfte also das passieren, wenn Du nur den echo-Befehl aus der Konsole raushaust:

  • Serielle Schnittstelle wird geöffnet, Arduino-Board macht Auto-Reset
  • Bootloader sieht "TEST String auf dem Display!"
  • Bootloader beendet sich, weil das kein Sketch-Upload ist
  • Sketch startet
  • Sketch sieht nichts mehr, von dem, was gesendet wurde

Und wenn Du den seriellen Monitor gleichzeitig offen hast passiert das:

  • Serielle Schnittstelle ist bereits geöffnet, Arduino-Board macht KEINEN Auto-Reset
  • Sketch sieht "TEST String auf dem Display!"

Es gibt Anleitungen, wie Du bei den Arduino-Boards den Auto-Reset abschalten/deaktivieren kannst.

Allerdings funktioniert dann auch kein "automatischer Upload über Bootloader" mehr, sondern für Uploads mußt Du dann entweder einen ISP-Programmer am ISP-Programmieranschluss bemühen, oder als Alternative "Upload mit manuellem Reset" machen, bei dem zum Uploaden eines neuen Sketches dann immer ein manuelles Betätigen des Reset-Buttons auf dem Board notwendig ist.

Danke für die flotte Antwort..
Also das mit dem "Autoreset" läuchtet ein..
Habe zu "testzwecken" einen Piezzobeeper in void setup einen ton ausspucken lassen..

for (int i=0; i<MAX_COUNT; i++) { playTone(50000,(2900-i*100));}
/

und siehe da, .. ist die ide geschlossen, und ich sende via console kann ich den sound höhren...

Werde mich mal mit "Autoreset disable" auseinandersetzen...

sag euch Bescheid!!
By the way...

< Kannst Du unter Linux echt dieselbe serielle Schnittstelle von verschiedenen Anwendungen aus gleichzeitig geöffnet haben? >

Is hallt linux , das geht schon... lg

So, es funct!!

AUTOREST war das Prob...

Hab mal den Jumper am Board (mega) geöffnet und mit einem Dipswitch versehen...

Nun läuft das Teil wie gewünscht...
Vielen dank nochmals...