mikrocontroller.net

Forum: PC-Programmierung RS485 Linux-Programming


Autor: Christian Koopson (koopson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moin ich brauche da mal eine rat.

ich versuche seid tagen die RS485-Schnittstelle unter linux ( C Language 
) zu implementieren. ich habe hier zu mich an dieses Bsp. gehalten

http://developer.axis.com/wiki/doku.php?id=rs485

struct rs485_ctrl {
unsigned short rts_on_send;
unsigned short rts_after_sent;
unsigned int delay_rts_before_send;
unsigned short enabled;
};

// ...

// Set the port in 485 mode
ctrl485.rts_on_send = 0;
ctrl485.rts_after_sent = 1;
ctrl485.delay_rts_before_send = 0;
ctrl485.enabled = 1;
status = ioctl(fd, TIOCSERSETRS485, &ctrl485);
if (status) {
printf("ERROR PORT 1! TIOCSERSETRS485 failed %i\r\n", status);
return -1;
}


Über die struktur soll die Schnittstelle für RS485 konfiguriert werden. 
und über die Funktion ioctl(fd, TIOCSERSETRS485, &ctrl485); gesetzt 
werden. Mein Problem ist, das der Wert von TIOCSERSETRS485 nicht erkannt 
wird. Dieser sollte in asm/ioctls.h drin stehen. was er aber nicht tut. 
daher habe ich ihn selber festgelegt.

#define TIOCSERSETRS485 0x5461
#define TIOCSERWRRS485 0x5462

Allerdings gibt die Funktion ioctl(fd, TIOCSERSETRS485, &ctrl485); immer 
einen Fehler aus. Hat einer schon Erfahrungen gesammelt?

Gruss

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

Bewertung
0 lesenswert
nicht lesenswert
Verwendest Du denn eine Schnittstellenhardware und den zugehörigen 
Devicetreiber, die RS485 unterstützen? Die normale PC-UART tut das 
nämlich nicht; da muss die Sendersteuerung "von Hand" durch eine 
Handshakeleitung nachgebildet werden.

Eine Hardwareunterstützung bieten z.B. die UARTs von Oxford 
Semiconductor, die man auf manchen PCI-/PCIe-Karten findet, oder manche 
USB-zu-Seriell-Bridges wie der FT232.

Autor: Oliver R. (superberti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Rufus hat vollkommen recht, erst mit der passenden Hardware kannst du 
den Transceiver von Senden auf Empfangen umstellen. Der OxPCI954 kann 
das z.B. und von Korenix gibt es entsprechende Karten.
Ansonsten kommst Du um das Abändern Deines Treibers nicht herum, es muss 
halt im passenden Moment der Transceiver geschaltet werden.
Da ich das für unsere Embedded-Hardware (MPC5200 UART) schon einmal 
durch habe, könnte ich Dir sicher ein paar Tips geben...

Gruß,

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.