- fchao-Sinus-Wechselrichter AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Softwareserial - Console Output geht nach mySerial

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.02.2019
    Beiträge
    6

    Softwareserial - Console Output geht nach mySerial

    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    Ich versuche über "SoftwareSerial" eine Verbindung an ein 'echtes' RS232 Gerät zu erstellen.
    Den Code teste ich mit einem Terminal Programm wie "Terminal V19b", hterm oder "Putty",
    anstelle des RS232 Gerätes.

    ********** --- via Serial.print(...) -----> Arduino IDE Serial Moitor ...
    * ESP-12E * --- via mySerial.write(...) <----> JY-R2T V1.4 <----> some RS232 device
    ********** - dto - JY-R2T V1.4 <----> Terminal
    - dto - JY-R2T V1.4 <----> another ESP-12E

    Das Problem ist, das ich die Ausgabe von "Serial.print(...)" in der IDE Console und im Terminal Eingang sehen kann.
    Vom eigentlichen "mySerial.write("bytebuff",7) ist nichts im Terminal zu sehen.

    Ich benutze:
    - Arduino IDE 1.8.7 or 1.8.8
    - "ESP-12E" und "JY-R2T V1.4".
    RX=Pin3 TX=Pin1 - am "ESP12E".
    Ich drehe RX und TX. ( beides versucht )

    - Baudrate meistens "Serial" und "mySerial" - 115200 - (8 1 none 1 none).
    Auch bei 9600 für beides kein Unterschied.

    - Mein SendBuffer zur RS232 ist ein hardcoded byte array - 7 Byte. 0 2 13 0 0 0 12


    - Ich benutze kein Arduino Board, nur die Arduino IDE für ESP-12E - NodeMCU 1.0.

    - Library: espsoftwareserial-master.zip
    Ich habe auch schon andere versucht.
    Die Zuordnungen Serial / mySerial habe ich x mal kontrolliert.

    Kann mir jemand weiterhelfen ???

    Mit freundlichen Grüßen
    ede62
    Geändert von ede62 (06.02.2019 um 11:42 Uhr)

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Zitat Zitat von ede62 Beitrag anzeigen
    ********** --- via Serial.print(...) -----> Arduino IDE Serial Moitor ...
    * ESP-12E * --- via mySerial.write(...) <----> JY-R2T V1.4 <----> some RS232 device
    ********** - dto - JY-R2T V1.4 <----> Terminal
    - dto - JY-R2T V1.4 <----> another ESP-12E
    Was soll das bedeuten?

    Das Problem ist, das ich die Ausgabe von "Serial.print(...)" in der IDE Console und im Terminal Eingang sehen kann.
    Vom eigentlichen "mySerial.write("bytebuff",7) ist nichts im Terminal zu sehen.

    - Mein SendBuffer zur RS232 ist ein hardcoded byte array - 7 Byte. 0 2 13 0 0 0 12
    Der Unterschied besteht im ".print" und ".write". "print" erzeugt ASCII-Werte und sendet sie zum Port raus. Das kann das Terminal darstellen. ".write" sendet die Werte aus dem array wie eine 0 auch als 0 zum port hinaus. Das Terminal kann das nicht als Zeichen darstellen - im Gegensatz zu einer 48 beim ".print", dem ASCII Wert einer 0.

    Gruß
    Searcher
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.02.2019
    Beiträge
    6
    Danke für die Antwort.
    Nun ja, du hast recht. So ist es gedacht und kodiert.
    Ich versuche es anders darzustellen.

    Mein Serial.print geht zur Console - korrekt, und zum Terminal - falsch.

    ESP-12e -> über Serial.print(...) --> Arduino IDE Serial Moitor !!!
    !!! UND --> zum Terminal !!!

    ESP-12E -> über mySerial.write(bytebuf,len) ... erscheint nirgends !!!



    Anbei Ausschnitte aus dem Code.

    RS232-test.ino Pseudo!!!

    #include <SoftwareSerial.h>
    ...
    #define rxPin 3
    #define txPin 1
    SoftwareSerial mySerial(rxPin, txPin); // RX TX

    void setup() {
    Serial.begin(9600);
    while (!Serial) {
    ;
    }
    pinMode(rxPin, INPUT); //*3 pinMode(txPin, OUTPUT);

    mySerial.begin(9600);
    delay(500);
    ...
    }

    void loop() {
    ... .available ...
    byte bb[] = { 0x0, 0x2, 0x13, 0x0, 0x0, 0x0, 0x17 }; //
    bytesSent = mySerial.write(bb, len);

    Serial.println("-i sBB- sC: " + String(sendCount)
    + " len: " + String(len)
    + String(" bytesSent: ") + String(bytesSent)
    + String(" bb: ") + byteToString(bb, len));
    }

    Jede weitere Idee ist willkommen.

    Gruß ede62

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Searcher
    Registriert seit
    07.06.2009
    Ort
    NRW
    Beiträge
    1.703
    Blog-Einträge
    133
    Hallo, wenn ich jetzt richtig verstehe, läuft der Sketch auf dem ESP-12E und soll einmal über die Hardware TX Daten senden und zum anderen auch mit Softserial Daten senden? Mit Hardware TX kommt an der Gegenstelle etwas an. Mit Softserial nicht? Egal ob mit ".print" oder ".write"?

    Da kann ich jetzt kaum weiterhelfen, da ich mich mit den Sketchen zu wenig auskenne.

    Zitat Zitat von ede62 Beitrag anzeigen
    #include <SoftwareSerial.h>
    ...
    #define rxPin 3
    #define txPin 1
    SoftwareSerial mySerial(rxPin, txPin); // RX TX
    Mit fiel noch auf, daß Du bei den defines für die RX/TX Pins nur Nummern verwendest. Sollte es da nicht beim ESP-12E wie beim NodeMCU D1 bzw D2 oder so heißen?

    https://www.mikrocontroller-elektron...esp8266-modul/

    Gruß
    Searcher

    PS: Code wird sehr viel besser im Forum formatiert wenn er in den Code Tags eingeschlossen wird. Codetags: [ CODE] ...programmcode... [ /CODE] aber ohne jegilche Leerzeichen in den Klammern. Auch erreichbar auf der "Erweitert" bzw "Vorschau" Ansicht mit dem # Zeichen aus der Formatierungsleiste.
    Hoffentlich liegt das Ziel auch am Weg
    ..................................................................Der Weg zu einigen meiner Konstruktionen

  5. #5
    HaWe
    Gast
    Sollte es da nicht beim ESP-12E wie beim NodeMCU D1 bzw D2 oder so heißen?
    ESP8266 pins haben GPIO-Nummern plus zusätzlich optionale Arduino-D-Nummern (welche aber nur für manche Boardmanager-Cores wie nodeMCU 0.9 und 1.0 und Adafruit Huzzah vordefiniert sind, nicht für alle generell):

    Code:
    digital  GPIO    default         
       D0     16       WAKE           
       D1      5       I2C SCL        
       D2      4       I2C SDA         
       D3      0       FLASH/LED      
       D4      2       TX1            
       D5     14       SPI SCK        
       D6     12       SPI MISO       
       D7     13       SPI MOSI        
       D8     15       MTD0 PWM       
       D9      3       UART RX0       
       D10     1       UART TX0 
    
    -
    hier also für UART:
    Code:
       D9      3       UART RX0       
       D10     1       UART TX0
    - - - Aktualisiert - - -

    PS,
    interessant übrigens, dass mySerial auf dieselben Pins initialisiert wurde wie das standardmäßige Hardware-Serial ...

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    05.02.2019
    Beiträge
    6
    Hallo, vielen Dank für die Antworten.
    ich habe natürlich alle möglichen RX TX Pins versucht. Letztlich habe ich die UART Box von HaWe als richtig empfunden.

    Ich werde das Gefühl nicht los das ich in Library-Probleme gelaufen bin.
    d.h.
    Serial.print soll zur IDE Console gehen - geht auch.
    mySerial.write soll zum TX Pin gehen und auf der Receiver Seite erscheinen - geht nicht.

    Gibt es jemanden der mit Softwareserial und einem RS232 Gerät erfolgreich kommunizieren kann???
    Den Konverter "JY-R2T V1.4" nicht vergessen.


    Vielen Dank nochmal ich gebe noch nicht auf.

    Mit freundlichen Grüßen
    ede62

  7. #7
    HaWe
    Gast
    Serial läuft per default über UART 1+3,
    wenn du SoftSerial zusätzlich brauchst, muss es IMMER über ANDERE Pins laufen (z.B. 12+13).
    Was allerdings sein kann, ist, dass der ESP8266 überhaupt nicht zu den SoftSerial Libs kompatibel ist.

    PS,
    es ist aber denkbar, dass du für reine Ausgabezwecke den TX1 (GPIO2=D4) mit Serial1() nutzen kannst, zusätzlich zu Serial() RX+TX

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    https://github.com/plerup/espsoftwareserial

    hab ich in einem Forum gefunden, es braucht wohl eine ESP angepasste SoftwareSerial (die Info könnet aber auch schon Hoffnungslo veraltet sein)

    Ansonsten schließe ich mich hier HaWe an, die SoftSerial auf die gleichen Pins wie die HWSerial zu packen könnte hier schon das Problem erklären, wobei ich nciht 100% sicher bin ob man die HWSerial Pins einfach mit einer Pin Konfiguration überschreiben könnte!?
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  9. #9
    HaWe
    Gast
    Zitat Zitat von Ceos Beitrag anzeigen
    https://github.com/plerup/espsoftwareserial

    hab ich in einem Forum gefunden, es braucht wohl eine ESP angepasste SoftwareSerial (die Info könnet aber auch schon Hoffnungslo veraltet sein)

    Ansonsten schließe ich mich hier HaWe an, die SoftSerial auf die gleichen Pins wie die HWSerial zu packen könnte hier schon das Problem erklären, wobei ich nciht 100% sicher bin ob man die HWSerial Pins einfach mit einer Pin Konfiguration überschreiben könnte!?
    Das "könnte" durchaus denkbar sein, dann "sollte" man aber vorher "vielleicht" UART 1+3 auf andere Pins umdefinieren, und dann "könnte" man anschließend die frei gewordenen 1+3 für SoftSerial verwenden -
    bevor ich das aber hier jemandem empfehlen würde, würde ich lieber dazu raten, bei Standard-UART-1+3 zu bleiben und SoftSerial mit passenden Libs (?) auf anderen Pins probieren.

    Der Einwurf zu SoftSerial-Anpassungen über spezielle ESP-Libs ist aber sicherlich wichtig, ich würde das Testprogramm stark abspecken und nur Softserial alleine mit diesen anderen Libs an 12+13 versuchen zum Laufen zu bringen.

    - - - Aktualisiert - - -

    PS,
    dein Link, Ceos, scheint jedoch recht aktuell zu sein:
    harlock974 and plerup Add files via upload (#74)
    Latest commit 56654d2 on 18 Dec 2018
    Geändert von HaWe (07.02.2019 um 13:28 Uhr)

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    05.02.2019
    Beiträge
    6
    Hallo, vielen Dank für die Informationen.
    Ich habe jetzt ein Client.ino auf einem Rechner, einen Server.ino auf einem anderen.
    An beiden einen ESP-12E und den JY-R2T Konverter. Über ein RS232 Kabel ist alles verbunden.
    Jeweils RX Pin 3 und TX Pin 1.
    Im Client ist PinMode RX auf INPUT und TX auf OUTPUT.
    Im Server nur RX auf INPUT. Wenn TX hier ebenfalls auf OUTPUT gesetzt wird, geht nichts.

    Der Client schickt alle 2 Sec. 7 Byte: 00021900000017,
    diese kommen beim Server an und können auch in der Server IDE Console lesbar dargestellt werden.
    In der Client IDE Console sehe ich nur Hieroglyphen.

    Das ganze funktioniert nur mit erwähnten Einstellungen.

    Wenn ich auf der Client-Seite die PinMode TX weglasse oder auf Server-Seite zufüge,
    dann geht nicht mehr. ... " ... not available ", aber lesbar.

    Ich werde, wie von euch angesprochen, mich jetzt um die RX/TX Pins und um die Library kümmern.

    Vielen Dank nochmals, ich melde mich wieder.
    Gruß Ede

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Verstärker geht nach wenigen Sekunden aus
    Von Cysign im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 27.12.2014, 05:24
  2. Wie geht gemischter Input/Output-Betrieb an einem Port
    Von DirkPF im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 18.10.2014, 11:51
  3. Asuro - Linux - Console - Flasher
    Von Tekeli im Forum Asuro
    Antworten: 8
    Letzter Beitrag: 28.03.2011, 22:47
  4. Wie geht es nach Installation weiter?
    Von pod32 im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 29.09.2008, 18:20
  5. servoansteuerung per console-php
    Von uschzmet im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 0
    Letzter Beitrag: 23.04.2006, 14:46

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen