PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232 und C++



Kernel-Error
09.08.07, 16:32
Hallo Zusammen,

ich könnte mal 2 - 3 Zeilen C++ Code gebrauchen.

Ich habe hier jemanden der hat ein tolles Hobby. Der hält alle paar Sekunden pin 7 CTS und pin 5 GND meiner RS232 Schnittstelle zusammen.

Jetzt würde ich gerne mitzählen, wie oft er dieses tut....

An der Stelle kommt nun der C++ Code ins Spiel!

Ich brauche also ein kleines Beispiel welches mir verdeutlicht wie ich meine RS232 Schnittstelle fragen kann ob PIN 7 nun auf Masse liegt und wenn ja dann irgendwas.....

Muss nichts besonders sein 1 - 2 Zeilen helfen mir da schon weiter.

Vielen Dank und beste Grüße


Kernel-Error

Freehawk
29.08.07, 18:46
Hallo,

ich habe in einem Programm diese Funktion angewendet.

Liest allerdings den Status von PIN 1 (CD) ein. Kannst aber auch den PIN 3 auf High setzten.

Also wenn du deinen Hardware ein wenig umbaust kannst diese Funktion benutzen oder umbauen.

Das Öffnen der Schnittstelle fehlt noch aber das dürfte auch kein Problem sein.


/* Funktion zum Einlesen des Portstates */
int getportstate(int fd, enum mode whichmode)
{
/* Variablen und Pointer Definition */
int state;

/* Hilfsspannung für High-Pegel (Pin 3) setzten aber nur im Senderbetrieb */
if (whichmode == sender)
{
ioctl(fd,TIOCSBRK);
sleep(1);
}

/* Einlesen des Status (Pin 1) */
ioctl(fd, TIOCMGET, &state);

/* Hilfsspannung für High-Pegel rücksetzten aber nur im Senderbetrieb */
if (whichmode == sender)
{
ioctl(fd,TIOCCBRK);
}

/* zurückgeben ob (0) oder ob nicht (1) */
if (state & TIOCM_CAR)
{
return (1);
}
else
{
return (0);
}
}

Gruß
Markus