##Header includieren
#include <stdio.h>
#include <stdlib.h>
int main()
{
int LPT1_Port = 632;
//Portnummer in Dezimal = 632, Hex = 0x378
int normal = 127;
//Zustand des Ports, wenn schalter nicht gedrückt
//Rechte auf Port vergeben
ioperm( LPT1_Port, 3, 1 );
//Alle Outs ausschalten
outb( 0, LPT1_Port );
if( inb( LPT1_Port + 1 ) != normal )
{
exit( 0 );
}
else
{
exit( 1 );
}
//Rechte auf Port wieder abgeben
ioperm( LPT1_Port, 3, 0 );
}
gcc -o lptest lptest.c
rm /tmp/runterfahren
while[ 1 ];
do
if [ test -e /tmp/runterfahren ]; then
exit;
else
/da/wo/dein/Programm/liegt/lptest && /sbin/shutdown -h now && touch /tmp/runterfahren;
fi
sleep 1;
done
sh /da/wo/dein/script/liegt/script.sh &
Das ist nicht ganz richtig. Einige Pins werden wieder invertiert, und maximal gibt es auch nur 5 statt 8.Dr. Glastonbury schrieb:int normal = 127;
//Zustand des Ports, wenn schalter nicht gedrückt
Hmm, vielleicht hast du das zu "früh" gelesen... hab noch einige Male meinen Post editiertjengelh schrieb:Das ist nicht ganz richtig. Einige Pins werden wieder invertiert,...Dr. Glastonbury schrieb:int normal = 127;
//Zustand des Ports, wenn schalter nicht gedrückt
Wo hab ich da was von 8 geschrieben? Ich hab drei Eingänge aufgezählt -> falls du Pin 18-25 meinst: Das sind einfach alle Masse-Pins und bei denen ist es egal, welchen man nimmt......und maximal gibt es auch nur 5 statt 8.
##Header includieren
#include <stdio.h>
#include <stdlib.h>
int main()
{
int LPT1_Port = 632;
//Portnummer in Dezimal = 632, Hex = 0x378
int normal = 127;
//Zustand des Ports, wenn schalter nicht gedrückt
//Rechte auf Port vergeben
ioperm( LPT1_Port, 3, 1 );
//Alle Outs ausschalten
outb( 0, LPT1_Port );
while( 1 )
{
if( inb( LPT1_Port + 1 ) != normal )
{
//System herunterfahren...
system( "/sbin/shutdown -h now" );
//Rechte auf Port wieder abgeben
ioperm( LPT1_Port, 3, 0 );
exit( 0 );
}
sleep( 1 );
}
}
/da/wos/programm/halt/liegt &
system ( "echo "`date +'%H:%M:%S Uhr am %d.%m.%Y am d.%m.%Y'`: System shudtown via LPT" >> /var/log/lptshutdown" );
static inline unsigned int decode_lpin(unsigned int value) {
return (val >> 3) ^ 16;
}
...
int nette_bitmask = decode_lpin(inb(0x379));
Das war dann wohl ein DB9-Serial-Port.Josef schrieb:Klingt echt super, aber ich hab grad den parrallelport zerlegt und hatte nur 9 Anschlusse, der Rest war nicht mehr verbunden *verwirrt*