mikrocontroller.net

Forum: PC-Programmierung Linux Befehl für UART


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Leute,
kann jemanden mir sagen wie ich jede 1 Sekunde dieses String über UART 
sende?
ich habe so geschrieben, aber es passiert gar nicht.
while true; do sleep 1; echo  "Hallo\n" > /dev/ttyS1; done

danke

Autor: Wegstaben Verbuchsler (wegstabenverbuchsler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was genau heißt "passiert gar nichts" ?

hast du mal ein schnittstellentester (LED) an die Schnitte gehalten und 
geschaut, ob die LED flackert? Besser sichtbar wäre es dann, etwas 
längeren Text auf die Schnittstelle rausschreiben.

Autor: Hans-jürgen Herbert (hjherbert) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
/dev/ttyS1 ist jene Schnittstelle, die under FreeDOS COM2 heissen würde

Versuchs mal mit /dev/ttyS0, das wäre COM1

setserial : Ändert Baudrate usw.

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast auch Schreibrechte auf die Schnittstelle ?

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
1) es scheint, ob ich kein Recht zu schreiben habe. wenn ich das Befehl:
chmod u+x /dev/ttyS1 eingebe, bekomme ich die Meldung Read only file 
system.
wie bekomme ich das Recht zu schreiben?
2)wenn ich das Befehl echo "hallo" > /dev/ttyS1 eingebe, bekomme keine 
Meldung sondern das Zeichen >.Wenn ich das Pin im oszilloskop überprufe, 
habe ich kein Signal.
3) wenn ich ein String vom dem Mikrocontroller sendet, mit cat Befehle 
sehe ich das String.

danke

Autor: Matrix Man (matrixman86)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuchs mal als root denke nicht das du da die Rechte ändern kannst. 
Wird zwar als eine Datei dargestellt aber eigentlich ists ein Gerät.

mfg Matrix

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber wie

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kommt ein bißchen auf Linux an...

aber
sudo echo  "Hallo\n" > /dev/ttyS1

geht fast immer...
(Passwort ist dein Passwort für deinen User)

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich kriege die selbe Meldung und dazu sudo not found

Autor: Tim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nb: Erst mit -e mach echo aus \n einen Zeilenumbruch.

Autor: Bernhard M. (boregard)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gast wrote:
> ich kriege die selbe Meldung und dazu sudo not found

Dann mach einfach "su", dann das root password eingeben und dann 
weiterprobieren...

Autor: Dominique Görsch (dgoersch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau einfach welcher Gruppe /dev/ttyS1 gehört und bringe den Benutzer 
mit dem du auf die serielle schreiben willst in diese Gruppe. Bei meinem 
Debian ist es z.B. die Gruppe "dialout", glaube es wird bei anderen 
Distributionen auch "wheel" verwendet.

,---
| # ls -la /dev/ttyS*
| crw-rw---- 1 root dialout 4, 64 2008-11-27 21:05 /dev/ttyS0
| crw-rw---- 1 root dialout 4, 65 2008-10-26 13:22 /dev/ttyS1
| crw-rw---- 1 root dialout 4, 66 2008-10-26 13:22 /dev/ttyS2
| crw-rw---- 1 root dialout 4, 67 2008-10-26 13:22 /dev/ttyS3
`---

Gruß
Dominique Görsch

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 3) wenn ich ein String vom dem Mikrocontroller sendet, mit cat Befehle
> sehe ich das String.

Damit hast du Leserecht für /dev/ttyS1. Wenn du Leserecht hast, hast du
mit ziemlicher Sicherheit auch Schreibrecht. Die Schreib-/Leserechte
werden mit
ls -l /dev/ttyS1

angezeigt.

Was passiert, wenn du einfach
echo Hallo >/dev/ttyS1

eingibst?

- Erscheint die Fehlermeldung "Permission denied"? Dann hast du
  tatsächlich kein Schreibrecht.

- Erscheint eine andere Fehlermeldung? Dann diese bitte posten.

- Terminiert der Befehl sofort? Dann wurden die Daten wahrscheinlich
  gesendet, aber die Baudrate oder ein anderer RS-232-Parameter ist für
  Sender und Empfänger unterschiedlich gesetzt. Du solltest die
  Schnittstellenparameter mit stty überprüfen (s.u.).

- Hängt der Befehl, und du musst ihn mit ^C abbrechen? Dann ist
  wahrscheinlich der Hardware-Handhsake aktiviert. Auch in diesem Fall
  hilft stty weiter.

Mit
stty -aF /dev/ttyS1

werden die aktuellen Schnittstellenparameter angezeigt. Damit kannst du
die Baudrate, die Paritätseinstellung, Handshake uvm. überprüfen. Sind
die Parameter falsch eingestellt, kannst du sie ebenfalls mit stty
richtig einstellen.

> wenn ich das Befehl: chmod u+x /dev/ttyS1 eingebe, bekomme ich die
> Meldung Read only file system.

Dann kannst du auch als Root die Rechte nicht ohne weiteres ändern. Du
müsstest erst das Dateisystem, auf dem sich /dev befindet, read/write
mounten. Ist dieser Linux-Rechner ein gewöhnlicher PC oder irgend so ein
Embedded-Gerät ohne Festplatte?

Aber wie gesagt, wahrscheinlich liegt das Problem nicht bei den
Schreib-/Leserechten, deswegen musst du sie auch nicht ändern.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo yalu,
ich habe wie du gesagt habe
1) ls -l /dev/ttyS1
2) echo Hallo >/dev/ttyS1 es hängt an der stelle
 ich habe kein harware handshare aktiviert, aber ich habe das canonical 
input aktiviert. Kann es die Fehler veruarsachen.

danke

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es wenn du auch die Meldungen der Befehle postest?

Autor: Mano Wee (Firma: ---) (manow)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 2) echo Hallo >/dev/ttyS1 es hängt an der stelle

Das hängt auch bei mir, aber ich besitze keine Serielle-Schnittstelle. 
Wenn ich meinen USB-RS232 Adapter anstecke, dann funkt. des nur, wenn 
ich an /dev/cu.UC-232AC (also nicht /dev/tty.UC-232AC) die Sachen 
schicke. Das liegt aber daran, dass ich OS X als Betriebsystem hab und 
unter darwin (bsd) ist es bissl anders als unter Linux (soweit ich das 
mitbekommen habe).

Die Frage ist vllt überflüssig, aber Du bist sicher, dass deine 
Serielle-Schnittstelle das Device ttyS1 ist?

Autor: tata (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier mal:
echo Hallo > /dev/pts/1 
auf tty* darf der User nie schreiben und das ist auch gut so. Kann sein,
dass du dich noch der Gruppe tty oder so hin zu fügen musst. Der
Gruppenname ist abhängig von deiner Distribution und ob du auf einem PC
bist, bei einer Embedded-Büchse kann das wiederum ganz anders aussehen.

Bist du dir sicher, dass du auf das zweite Device also 1 schreiben
willst und nicht auf das erste also 0?

Autor: Dominique Görsch (dgoersch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tata wrote:
> auf tty* darf der User nie schreiben und das ist auch gut so. Kann sein,
> dass du dich noch der Gruppe tty oder so hin zu fügen musst. Der
> Gruppenname ist abhängig von deiner Distribution und ob du auf einem PC
> bist, bei einer Embedded-Büchse kann das wiederum ganz anders aussehen.

Schrieb ich das nicht schon? ;)

Gruß
Dominique Görsch

Autor: Hans-jürgen Herbert (hjherbert) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du schon versucht mit gtkterm oder mit minicom die Schnittstelle zu 
verwenden?

Autor: Hans-jürgen Herbert (hjherbert) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast bestimmt auch schon http://tldp.org/HOWTO/Serial-HOWTO.html 
gelesen?

Autor: tata (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> auf tty* darf der User nie schreiben und das ist auch gut so. Kann sein,
>> dass du dich noch der Gruppe tty oder so hin zu fügen musst. Der
>> Gruppenname ist abhängig von deiner Distribution und ob du auf einem PC
>> bist, bei einer Embedded-Büchse kann das wiederum ganz anders aussehen.
> Schrieb ich das nicht schon? ;)
>
Ups. ;-)
Naja, erstmal muss  'Gast (Gast)' bzw.  'gast (Gast)' antworten. ;-)

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mit Linux noch nicht so viel Erfahrungen aber meine Anwendung, die 
Daten über Serielle Ports einsammelt, hat die Gruppe uucp um den 
verwendeten Usernamen erweitert. Also schau mal nach der Gruppe uucp, ob 
der angemeldete User dort Member ist oder nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.