Forum: PC-Programmierung Linux Befehl für UART


von Gast (Gast)


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

von Wegstaben V. (wegstabenverbuchsler)


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.

von Hans-jürgen H. (hjherbert) Benutzerseite


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.

von Michael K. (mmike)


Lesenswert?

Hast auch Schreibrechte auf die Schnittstelle ?

von gast (Gast)


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

von Matrix M. (matrixman86)


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

von gast (Gast)


Lesenswert?

aber wie

von ... .. (docean) Benutzerseite


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)

von gast (Gast)


Lesenswert?

ich kriege die selbe Meldung und dazu sudo not found

von Tim (Gast)


Lesenswert?

nb: Erst mit -e mach echo aus \n einen Zeilenumbruch.

von Bernhard M. (boregard)


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...

von Dominique G. (dgoersch)


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

von yalu (Gast)


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
1
ls -l /dev/ttyS1

angezeigt.

Was passiert, wenn du einfach
1
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
1
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.

von gast (Gast)


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

von Gast (Gast)


Lesenswert?

Wie wäre es wenn du auch die Meldungen der Befehle postest?

von Mano W. (Firma: ---) (manow)


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?

von tata (Gast)


Lesenswert?

Probier mal:
1
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?

von Dominique G. (dgoersch)


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

von Hans-jürgen H. (hjherbert) Benutzerseite


Lesenswert?

Hast du schon versucht mit gtkterm oder mit minicom die Schnittstelle zu 
verwenden?

von Hans-jürgen H. (hjherbert) Benutzerseite


Lesenswert?

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

von tata (Gast)


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. ;-)

von Manfred (Gast)


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.

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.