USB-Kamera

  • Hallo Experten,

    ich habe eine USB-Kamera und möchte mittels AutoIt ein Skript erstellen, welches erkennt, wann ich die USB-Kamera einstecke und dann automatisch das entsprechende Programm startet und in den Vorschaumodus schält. Dementsprechend möchte ich, dass beim entfernen der USB-Kamera das Programm wieder geschlossen wird.


    Die Sache mit dem Programm öffnen usw. hab ich bereits im Griff. Allerdings weiß ich nicht, wie ich die Abfrage über die USB-Schnittstelle hinbekommen soll.


    Kann mir da jemand helfen?

  • Es sind gewöhnliche Kameratreiber und ein einfaches Vorschauprogramm mitgeliefert worden.

  • Hier mal mein Code.

    ich habe einen kleinen Erfolg. Er erkennt das Gerät und steigt dann aus, wenn er es gefunden hat. Aus irgedwelchen Gründen fehlt mir noch der letzte Schritt - eben dass er gerade anders rum macht (also aussteigen, wenn es nicht da ist und weitermachen, wenn Kamera angeschlossen ist)


    Danke für die Hilfe!!!


    • Offizieller Beitrag

    Hallo

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    Local $usbcam = False
    Const $wbemFlagReturnImmediately = 0x10
    Const $wbemFlagForwardOnly = 0x20
    Local $szComputer = "."
    Local $colItems = ""
    Local $objWMIService = ObjGet("winmgmts:\\" & $szComputer & "\root\CIMV2")
    Local $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_USBControllerDevice', "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    Local $aActiveDevices = "", $aActiveUSBStorDevices = ""
    Local $szActiveDevices = "", $szActiveUSBStorDevices = ""

    [/autoit] [autoit][/autoit] [autoit]

    ; Aktive USB-Geräte auslesen
    If IsObj($colItems) Then
    For $objItem In $colItems
    ; alle USB-Geräte
    $aRegExp = StringRegExp($objItem.Dependent, "(?i).*=""(USB.*\\\\.*)""", 1)
    If IsArray($aRegExp) Then
    If $szActiveDevices <> "" Then $szActiveDevices &= @CRLF
    $szActiveDevices &= $aRegExp[0]

    [/autoit] [autoit][/autoit] [autoit]

    ;Hier wird der Schlüssel der USB-Kamera abgefragt. wenn <> als
    if $aRegExp[0] = "USB\\VID_0AC8&PID_3420&MI_00\\7&192BEBFD&0&0000" then $usbcam = True

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Next
    EndIf
    If Not $usbcam Then Exit
    $aActiveDevices = StringSplit($szActiveDevices, @CRLF, 1)
    _ArrayDisplay($aActiveDevices, "aktive USB-Geräte")
    ;$aActiveUSBStorDevices = StringSplit($szActiveUSBStorDevices, @CRLF, 1)
    _ArrayDisplay($aActiveUSBStorDevices, "aktive USB-Massenspeicher")

    [/autoit] [autoit][/autoit] [autoit]

    Run("C:\Program Files\Vimicro Corporation\VMUVC\vmcap.exe")
    sleep(1000)
    WinSetState ("","",@SW_MAXIMIZE)
    ;sleep(2000)
    send("{ENTER}")
    Send("!{F4}")

    [/autoit]

    Gruß Spider

  • Hi Leute,

    Bin absoluter Anfänger u. hab bisher m. Autohotkey rumgemacht.
    Ich versuche mich ebenfalls an d. USB . Camerasteuerung.

    Im Unterschied zu Pagemasters Fragestellung gehts in meinem Fall um eine USB - Camera, die einen zusätzlichen Einschaltknopf
    hat, mit dem die Camera aktiviert wird u. gleichzeitig 6 LED`s angehen. (Interorale Camerera)

    Also - wenn ich d. Camera reinstecke kommt ein Balloon : "Webcamera is plugged in".
    Hier soll nichts passieren.
    Wenn ich den Knopf drücke heißts : "Camera starts Capture"
    Jetzt soll ein externes Programm aufgerufen werden.
    Wenn ich d. Camera abschalte (LED´s aus) soll es wieder beendet werden.

    Ich hab mich bis jetzt dahingehend reingesteigert den beim Einschalten höheren USB - Strom zu messen (über Operationsverstärker - Shunt - Elektronik) u. dann die Parallelschnittstelle an PIN 12 (Eingang) angesteuert.
    Die konnt ich dann wieder m. AHK abfragen.

    Schein mir aber etwas aufwändig zu sein.

    Bitte, helft mir, ich steh hier wie der Ochs vorm Berg.

    Oder - glaubt Ihr, daß das überhaupt geht ?

    Gruß, bommi