PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gerät an serieller Schnittstelle meldet sich nicht



nobody0
29.01.03, 16:49
Ich habe ein Gerät (Fahrrad-Ergometer) an der ersten seriellen Schnittstelle (RS232), mit der Einstellung 9600,8,n,1, das unter Win mit einem closed-Source-Programm funktioniert, sich aber über /dev/ttyS0 nicht ansprechen lässt :(
Woran kann das liegen?

Ich verwende diese Parameter:


*Setzen der Inputflags*/
settings.c_iflag = IGNBRK /*Ignoriere BREAKS beim Input */
| IGNPAR; /*Keine Parität */

/*Setzen der Outputflags*/
settings.c_oflag = 0; /*Keine besonderen Angaben nötig */

/*Setzen der Controlflags*/
settings.c_cflag = CS8 /*Setze acht Bit pro Byte */
// | CSTOPB /* Ein (auskommentiert) / Zwei Stopbit*/
| CREAD /*Zeichen können gelesen werden */
| CLOCAL; /*Ignoriere Modemstatus (Inversion), lokaler Anschluß */

/*Setzen der lokalen Flags*/
settings.c_lflag = 0; /*Keine besonderen Angaben nötig */

/*Festlegen der minimalen Anzahl der zu lesenden Bytes -> Fall 3*/
settings.c_cc[VMIN] = 0;

// 8N1
settings.c_cflag &= ~PARENB;
//settings.c_cflag &= ~CSTOPB;
settings.c_cflag &= ~CSIZE;
settings.c_cflag |= CS8;

/*Setzen der Übertragungsgeschwindigkeit */
/* 9600 Bit/s */
settings.c_cc[VTIME] = 20; // max. 2s warten
if (cfsetispeed (&settings, B9600) != 0)
{
fprintf (stderr, "Fehler beim Setzen der ");
fprintf (stderr, "Übertragungsgeschwindigkeit auf %s !\n", device);
return (-1);
}
if (cfsetospeed (&settings, B9600) != 0)
{
fprintf (stderr, "Fehler beim Setzen der ");
fprintf (stderr, "Übertragungsgeschwindigkeit auf %s !\n", device);
return (-1);
}

/*Setzen des RTS-Signals*/
modelines &= ~TIOCM_RTS;
if (ioctl (fd, TIOCMSET, &modelines) == -1)
{
fprintf (stderr, "Fehler bei ioctl TIOCMSET auf %s !\n", device);
return (-1);
}