RS485 Linux-Programming

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren