You are not logged in.

Dear visitor, welcome to VDR Portal. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

rfu

Trainee

  • "rfu" started this thread

Posts: 83

Location: Rhein-Neckar

  • Send private message

1

Friday, October 24th 2008, 11:01am

Aus skript feststellen, ob CD-Tray offen ist?

Hallo,

ich möchte gerne aus einem shell skript heraus feststellen, ob die CD-Schublade offen oder geschlossen ist.

Ich weiss, daß ich mit eject die Schublade öffnen oder schließen kann, oder mit parameter -T sogar den jeweils anderen Zustand erreichen kann, aber ich möchte gerne feststellen, wie der aktuelle Zustand ist.
Es wäre kein Problem, dazu probeweise die Schublade zu schließen, aber soweit ich das sehe gibt mir eject keine Information darüber, ob dazu etwas zu tun war oder nicht.

Gibt es da irgendeinen versteckten Parameter oder eine andere Möglichkeit?

Tschööö
Robert
:vdr2 ctVDR auf Hermes 651 (DVB-S über FF Nexus)

2

Friday, October 24th 2008, 2:40pm

RE: Aus skript feststellen, ob CD-Tray offen ist?

Hallo,

Hier findest Du die verallgemeinerten Befehle, die gegen ein Laufwerk abgesetzt werden können. Wie und wo das passieren kann, müsstest Du selber mal suchen.
Der bekannteste Ausgangspunkt dürfte wohl http://fy.chalmers.se/~appro/linux/DVD+RW/ sein.

Ich weiß jetzt nicht, warum Du das feststellen willst - meist dürfte es doch reichen, die Lade entweder zu öffnen oder zu schließen.

Ansonsten könntest Du es noch indirekt versuchen.
  • wenn Du z.B. nach dem Schreiben eines Rohlings prüfen willst, ob die Lade offen ist, könntest Du dvd+rw-mediainfo verwenden. Wenn das nix lesen kann, bzw. meint, dass es kein Medium finden kann, ist die Lade offen.
  • Wenn Du es dagegen vor einem Schreibvorgang prüfen willst, könntest Du die Zeit messen, die der eject-Befehl braucht.
    Lade war bereits offen

    Source code

    1
    2
    3
    4
    
    time `eject -v`
    real    0m0.005s
    user    0m0.004s
    sys     0m0.004s

    Lade wurde geöffnet

    Source code

    1
    2
    3
    4
    
    time `eject -v`
    real    0m6.362s
    user    0m0.004s
    sys     0m0.000s

Der Unterschied ist so groß, dass sich ein Schwellwert festlegen läßt.

Gruß Geronimo
Ich bin verantwortlich für das, was ich schreibe, nicht für das, was Du verstehst!

Posts: 2,985

Location: a child of the universe

Occupation: duct tape programmer

  • Send private message

3

Friday, October 24th 2008, 2:48pm

keine Ahnung ob es was Fertiges gibt.

Folgendes Mini-Programm liefert bei mir 'true' wenn die Lade offen ist. Ansonsten (auch bei Fehlern wie falsches Laufwerk, fehlende Berechtigung etc.) 'false'

Source code

1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <linux/cdrom.h>

main()
{
    exit (CDS_TRAY_OPEN != ioctl(open("/dev/cdrom", O_RDONLY | O_NONBLOCK), CDROM_DRIVE_STATUS, 0));
}

This post has been edited 1 times, last edit by "sparkie" (Oct 24th 2008, 2:49pm)


rfu

Trainee

  • "rfu" started this thread

Posts: 83

Location: Rhein-Neckar

  • Send private message

4

Monday, October 27th 2008, 5:06pm

Hallo,

danke für die Antworten, das werde ich beides mal ausprobieren!

Tschööö
Robert
:vdr2 ctVDR auf Hermes 651 (DVB-S über FF Nexus)