Text: WebCam-Unterstützung

InhaltObjekteText



Die verwendete Rocrail-Version muss mindestens 9832 sein.


Einführung

Diese Funktion ist vor allem für die Überwachung unsichtbarer Stellen der Anlage von Interesse, z.B. in Schattenbahnhöfen.
Es können die preisgünstigen USB-WebCams verwendet werden; High-Definition-WebCams (hochauflösend) sind für für diese Anwendung unnötig. Für Test-Zwecke wurde eine Logitech C170 verwendet, die für ca. €20,- erhältlich ist.
Rocview zeigt die WebCam nicht als Bewegtbild, sondern als Standbild mit definierbarem Aktualisierungs-Intervall, der ausreicht, um zu sehen was passiert.
Es wird ein externes Erfassungs-Programm (capturing program) benötigt, um die Stand-Bilder bereitzustellen, die diese Funktion für Rocrail vom Betriebssystem unabhängig machen.
Siehe Absatz "Erfassungs-Script".

Mit den hier beschriebenen Lösungen kann die WebCam-Darstellung nur für einem RocView-Client realisiert werden.
Bei mehreren Clients und für RocWeb ist WebCam auf dem Server erforderlich.

Text-Einstellung


Der Inhalt des Text-Objektes muss auf das WebCam-Bild zeigen.
Die Aktualisierungs-Zeit in ms muss einen Wert von min. 100 haben. Ein guter Wert ist 500.
Eine Größenänderung des Text-Objektes kann mit den Raster-Werten cx und cy auf der Registerkarte “Allgemein” erfolgen.


Erfassungs-Script

Mac OS X

Das Tool WACAW wird auf Mac's für das Erfassen (capture) von Stand-Bildern einer WebCam verwendet.

#!/bin/bash
while :
do
  if [ ! -f /Users/rob/webcam1/picture.png ]; then
    echo "Snapping a new picture of the webcam..."  
    ./wacaw -d 2 --png /Users/rob/webcam1/_picture
    mv /Users/rob/webcam1/_picture.png /Users/rob/webcam1/picture.png
  fi 
  sleep 0.25
done

(Nicht vergessen, dieses Script mit chmod +x webcam1.sh ausführbar zu machen.)

Wenn die Farbe eines erfassten Bildes schlecht ist, muss der -n-Parameter verwendet werden:

    ./wacaw -d 2 -n 5 --png /Users/rob/webcam1/picture


Ermitteln der Geräte-Nr.

Mit der Befehlszeilen-Option -L wird die Geräteliste angezeigt:

./wacaw -L
There are 3 devices in the list.
The current selection is 2.
 0 - DV Video [is available] [has no inputs]
 1 - IIDC FireWire Video [is available] [has no inputs]
 2 - USB Video Class Video [is available] [has inputs]
    There are 1 inputs for this device (2).
    The current selection is 0.
   0 - Webcam C170 [is available]

In diesem Beispiel ist die zu verwendende Geräte-Nr. 2: -d 2.

Linux

Unter Linux kann das avconv-Tool zur Bild-Erfassung verwendet werden:

sudo apt-get install libav-tools
#!/bin/bash
while :
do
  if [ ! -f /home/rob/webcam1/picture.png ]; then
    echo "Snapping a new picture of the webcam..."  
    avconv -f video4linux2 -i /dev/video1 -frames 1 /home/rob/webcam1/_picture.png
    mv /home/rob/webcam1/_picture.png /home/rob/webcam1/picture.png
  fi 
  sleep 0.25
done

Geräte

Mit

ls /dev/video*

wird eine Liste von Video-Geräten angezeigt.
Wenn der PC/Laptop eine eingebaute Kamera hat, wird diese als /dev/video0 angezeigt.
Die erste externe WebCam wird in diesem Fall als /dev/video1 angezeigt.

Windows

Dieses Script wurde nicht getestet und verwendet Irfanview als Erfassungs-Tool.

:startallover
IF NOT exist "C:\webcam1\picture.png"\ (
  REM Change the Twain Source
  REM http://www.gssezisoft.com/Products/CmdTwain/Download/SetTwainSource.zip
  REM  cscript.exe SetTwainSource.vbs driver
 
  i_view32.exe /scanhidden /dpi=(150,150) /convert="C:\webcam1\picture.png"
 
) 
ping -n 1 127.0.0.1 > NULL
GOTO startallover

Alternative

In der Startphase von Rocrail wird beim System-Ereignis “init” das Bilderfassungs-Script CamOn.bat gestartet und bei “shutdown” wird die Bilderfassung mit Hilfe des Scripts CamOff.bat wieder bendet.
Die Aktionen und die Scripte wurden erfolgreich getestet und beim 10. Stammtisch Solingen vorgestellt.

Textfeld Aktionen
Die Aktualisierung von 2000 ms
ist langsamer Hardware geschuldet
Der Zeitgeber 1000 ms verhindert Fehler
beim Laden der Plandaten nach dem Start


System-Aktionssteuerungen


Batch-Scripts

Das Script CamOn.bat:

Im Script wird zuerst geprüft, ob die Bedingung für das Beenden des Scripts durch die Datei c:\camoff gegeben ist. Wenn JA, wird die Bedingung gelöscht und das Script beendet.
Der nächste Befehl im Script prüft, ob die Bilddatei durch Rocrail verarbeitet und gelöscht wurde. Wenn JA, wird eine neue Bilddatei erfasst und konvertiert.

echo off
:start
if exist c:\camoff goto stopp
if exist c:\picture.png goto start
c:\commandcam.exe /quiet /filename c:\picture.bmp /delay 10
c:\bmp2png.exe -Q c:\picture.bmp
goto start
:stopp
del c:\camoff


Das Script CamOff.bat:

Es wird die Datei c:\camoff generiert, die das Script CamOn.bat beendet.

echo off
echo. > c:\camoff
Hinweis: Der Code in den Scripten setzt voraus, dass sich alle Dateien im Wurzel-Verzeichnis des Laufwerks C: befinden.
Anderenfalls müssen die Pfadangaben entsprechend eines anderen oder unterschiedlicher Verzeichnisse ergänzt werden.

Die im Bilderfassungs-Script CamOn.bat verwendeten commandcam.exe als Erfassungs- und bmp2png.exe als Konvertierungs-Tool sind zum Download hier zu finden:

Für WebCam auf dem Server wird anstelle bmp2png.exe das Tool bmp2jpg.exe im Batch-Script benötigt:

Informationen zur installierten Video-Hardware können so abgefragt werden:

commandcam.exe /devlistdetail

Sind mehrere Video-Geräte installiert, kann mit einer zusätzlichen Option das Gerät ausgewählt werden.
In diesem Beispiel ist das die Geräte-Nummer “2”:

...
commandcam.exe /quiet /filename c:\picture.bmp /delay 10 /devnum 2
...

Es wird empfohlen, WebCam auf dem Server anstelle des hier beschriebenen Beispiels zu verwenden.
Bei der Server-Lösung sind Einstellungen einfacher, es wird nur eine Aktion und eine Aktionssteuerung benötigt, das Script zur Bild-Erfassung läuft nicht in einer Ressourcen belastenden Schleife und es können mehrere Rocview- und RocWeb-Clients auf die WebCam-Bilder zugreifen.

Datei-Handshake

Nur eines von beiden Programmen, wacaw (oder jedes andere Erfassungs-Programm) und Rocview, darf Zugriff zur Bild-Datei haben, um ungültige Bilder zu vermeiden.

  1. Das Script erfasst ein Bild und speichert es in der Datei “picture.png”.
  2. Rocview liest und zeigt es an.
  3. Rocview löscht die “picture.png”.
  4. Das Script erkennt, das die “picture.png” gelöscht ist und erfasst das nächste Bild der WebCam.
  5. Gehe zu Schritt 2…



Personal Tools