Martin Angler wrote:

> Hallo,
> 
> ich habe ein Programm geschrieben, das Daten über eine RS-232
> Schnittstelle einlesen soll. Nun möchte ich es gerne testen, habe aber
> an meinem Computer nur eine RS-232er Schnittstelle. Ein weiterer
> Computer zum Senden von Testdaten an meine RS-232 steht mir leider
> auch nicht zur Verfügung. Das Programm muss aber dringend getestet
> werden. Deswegen meine Frage:
> 
> Kann ich vielleicht so etwas wie eine virtuelle serial-Verbindung
> herstellen? Kann man das mit ptys realisieren? Oder brauche ich so
> etwas wie einen virtual serial port driver?

Warum postest du hier? de.comp.os.unix.programming ist besser geeignet.
fup gesetzt.

Ich würde einmal sagen, du kannst ohne Probleme mit einem ptys das
Programm schreiben, das einzige was du nicht testen kannst sind die
termios Optionen ob die dann wirklich mit deinen Hardwareanforderungen
funktionieren.

Hinten gibts ein kleines open_port [0] als Hilfe, es gibt aber
massenhaft howtos dafür im Internet.

mfg Markus


[0]
int open_port (char * PORT)
{
        struct termios options;
        int fd; // Filedeskriptor
        fd = open (PORT, O_RDWR | O_NOCTTY | O_NONBLOCK | O_SYNC);
        // fd = open ("/dev/ttyS0", O_WRONLY | O_NOCTTY | O_NDELAY);
        // fd = open ("/dev/ttyS0", O_RDWR | O_NOCTTY);
       /*Öffne serielle Schnittstelle ttyS1 mit folgenden Eigenschaften:
         * O_RDWR read and write
         * O_NOCTTY es handelt sich um keine Konsole
         * O_NONBLOCK nicht blockieren
         * O_SYNC warte bei jeden write aufruf, bis er fertig ist*/
        if (fd < 0) // negative Zahl bei fehler!
        {
                fprintf(stderr, "Open_port: unable to open %s\n", PORT);
                exit (1);       // irreparebel, verlasse Programm
        }
        fcntl (fd, F_SETFL, O_ASYNC);
        tcgetattr (fd, &options);
                // verlange die aktuellen Einstellungen
        cfsetispeed (&options, B9600);  // ändere die Baud-rate auf 9600
        cfsetospeed (&options, B9600);  // ändere die Baud-rate auf 9600
        options.c_cflag |= (CLOCAL | CREAD);    // auch lesen möglich
        options.c_cflag &= ~PARENB;     // keine Paritätbits
        options.c_cflag &= ~CSTOPB;     // nur ein Stop-bit
        // options.c_cflag |=  CSTOPB;  // 2 Stopbits
        options.c_cflag &= ~CSIZE;
        // lösche Datenbitseinstellung, damit nächster Befehl gültig ist
        options.c_cflag |= CS8; // select 8 Databits
        options.c_cflag &= ~CRTSCTS;    // disable Hardwareflow control
        // options.c_lflag &= ~(ICANON | ECHO | ISIG);  // raw data
        cfmakeraw (&options);           // real raw!
        tcsetattr (fd, TCSANOW, &options);
        return fd;
}
-- 
Linux, the choice          | Ändern und bessern ist zweierlei.  --
of a GNU generation   -o)  | Sprichwort  
Kernel 2.6.6           /\  | 
on a i686             _\_v | 


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)

Antwort per Email an