PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ganz simpel - COM Port ansprechen - Unter Linux



pelipe2k7
09.01.2007, 10:52
Moin an alle :)

Also ich möchte gerne meinen COM-Port port ansprechen.
Nur ganz kurz eine Spannung anlegen. Und das ganze dann unter Linux..
Gibts da vll schon vorgefertigte Programme.. oder hat einer von euch noch nen alten quellcode .. ?
Danke schonmal im voraus..
LG
Philip

bad-joker
09.01.2007, 13:11
willst du den com port nicht als serielle benutz
en sondern nur um zb. taster abzufragen und leds anzusteuern? falls ja kann ich ja mal meinen alten code raussuchen, hab das mal unter linux gemacht.
thomas

Hobbes
09.01.2007, 13:48
Probier mal:


int SerialPort;
struct termios SerialPortOptions;
int SerialPortStatus;

if ( ( SerialPort = open(devFilepath, O_RDWR | O_NOCTTY | O_NDELAY) ) == -1 ){
perror("open_port: Unable to open /dev/ttyS0 - ");
}

fcntl(SerialPort, F_SETFL, 0);

tcgetattr( SerialPort, &SerialPortOptions );
cfsetispeed( &SerialPortOptions, B19200 );
cfsetospeed( &SerialPortOptions, B19200 ); // 19200 bautrate
SerialPortOptions.c_cflag &= ~PARENB; // No parity
SerialPortOptions.c_cflag &= ~CSTOPB; // 1 stopbit
SerialPortOptions.c_cflag &= ~CSIZE; // 8 databits
SerialPortOptions.c_cflag |= CS8;
SerialPortOptions.c_cflag &= ~CRTSCTS; // no hardware flow control
SerialPortOptions.c_cflag |= (CLOCAL | CREAD); // Enable receiver & local mode
SerialPortOptions.c_iflag |= (INPCK | ISTRIP);
cfmakeraw( &SerialPortOptions ); // RAW data
tcsetattr( SerialPort, TCSAFLUSH, &SerialPortOptions );

// DTR=1 RTS=0
ioctl(SerialPort, TIOCMGET, &SerialPortStatus);
SerialPortStatus |= TIOCM_DTR;
SerialPortStatus &= ~TIOCM_RTS;
ioctl(SerialPort, TIOCMSET, &SerialPortStatus);

// wirklicher Code mit read und write kommt hier her

close(SerialPort);


Wobei devFilepath musst du halt durch dein serielles Port ersetzen (zB /dev/ttyS0)