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
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ß,
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.