www.mikrocontroller.net

Forum: PC-Programmierung Serielle Schnittstelle


Autor: Alf R. (bitbit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Ziel ist es ein oder mehrere LEDs direkt über die serielle 
Schnittstelle anzusprechen.Und einen Tastendruck an den PC zu 
übertragen.
Vergleichbar mit diesem Projekt:
http://www.hsg-kl.de/faecher/inf/msr/seriell/index.php
Wie realisiere ich das unter Linux in C?
Wie setzte ich die einzelnen Datenleitungen(RTS...)auf 1 bzw. 0
Gibt es dafür ein Konsolenprogramm?
Und wo finde ich überdieses Thema weitere Informationen?
Mfg bitbit

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alf R. schrieb:

> Wie realisiere ich das unter Linux in C?
> Wie setzte ich die einzelnen Datenleitungen(RTS...)auf 1 bzw. 0
> Gibt es dafür ein Konsolenprogramm?
> Und wo finde ich überdieses Thema weitere Informationen?

http://www.mikrocontroller.net/articles/Ports_benutzen_(GCC)

Achtung: Die Forensoftware hat einen bekannten Bug und meint die 
verlinkte Seite sei nicht vorhanden. Aber die schliessende Klammer 
gehört mit zu Link! Also diese nach dem Aufruf in der Adresszeile des 
Browsers manuell nachtragen.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan B. schrieb:
> Achtung: Die Forensoftware hat einen bekannten Bug und meint die
> verlinkte Seite sei nicht vorhanden.

Die Forensoftware meint das nicht, aber sie verstümmelt derartige Links.

Abhilfe ist das Ersetzen der schließenden Klammer durch ihren 
"quoted-printable-Code" %29.

http://www.mikrocontroller.net/articles/Ports_benu...

Autor: bitbit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau das habe ich gesucht.
Aber jetzt habe ich noch eine Frage zum Quellcode:
int i;
ioctl (port, TIOCMGET, &i); 
Was ist mit TIOCMGET gemeint, welcher Wert landet durch die Funktion in 
der Variablen i?
if ( (i & TIOCM_CD) == TIOCM_CD) //??????????????
{
  // am Pin liegt Spannung an (3 bis 12V)
}
else
{
  // am Pin liegt keine Spannung an (0 bis -12V)
}
Auch dieser Codeabschnitt ist mir nicht ganz klar(TIOCM_CD?,
Bitvergleich mit i?)
Mfg bitbit

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> TIOCMGET ?

http://www.makelinux.net/ldd3/chp-18-sect-3.shtml
Code im µC.net Artikel ist möglicherweise nur für Kernel 2.4 und älter.

> if ( (i & TIOCM_CD) == TIOCM_CD) //??????????????
> Auch dieser Codeabschnitt ist mir nicht ganz klar(TIOCM_CD?,
> Bitvergleich mit i?)

Wenn Bit TIOCM_CD in i gesetzt ist, dann...
i wurde vorher gefüllt: ioctl (port, TIOCMGET, &i);
Bitmanipulation

Autor: bitbit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser Code ist mir noch nicht ganz klar:
int i = 0;
if (...) i |= TIOCM_RTS; // Pin RTS wird aktiviert (12V)
if (...) i |= TIOCM_DTR; // Pin DTR wird aktiviert (12V)
ioctl (port, TIOCMBIS, &i);
Was ist TIOCMBIS?
Warum werden TIOCM_RTS und TIOCM_DTR nicht direkt angesprochen?
Gruss bitbit

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt zu dem ganzen ioctl-Zeugs auch diverse Doku...

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bitbit schrieb:

> int i = 0;

Eine "leere" Variable anlegen. In dieser Variable werden wir unsere 
gewünschten Bits setzen.

> if (...) i |= TIOCM_RTS; // Pin RTS wird aktiviert (12V)
> if (...) i |= TIOCM_DTR; // Pin DTR wird aktiviert (12V)

Was wir hier durch hinzuODERn machen.

> ioctl (port, TIOCMBIS, &i);

Und die Adresse der Variablen geben wir an die Funktion ioctl() weiter.
Was die Funktion mit der Adresse machen soll, sagen wir im Parameter 
TIOCMBIS.

> Was ist TIOCMBIS?

Das "könnte" bedeuten: TTY IO Bits Setzen

> Warum werden TIOCM_RTS und TIOCM_DTR nicht direkt angesprochen?

Weil die Funktion ioctl hier die Schnittstelle zwischen Software und 
Hardware ist und die eben über Adresse einer Hilfsvariable (3. Argument) 
und Anweisung (2. Argument) arbeitet.

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.