RS485 Linux-Programming

OP #1396310
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
Persönliche Seite
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.
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.