Good to Know Database

CentOS 6: LCD-Anzeige der Toshiba Magnia SG-Serie ansteuern


In diesem Tutorial möchte ich beschreiben wie Sie unter CentOS 6 die LCD-Anzeige der Toshiba Magnia SG-Serie ansteuern können. Am Ende dieses Tutorials können Sie die Ausgaben am Display selber konfigurieren und den Appliance-Server mit Hilfe des Power-Buttons herunterfahren.

Programme installieren

Damit man etwas auf dem Display ausgeben kann und die Tasten funktionieren, benötigt man zwei Programme welche man erst kompilieren muss. Dazu benötigen Sie den gcc welchen Sie jetzt installieren sollten wenn er noch nicht installiert ist.

[root@centos6 ~]# yum install gcc

Laden Sie sich anschließend das Sourcecode-Archiv herunter und entpacken es unter /usr/src.

[root@centos6 ~]# cd /usr/src/
[root@centos6 src]# wget http://www.gtkdb.de/download_57.html -O sg-source1.1.tar.gz
[root@centos6 src]# tar xzf sg-source1.1.tar.gz

Nachdem Sie das Archiv entpackt haben kompilieren Sie die beiden Programme wie folgt.

[root@centos6 src]# cd sg-source1.1
[root@centos6 sg-source1.1]# gcc lcdkbd.c -o lcdkbd && strip lcdkbd
[root@centos6 sg-source1.1]# gcc setlcd.c -o setlcd && strip setlcd

Kopieren Sie anschließend die kompilierten Programme in das Verzeichnis /usr/bin/.

[root@centos6 sg-source1.1]# cp lcdkbd setlcd /usr/bin/

Sie können bereits jetzt den ersten Text auf der LCD-Anzeige ausgeben. Dazu rufen Sie das Programm setlcd mit der Option -c auf und übergeben den gewünschten Text in Anführungszeichen. Die Option -c benötigen Sie um den aktuellen Displayinhalt zu löschen und den Courser an den Anfang zu setzen.

[root@centos6 sg-source1.1]# /usr/bin/setlcd -c "Hallo Welt"

Skripte einrichten

Kommen wir nun zu den Ausgabeskripten welche automatisch von lcdkbd aufgerufen werden. Ich habe bereits einige Beispielskripte geschrieben welche Sie wie folgt herunterladen können. Kopieren Sie das Archiv ebenfalls nach /usr/src/, entpacken es und kopieren die Skripte nach /usr/local/sglcd/.

[root@centos6 ~]# cd /usr/src/
[root@centos6 src]# wget http://www.gtkdb.de/download_59.html -O sg-skripte1.0-centos.tar.gz
[root@centos6 src]# tar xzf sg-skripte1.0-centos.tar.gz
[root@centos6 src]# cp -R sg-skripte1.0-centos/sglcd /usr/local/

Eine Auflistung der verfügbaren Skripte erhalten Sie im nächsten Abschnitt.

Testen Sie jetzt ob lcdkbd und die Skripte funktionieren. Dafür rufen Sie lcdkbd gefolgt von der Anzahl der Skripte auf. In diesem Fall werden nur die ersten fünf Skripte angegeben, da diese auf jedem System funktionieren sollten.

[root@centos6 ~]# /usr/bin/lcdkbd 5

Überprüfen Sie jetzt ob die Tasten funktionieren und ob die Anzeige mit dem Taster für das Display umgeschaltet wird. Funktioniert soweit alles beenden Sie das Programm mit Strg+C.

Init-Skripte anlegen

Damit beim Systemstart lcdkbd automatisch gestartet wird und beim Herunterfahren des Systems wieder beendet wird, erstellen Sie das Init-Skript /etc/rc.d/init.d/lcdkbd.

[root@centos6 ~]# vi /etc/rc.d/init.d/lcdkbd

Fügen Sie in die /etc/rc.d/init.d/lcdkbd den folgenden Code ein.

Hinweis: Passen Sie gegebenenfalls die Anzahl der Skripte im Start-Abschnitt an. Standardmäßig werden Datum, Uhrzeit, die IP-Adressen und die Traffic-Statistiken angezeigt.

#!/bin/sh

# chkconfig: 2345 99 00
# description: start and stop lcdkbd

lockfile=/var/lock/subsys/lcdkbd

start() {
  echo "Starting lcdkbd..."
  /usr/bin/lcdkbd 5 &
  RETVAL=$?
  [ $RETVAL -eq 0 ] && touch $lockfile
  echo
  return $RETVAL
  }

stop() {
  echo "Shutting down lcdkbd..."
  /usr/bin/killall /usr/bin/lcdkbd
  RETVAL=$?
  [ $RETVAL -eq 0 ] && rm -f $lockfile
  echo
  }

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    ;;
esac

exit 0

Nachdem Sie das Init-Skript erstellt haben, ändern Sie die Zugriffsrechte wie folgt.

[root@centos6 ~]# chmod 0755 /etc/rc.d/init.d/lcdkbd

Damit das Init-Skript in den Runlevel-Verzeichnissen verlinkt wird rufen Sie noch den folgenden Befehl auf.

[root@centos6 ~]# chkconfig --add lcdkbd

Erstellen Sie als nächstes ein Init-Skript welches beim Starten und Herunterfahren des Systems eine entsprechende Meldung auf der LCD-Anzeige anzeigt.

[root@centos6 ~]# vi /etc/rc.d/init.d/setlcd

Fügen Sie in die /etc/rc.d/init.d/setlcd den folgenden Code ein.

#!/bin/sh

# chkconfig: 2345 00 01
# description: print start-up and shutdown message

lockfile=/var/lock/subsys/setlcd

start () {
  /usr/bin/setlcd -c "Starting OS..."
  RETVAL=$?
  [ $RETVAL -eq 0 ] && touch $lockfile
  echo
  return $RETVAL
}

stop () {
  /usr/bin/setlcd -c "Shutting down..."
  RETVAL=$?
  [ $RETVAL -eq 0 ] && rm -f $lockfile
  echo
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    start
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart}"
esac

exit 0

Nachdem Sie das Init-Skript erstellt haben, ändern Sie wieder die Zugriffsrechte.

[root@centos6 ~]# chmod 0755 /etc/rc.d/init.d/setlcd

Anschließen verlinken Sie das Init-Skript wieder in den Runlevel-Verzeichnissen.

[root@centos6 ~]# chkconfig --add setlcd

Damit beim Herunterfahren des Systems der Server automatisch ausgeschaltet wird, müssen Sie noch ein drittes Init-Skript erstellen.

[root@centos6 ~]# vi /etc/rc.d/init.d/autopoweroff

Kopieren Sie den folgenden Code in die /etc/rc.d/init.d/autopoweroff.

Hinweis: Durch den Parameter -2 beim Aufruf von setlcd wird das System erst nach einer Verzögerung von 20 Sekunden ausgeschaltet. Damit wird sichergestellt, dass alle Prozesse rechtzeitig beendet und alle Laufwerke erfolgreich ausgehängt wurden. Die Option -1 steht für eine PowerDownTime von 10 Sekunden. Sollten Sie eine längere PowerDownTime benötigen, stehen ihnen noch die Optionen -3 (30 Sekunden) und -6 (60 Sekunden) zur Verfügung.

#!/bin/sh

# description: send power off signal

start() {
  echo "Sending power off signal (20s delay)..."
  /usr/bin/setlcd -2 ""
  }

case "$1" in
  start)
    start
    ;;
  *)
    echo "Usage: $0 {start}"
    ;;
esac

exit 0

Danach ändern Sie wieder die Zugriffsrechte des Init-Skripts.

[root@centos6 ~]# chmod 0755 /etc/rc.d/init.d/autopoweroff

In diesem Fall erstellen Sie den Link im Verzeichnis /etc/rc.d/rc0.d/ manuell.

[root@centos6 ~]# ln -s ../init.d/autopoweroff /etc/rc.d/rc0.d/S00autopoweroff

Damit alle Dienste gestartet werden und zur Funktionskontrolle sollten Sie zum Abschluss das System neu starten.

[root@centos6 ~]# shutdown -r now

Beispielskripte

In diesem Abschnitt möchte ich kurz die Skripte, welche Sie hier downloaden können, auflisten.

Datum und Uhrzeit

setlcd -c "   `date "+%d.%m.%Y"`" "    `date +%T`"

IP-Adresse

setlcd -c "eth0:" `ifconfig eth0 | grep inet | cut -d ":" -f 2 | cut -d " " -f 1`

Trafficanzeige

setlcd -c "RX: `ifconfig eth0 | grep "RX bytes" | cut -d "(" -f 2 | cut -d ")" -f 1`" "TX: `ifconfig eth0 | grep "TX bytes" | cut -d "(" -f 3 | cut -d ")" -f 1`"

Status des DHCP-Servers

setlcd -c "DHCP-Server:" `service dhcpd status | sed -e 's/dhcpd //' | cut -d")" -f2 | sed -e 's/^ //' -e 's/\.//g'`

Status des Samba-Servers

setlcd -c "Samba:" `service smb status | grep smbd | sed -e 's/smbd //' | cut -d")" -f2 | sed -e 's/^ //' -e 's/\.//g'`

Status des NFS-Servers

setlcd -c "NFS-Server:" `service nfs status | grep nfsd | sed -e 's/nfsd //' | cut -d")" -f2 | sed -e 's/^ //' -e 's/\.//g'`

Status des Apache2-Servers

setlcd -c "Apache2:" `service httpd status | sed -e 's/httpd //' | cut -d")" -f2 | sed -e 's/^ //' -e 's/\.//g'`

Status des MySQL-Servers

setlcd -c "MySQL:" `service mysqld status | sed -e 's/mysqld //' | cut -d")" -f2 | sed -e 's/^ //' -e 's/\.//g'`

Downloads

sg-source1.0.tar.gz
sg-source1.1.tar.gz
sg-skripte1.0-centos.tar.gz


Dieser Eintrag wurde am 26.08.2011 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_1355.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer