RTS-Leitung via Shell-Script setzen ?

HeinzS
Beiträge: 2
Registriert: Donnerstag 5. Januar 2006, 14:56

RTS-Leitung via Shell-Script setzen ?

Beitrag von HeinzS »

Hallo,

weiß jemand, ob man ohne C-Programm, also via Shell, die RTS-Leitung des seriellen Ports manipulieren kann ?

Der Hintergrund: Das Starten des Rechners mit WOL führt gelegentlich zu Problemen (in der Regel bei Serien). Nun möchte ich den Rechner mit Wake on Ring starten. Dazu die RTS-Leitung mit der RI-Leitungs des PC verbinden und mit einem kleinen Script einen Puls auslösen.
Mac23
Einsteiger
Einsteiger
Beiträge: 127
Registriert: Donnerstag 23. Oktober 2003, 20:50

Beitrag von Mac23 »

Hallo,

ich hab das ganze vor einiger Zeit auch mit einem Router gemacht. Ein spezielles Programm habe ich dafür nicht gefunden (bzw. kaum gesucht). Ein kleines C-Programm war da weniger Aufwand ;)

Ich hab Dir mal meins von damals angehangen - ich weiss aber nicht mehr ob es die RTS-Leitung als RING benutzt - ich hab mir damals einfach das Kabel am entsprechenden Pin angelötet.

Also vielleicht hilft Dir ja diese Vorlage + man ioctl:

Code: Alles auswählen

#include <stdio.h>   /* Standard input/output definitions */
#include <string.h>  /* String function definitions */
#include <unistd.h>  /* UNIX standard function definitions */
#include <fcntl.h>   /* File control definitions */
#include <errno.h>   /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */

/*
 * 'open_port()' - Open serial port 1.
 *
 * Returns the file descriptor on success or -1 on error.
 */

int main(int argc, char *argv[]) {
	int fd; /* File descriptor for the port */
   	int status;


  	fd = open("/dev/ttyS0", O_RDWR | O_NDELAY);
  	if (fd == -1)
  	{
	   /*
    	* Could not open the port.
    	*/

    	perror("open_port: Unable to open /dev/ttyS0 - ");
  	} else {
    	printf("Port /dev/ttyS0 opened!\n");

		ioctl(fd, TIOCMGET, &status);

		status &= TIOCM_RNG;
		
		
		ioctl(fd, TIOCMSET, status);
    }

  return 0;
} 
P.S.: alle includes werden nicht gebraucht - war damals auch nur auf die schnelle...
HeinzS
Beiträge: 2
Registriert: Donnerstag 5. Januar 2006, 14:56

Beitrag von HeinzS »

Vielen Dank für die schnelle Antwort.

Genau in der C-Routine liegt mein Problem. Da ich mich normalerweise nur mit Programmierung unter MS und Mikrocontrollern beschäftige, habe ich keine Entwicklungsumgebung zur Programmierung unter Linux. Und nur für diese kleine Anwendung habe ich den Aufwand bisher gescheut. (Man kennt das ja, geplant sind 2 Stunden, nachher sinds Tage). Deshalb auch der Ansatz, die Sache mit einem Script zu lösen.

Ansonsten schon mal vielen Dank. Wenn alle Stricke reißen, werde ich wohl in den sauren Apfel beißen müssen. Dann habe ich wenigsten schon mal
den Anfang.