ich habe ein PC mit RS485 Schnittstelle der Chip ist ein "serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A".
Ich habe diese Test Programm ausprobiert:
Code: Alles auswählen
/* 485-example.c : Basic example of RS485 half duplex transmission */
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
#include <sys/ioctl.h>
#include <asm/ioctls.h>
#include <linux/serial.h>
int main(void)
{
char dev[] = "/dev/ttyS0";
char tosend[] = {'A', 'B', 'C'};
struct serial_rs485 ctrl485;
int status;
int fd;
struct termios ti;
speed_t speed;
/* Open the port */
fd = open(dev, O_RDWR);
if (fd < 0) {
printf("%s: Unable to open.\n", dev);
return -1;
}
/* Set the port in 485 mode */
ctrl485.flags = SER_RS485_ENABLED | SER_RS485_RTS_ON_SEND;
ctrl485.delay_rts_before_send = 0;
ctrl485.delay_rts_after_send = 0;
status = ioctl(fd, TIOCSRS485, &ctrl485);
if (status) {
printf("%s: Unable to configure port in 485 mode, status (%i)\n", dev, status);
return -1;
}
/* Set the port speed */
speed = B9600;
tcgetattr(fd, &ti);
cfsetospeed(&ti, speed);
cfsetispeed(&ti, speed);
tcsetattr(fd, TCSANOW, &ti);
/* Send content to RS485 */
if (write(fd, tosend, sizeof(tosend)) != sizeof(tosend)) {
printf("%s: write() failed\n", dev);
}
return 0;
}
Und irgdnwie kann er diese TIOCSRS485 Eigenschaften nicht setzten....
Kann der Chip das nicht? Ich steh da irgendwie auf dem Schlauch...........
Ich habe schon versucht mit minicon über RS485 zu kommunizieren aber ich kann irgdnwei nur sende....empfangen geht gar nicht
Wäre nett wenn jemand einen Tip hat