Forum: Compiler & IDEs Arduino SoftwareSerial


von Belo L. (belo)


Lesenswert?

Hallo Forum,
ich versuche seit Tagen bei einem Arduino Leonardo die SoftwareSerial 
(RX/TX) zum Laufen zu bringen, es klappt aber einfach nicht. Ich habe 
schon vieles versucht, schreibe hier mal ein Beispiel:
2 Arduino Leonardo (Leo1, Leo2) an einem Computer jeweils USB
Digitale Pins 0 von Leo1 mit Digital 1 von Leo2 verbunden und umgekehrt.
Programm auf Leo1 (schreibt auf der SoftSerial):
1
#include <SoftwareSerial.h>
2
SoftwareSerial softSerial(0, 1);   // Pin D0 ist RX, Pin D1 ist TX.
3
                                   // Die Funktion softSerial() kann nun wie Serial() genutzt werden.
4
                                   // http://coptermagazin.de/arduino-grundlagen-teil-12-softwareserial-library/
5
6
void setup() {
7
    Serial.begin(9600);
8
    softSerial.begin(9600);    
9
}
10
11
void loop() {
12
        softSerial.print("a");
13
        delay(100);
14
}
Programm auf Leo2 (liest RX/TX aus und gibt es auf USB aus):
1
#include <SoftwareSerial.h>
2
SoftwareSerial softSerial(0, 1);   // Pin D0 ist RX, Pin D1 ist TX.
3
                                   // Die Funktion softSerial() kann nun wie Serial() genutzt werden.
4
                                   // http://coptermagazin.de/arduino-grundlagen-teil-12-softwareserial-library/
5
6
char ccc;   
7
8
void setup() {
9
    Serial.begin(9600);
10
    softSerial.begin(9600);    
11
}
12
13
void loop() {
14
   delay(100);
15
    if (softSerial.available() > 0) { 
16
        ccc = softSerial.read();
17
        Serial.print(ccc);
18
    }
19
}

Die Programme waren umfangreicher, aber als alles nicht funktioniert 
hat, habe ich es immer mehr vereinfacht.)
Nun habe ich Putty aufgemacht und mich mit Leo2 über COM9 verbunden.
Es kommt aber nichts an.

Was ist daran falsch ?

: Bearbeitet durch User
von Christian S. (christian_s593)


Lesenswert?

Die Digital-Pins 0 und 1 brauchst du nicht als Software UARTS zu 
initialisieren, da es die Anschlüsse der Hardware UART sind.

Die Software UART Library ist eher für die Anschüsse bspw. D5 und D6 
oder D10 und D11 gedacht.

Also entweder du initialisierst eine Software UART auf D10 und D11 oder 
du nimmst die Hardware UART auf D0 und D1 und initialisierst es mit 
"Serial1.begin(9600);"

Ich denke mal, es klappt nicht, da die Software UART Library 
Interrupt-Pins benötigt.

von Belo L. (belo)


Lesenswert?

Danke.
Ich habe es auch schon mit D8/D9 , D10/D11 probiert. Mit dem gleichen 
Ergebnis - Putty zeigt nichts an.

Ich habe es jetzt mal mit Serial1 getestet (ohne SoftwareSerial) und 
auch das klappt nicht.

Geht das denn überhaupt ?
Oder hat vielleicht bitte jemand mal ein kleines funktionierenden 
Codebeispiel ? Ich komme da einfach nicht weiter.

: Bearbeitet durch User
von Christian M. (Gast)


Lesenswert?

Z.B.:
https://www.arduino.cc/en/Tutorial/SoftwareSerialExample
Sonst liegt's an Deiner Hardware!

Gruss Chregu

von Belo L. (belo)


Lesenswert?

danke, das hatte ich schon gefunden, klappt aber nicht.
Mache ich das überhaupt korrekt mit Putty? Ich lade erst das Programm 
hoch und starte danach Putty.

An Hardwarefehler denke ich erstmal nicht, da ich es auch schon mit 
anderen Arduinos getestet habe (bzw. wir haben, wir machen das zu 
zweit).

von Christian M. (Gast)


Lesenswert?

Putty kenne ich nur für Telnet und so. Sollte aber auch für die Serielle 
gehen. Was hast Du als Konverter? Irgendetwas USB2Serial?
Zeichne mal Deine Verschaltung auf!

Gruss Chregu

von Stefan F. (Gast)


Lesenswert?

Manche Terminalprogramme empfangen Zeilenweise, sie zeigen nur etwas an, 
NACHDEM sie einen Zeilenumbruch empfangen haben.

Versuche es mal mit Hammer Terminal, das benutze ich gerne.

von Belo L. (belo)


Lesenswert?

So, vielen Dank, es läuft jetzt. freu*

Die Hinweise haben mir bei der Suche sehr geholfen!!

Die Kommunikation von einem Leonardo zu einem anderen klappt jetzt 
sowohl über Serial1 (0/1) als auch über Softwareserial (8/9).

Aber mit meinem USB2Serial scheint tatsächlich etwas nicht zu stimmen. 
Dieses Teil empfängt nichts von RX/TX. Und ich habe auch mal einen 
Loopback Test gemacht. Toll - davon habe ich jetzt 2 kaputte Teile. 
Wahrscheinlich irgendwelche Faketeile - waren auch ziemlich billig.

Eine Frage noch dazu: Der Sender-Leonardo muss ja eigentlich nicht über 
USB angeschlossen sein, es würde doch eine Spannungsversorgung reichen, 
oder ? Er "spricht" ja nicht mit dem PC.
Wenn ich ihn aber mit einer 5V Spannungsquelle betreibe und USB 
rausziehe, sendet er aber nicht mehr.
Woran kann das liegen ?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Belo L. schrieb:
> Woran kann das liegen ?

Hast Du an die nötige Masseverbindung gedacht?

von Belo L. (belo)


Lesenswert?

ne, natürlich nicht, Danke, das wars !!
(Die Masseverbindung war ja vorher über USB)

Ihr habt mir wirklich sehr geholfen.

LG

Belo

: Bearbeitet durch User
von Christian M. (Gast)


Lesenswert?

Ach ja, als Terminalemulation empfehle ich HTerm. Wird zwar (momentan*) 
nicht weiterentwickelt, ist aber am flexibelsten von Allen die ich 
kenne!

*siehe anderer Thread

Gruss Chregu

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

HTerm ist schick, aber definitiv kein Terminalemulator.

Ein Terminalemulator wertet Steuersequenzen aus (z.B. zur 
Cursorpositionierung, zur Veränderung von Textattributen oder zum 
Bildschirmlöschen), alles das macht HTerm nicht.

von Christian M. (Gast)


Lesenswert?

Hallo Rufus,

ja, habe einerseits gesehen, dass HTerm als Terminal-Programm 
abgepriesen wird. Was ist der Unterschied zu einer Terminal-Emulation? 
Haben alle Terminals auch ESC-Sequenzen interpretiert? Gab's denn keine 
mit Text-only?
Andererseits sind im Wikipedia-Artikel zu Terminalemulation auch 
Software als Beispiele aufgeführt, die Text-only sind und einen Hinweis, 
dass ausschliesslich ESC-Sequenzen interpretierende Programme 
dazugehören, nicht vorhanden!

Gruss Chregu

von Stefan F. (Gast)


Lesenswert?

Typewriter sind Schreibmaschinen. Es gab elektrische Varianten mit 
seriellem oder parallelem Anschluss, die man zum Ausdrucken von Text 
verwenden konnte.

https://www.mikrocontroller.net/attachment/183356/privilegElectronic4000.jpg

Typewriter beschreiben ein Papier Zeilenweise. Daher stammen die 
Steuerzeichen CR (Carriage Return) und LF (Line-Feed), die bis heute 
eine wichtige Bedeutung haben.

Als Logische Weiterentwicklung folgten bald Geräte mit Bildschirm, die 
kein Papier mehr brauchten. Die einfachsten Varianten gaben einfach 
seriellen Daten Zeilenweise aus, wie ihr Vorgänger mit Papier.

Einen Schritt Weiter waren die Terminals.
http://www.vecmar.com/images/wyse/WYSE-GPT_LG.gif
Mit solchen Geräten habe ich bis ende der Neunziger gearbeitet, um Unix 
Server zu bedienen.

Terminals interpretieren bestimmte Zeichenfolgen als Steuerbefehl, um 
zum Beispiel den Bildschirm zu löschen, zu scrollen, den Cursor zu 
platzieren, und die Farbe zu wechseln. Davon gibt es zahlreiche 
Varianten. Bei vielen Terminals (und Matrix-Druckern) begannen diese 
Steuersequenzen mit dem ESC-Zeichen (0x1B).

Mit Terminals + Modem konnte man in den 90er Jahren (vielleicht auch 
schon früher) an privaten Kommunikationsnetzten teilnehmen, man nannte 
sie damals Mailboxen. Auf einem Server, für den man regelmäßig 
Nutzungsgebühren zahlen musste, liefen Programme, die man remote 
benutzen durfte. Hauptsächlich diesen sie dazu, elektronsiche Post 
austutauschen, in Gruppen zu diskutieren und Dateien (primär 
Hacker-Tools, Raubkopien und Erotik-Fotos) zu teilen.

Ebenfalls in den 90ern wurden Personal Computer allerdings so 
preisgünstig, dass das Interesse an diesen Terminals sank. Stattdessen 
nutzte man Terminal-Emulatoren. Ein ganz bekannter war Telix unter Dos.

Ich habe im Netz einen Spass-Screenshot gefunden, der zeigt, wie das 
benutzerinterface einer Mailbox damals ausgesehen hat:

http://cdn4.spiegel.de/images/image-438337-640_panofree-bhfr-438337.jpg

Hier noch zwei andere (echte) Screenshots:
https://www.planet-source-code.com/upload_PSC/screenshots/PIC20023261754513424.gif
http://www.nexit.com/images/nt_view.jpg

Hammer Terminal kann nur Plain Text darstellen und ist daher kein 
Terminalemulator. Es ist eher ein für Entwickler gepipmter 
Typewriter-Emulator.

Screenshot von Hterm: 
http://www.opendcc.de/elektronik/animat/hterm_api.png

von Belo L. (belo)


Lesenswert?

Was sagt denn die Gemeinde zu Putty? Das benutze ich normalerweise, um 
zum Beispiel auf einem Web-Server etwas zu machen. Für diese Anwendung 
wird Putty sehr häufig (vielleicht sogar meistens ?) verwendet.

Deswegen habe ich es zunächst auch hier eingesetzt und bin da auch nicht 
der einzige. Und es funktioniert auch.

Aber ich lasse mich gerne überzeugen, wenn es etwas besseres gibt.

LG

Belo

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Stefan U. schrieb:
> Typewriter sind Schreibmaschinen.

Das Akronym TTY steht für Teletype, das war ein Fernschreiber. Ja, im 
Prinzip eine Schreibmaschine, aber eben eine für Datenübertragung 
ausgestattete. Das auf der Tastatur getippte konnte wahlweise 
unmittelbar gedruckt oder über eine serielle Verbindung auf einen 
entfernten Fernschreiber ausgegeben werden. Texte konnten auch auf 
Lochstreifen gestanzt werden und von diesen wahlweise wiedergegeben oder 
gesendet werden.

Ein typischer Fernschreiber hat bereits Steuerzeichen verstanden; neben 
CR (Wagenrücklauf, d.h. Sprung an Zeilenanfang) und LF (Zeilenvorschub) 
gab es noch BS (Backspace, Druckkopf einen Schritt zurückbewegen), FF 
(Seitenvorschub) und BEL (Bell, Ertönen einer "Glocke" zur 
Aufmerksamkeit) und einiges weiteres, die Übertragung und Steuerung des 
Lochstreifenstanzers betreffend.

Da auf Papier gedruckt wurde, konnte man mit bestimmten Zeichenfolgen 
Zeichen ausgeben, die nicht im Zeichensatz des Fernschreibers enthalten 
waren. Die Teletype verwendete 7-Bit-ASCII (frühere Fernschreiber waren 
noch eingeschränkter) und konnte daher keine Umlaute ausgeben. Mit der 
Sequenz a<BS>" konnte man so zu einem ä kommen, oder mit |<b>3 zu etwas, 
was man für ein ß halten konnte.

> Mit Terminals + Modem konnte man in den 90er Jahren (vielleicht auch
> schon früher) an privaten Kommunikationsnetzten teilnehmen, man nannte
> sie damals Mailboxen.

Das gabs schon in den späten 70ern und frühen 80ern, die Modems waren 
damals allerdings oft akustisch an einen Telephonhörer gekoppelt (und 
wurden deshalb Akustikkoppler genannt).
Mit den Dingern hat man atemberaubende 300 Baud Übertragungsrate 
hinbekommen, wenn die Telephonleitung gut genug war.

Viele Benutzer nutzten das zusammen mit einem "Home Computer", da ein 
richtiges Terminal einerseits im Heimbetrieb ohne Datenverbindung 
ziemlich sinnlos und andererseits deutlich zu teuer war.


Ein sehr weit verbreiteter Standard für das, was man als Terminal 
bezeichnet, ist das DEC VT100. Dessen Befehlssatz lebt in praktisch 
jedem Betriebssystem als "ANSI" fort; unter DOS gab es dafür eigens 
einen Devicetreiber namens ANSI.SYS.

Ein Terminalprogramm (also eines, das ich als Terminalprogramm 
bezeichnen würde) muss mindestens den VT100-Befehlssatz unterstützen.

Das macht auch das unbeliebte Hyperterminal, das früher mit Windows 
mitgeliefert wurde, Procomm, Teraterm, ZOC, putty ... die können das 
alle.

von Christian M. (Gast)


Lesenswert?

Was ist dann HTerm? Es kann wie ein "Terminalprogramm" ASCII, aber kein 
ANSI. Ich meine, es gibt/gab auch Terminals und deren Emulation, die nur 
ASCII konnten, sowie auch Graphik. Bei v-term und Hyperterminal sind die 
Einstellungen nur versteckter, und HTerm kann halt nur Plaintext.

Gruss Chregu

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Christian M. schrieb:
> Was ist dann HTerm?

Ein Schnittstellentestprogramm.

Denn es ist auch kein "Plaintext-Terminalprogramm", da es noch nicht mal 
die rudimentären Steuerzeichen auswertet, die die gute alte Teletype 
kannte.

Tobi hat das Ding schlichtweg ungünstig benannt (die Leute, die hinter 
dem unsäglichen "Bray" stehen, aber auch).

> ASCII, aber kein ANSI.

Nicht verwechseln. ANSI steht bei einem Terminal nicht für die 
Zeichencodierung, sondern für einen standardisierten Befehlssatz (der 
dem des DEC VT100 sehr ähnelt). ANSI kann aber auch für eine 
Zeichencodierung stehen - das ist insbesondere unter Windows üblich, 
denn das ist die windows-eigene Standard-8-Bit-Codierung (und entspricht 
weitestgehend ISO8859-1 oder "Latin 1").

Um die Unterscheidung vielleicht etwas einfacher zu machen: Mit einem 
Terminalprogramm lässt sich über eine passende Schnittstelle z.B. ein 
Texteditor wie nano oder vim bedienen, oder ein Email-Programm wie mutt. 
Selbst ein primitiver Webbrowser wie lynx ist mit einem Terminal 
nutzbar.

Mit Hterm aber lässt sich noch nicht mal so etwas wie edlin oder vi 
(ohne m) nutzen.

Hast Du schon mal mit telnet o.ä. eine Linux-Konsole bedient? Das 
Telnet-Programm hat mit Sicherheit eine Terminalemulation enthalten.

von Christian M. (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Hast Du schon mal mit telnet

Ja, habe schon mit Telnet gearbeitet. Da war aber nur Plain Text. Eine 
Mail-Box.
Ich hatte auch schon ein Terminal, das mit dem Rechner verbunden war. 
Auf dem Rechner hatte ich ein Terminal-Programm laufen. Welche Seite war 
jetzt das Terminal? :-)
Ich will sagen, dass der Übergang wohl fliessend ist. Ein 
Schnittstellentestprogramm, das auch Telnet usw. kann, kann mehr als 
Terminalprogramm, dass nur RS232 und PlainText kann.

Gruss Chregu

von Christian M. (Gast)


Lesenswert?

Oder anders gesagt, wenn Du eine Terminalemulation auf z.B. VT100 
Emulation hast, und nur Plaintext kommt, siehst Du keinen Unterschied zu 
einem "Schnittstellentestprogramm". Und wie sendest Du die 
ESC-Sequenzen? :-)
Das habe ich nie gebraucht, nur zum Erstellen der Seiten der Mailbox. 
Uff, schon 23 Jahre her:
https://www.google.ch/url?sa=t&source=web&rct=j&url=http://www.basilea.it/Wissen/Mailboxen%25201995%2520mit%2520emailadressen.pdf&ved=0ahUKEwi19sK5xb3SAhVFSRoKHfecD6EQFggcMAA&usg=AFQjCNEscWykfZCnPywHIYynkvcXmgvcBA&sig2=mQ7KWy_VYEzHaUly2l8n2w
"Amigamania"

Gruss Chregu

von Manfred (Gast)


Lesenswert?

Belo L. schrieb:
> Was sagt denn die Gemeinde zu Putty?
Ich mag es nicht sonderlich (Bedienung), aber für die Abfrage am Arduino 
ist es einwandfrei geeignet.

Diverse andere der hier genannten Programme kenne ich, es ist einfach 
eine Frage der persönlichen Vorliebe, welches man verwendet.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.