Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » rs232 und Linux??

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.06.2007, 11:58 Uhr
RedEagle



Hi
Ich möchte eigentlich nur ein paar zeichen von einem PC zu nem andreren schichen (per nullmodem)

Unter Windows habe ich die rs232 so initialisiert:

C++:
HANDLE init()
{

HANDLE h_com = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0 , NULL);
DCB dcb;
COMMTIMEOUTS cto;

GetCommState(h_com, &dcb);

dcb.BaudRate = 115200;
dcb.ByteSize = 8;
dcb.Parity   = NOPARITY;
dcb.StopBits = ONESTOPBIT;
    
SetCommState(h_com, &dcb);

GetCommTimeouts(h_com,&cto);

cto.ReadTotalTimeoutConstant=0;
cto.ReadTotalTimeoutMultiplier=0;

SetCommTimeouts(h_com,&cto);

return h_com;
}


Wie bringe ich das jetzt unter linux zum laufen??
Folgenden code habe ich jetzt zusammengefummelt.
Allerdings gibt es bereits bei den open ein problem (-1 wird zurückgegeben)

C++:
int open_port(void)
{
int fd; /* File descriptor for the port */

fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);

if(fd == -1) //port konnte nicht geöffnet werden
{
  perror("open_port: Unable to open /dev/ttyS0 - ");
  return -1;
}

fcntl(fd, F_SETFL, 0);

struct termios options;
// Get the current options for the port...
tcgetattr(fd, &options);

// Set the baud rates to 19200...
cfsetispeed(&options, B115200);
cfsetospeed(&options, B115200);

// Enable the receiver and set local mode...
options.c_cflag |= (CLOCAL | CREAD);

options.c_cflag &= ~CSIZE; /* Mask the character size bits */
options.c_cflag |= CS8;    /* Select 8 data bits */

options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;

// Set the new options for the port...
tcsetattr(fd, TCSANOW, &options);

return (fd);
}


Was ich genau passiert:
Ein PC sendet dauernd zeichen (mit 115200baud, keine parität). Diese möchte ich empfangen. dabei kann es sein, das der PC bereits am senden ist, oder noch nicht angefangen hat.
Ich selber möchte (erstmal) nicht senden, nur empfangen.
Verbunden sind die PCs mit einem nullmodem.
--
MFG RedEagle

Dieser Post wurde am 28.06.2007 um 11:59 Uhr von RedEagle editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: