Aktuelle Zeit: 20.06.2013 14:00

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 41 Beiträge ]  Gehe zu Seite 1, 2, 3, 4, 5  Nächste
Autor Nachricht
 Betreff des Beitrags: Nikon SDK für Kamerasteuerung
BeitragVerfasst: 20.02.2009 14:29 
Offline
Benutzeravatar

Registriert: 31.08.2004 15:03
Wohnort: Pbg.
Hi,

ich habe eine Nikon Spiegelreflexkamera.
Diese Kamera kann man mit der SDK von Nikon ansteuern.

Zur Steuerung z. B. gehören solche Sachen wie "Foto schießen"(vom PC aus) oder auslesen und schreiben von Einstellungen vom PC aus.

Naja, nun sitze ich hier und habe von meinem Vater den Tipp bekommen, einfach mal mit der COMate zu arbeiten. Leider ist mein Verständnis mit dem Ansprechen der DLL von Nikon sogut wie gleich NULL.

Vlt. kann mir hier ja jemand helfen, wie ich das Ding benutze.
Falls jemand die SDK laden möchte,
Nikon SDK
Zu der ich Hilfe brauche ist die SDK für die D60.

Vielen Dank schon einmal für Hilfe.[/url]

_________________
Mit freundlichen Grüßen,
chrizl


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Nikon SDK für Kamerasteuerung
BeitragVerfasst: 20.02.2009 14:32 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Porada Ninfu
Hai chrizl,

gibt es in diesem SDK Code-Beispiele in VB6 oder VBS? Wenn ja, dann
kannst Du diese recht einfach in 'COMate-Code' konvertieren. Poste mal ein
(kleines) Beispiel. Dann können wir mal gemeinsam schauen, wie man die
Sachen umsetzen kann.

Grüße ... Kiffi

_________________
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - Martin Golding

PB2Web: Mach mit! :allright:
PureBasic FAQ
PureBasic Projekthosting


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 20.02.2009 14:39 
Offline

Registriert: 10.11.2004 03:22
Interessantes Thema!
... ich hab von COMate noch nicht die geringste Ahnung, aber das hier könnte ein Einstieg werden.
wäre bestimmt interessant die CoolPix vom Rechner aus anzusteuern...


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 20.02.2009 14:59 
Offline
Benutzeravatar

Registriert: 31.08.2004 15:03
Wohnort: Pbg.
Also es gibt z. B. von diyphotobits.com ein freeware-Tool für sowas.
Auf dieser Seite gibt es ein Beispiel-Source, bzw. den Quellsource, ganz unten in der Mitte.

Naja, man braucht dafür zwar die Kamera, um das Script ausführen zu können, da das Script die Cam anspricht.

Funktion des Scriptes ist eigentlich nur, dass sobald man mit der Kamera im PC-Modus ein Bild macht, dass dieses ausgelesen wird und auf dem PC gespeichert wird.

Hier mal der Code aus dem "tethered2"-Source von DIYPhotoBits in der WSF-Datei. Die Dll heisst "wiaaut.dll" und befindet sich im dem Ordner aus dem Download.
Code:
<job>
<reference object="wia.DeviceManager" />
<object id="DevMan" progid="Wia.DeviceManager" />
<object id="dlg" progid="WIA.CommonDialog" />
<script language="VBScript">

' Tethered Shooting Script 2.0

' Copyright 2008 All Rights Reserved

' Use and distribution for non-commercial purposes permitted

' http://www.DiyPhotoBits.com

Option Explicit


dim foldername
Dim outputfolder
Dim dev 'As WIA.Device
Dim itm 'As WIA.Item
Dim img 'As WIA.ImageFile
Dim itemCount 'As Integer
Dim fnext 'As String
Dim fso
Dim fn, tempfn
dim WshShell
dim afile
dim colEnvVars
dim tempfolder

Set fso= CreateObject("Scripting.FileSystemObject")

foldername = "tethered"

outputfolder = "c:\"&foldername &"\"  ' change this as required

If not fso.FolderExists(outputfolder) Then
   fso.CreateFolder(outputfolder )
End If
If not fso.FolderExists(outputfolder & "temp\")  Then
   fso.CreateFolder(outputfolder & "temp\")
End If

Set WshShell = WScript.CreateObject("WScript.Shell")
Set colEnvVars = WshShell.Environment("User")
tempfolder = WshShell.ExpandEnvironmentStrings("%TEMP%")


Set dev = dlg.ShowSelectDevice

Wscript.echo "Tethered Shooting Script 2.0"
Wscript.echo ""
Wscript.echo "Copyright 2008 All Rights Reserved"
Wscript.echo ""
Wscript.echo "Use and distribution for non-commercial purposes permitted"
Wscript.echo ""
Wscript.echo "http://www.DiyPhotoBits.com"
Wscript.echo ""
Wscript.echo "Images from " & dev.Properties("Description").Value & " will be saved to " & outputfolder
Wscript.echo "Press Ctrl-Break to exit"
itemCount = dev.Items.Count
Do While True
    If dev.Items.Count > itemCount Then ' new item appeared
       itemCount = itemCount + 1
        Set img = dlg.ShowTransfer(dev.Items(itemCount))
        fnext = img.FileExtension
        If fnext = "" Then
            fnext = "NEF"
        End If

   tempfn = outputfolder & "temp\" & dev.Items(itemCount).Properties("Item Name").Value & "." & fnext
        fn =outputfolder  & dev.Items(itemCount).Properties("Item Name").Value & "." & fnext

   wscript.echo "Saving "&fn
        img.SaveFile tempfn
        img = null
   Set aFile = fso.GetFile(tempfn )
   aFile.Move fn

   WScript.Sleep(500)
   WshShell.AppActivate foldername
   WScript.Sleep(500)
   WshShell.SendKeys "{END}"
       
    End If
   
    WScript.Sleep(500)
   
Loop


</script>
</job>


Ein Beispiel in C++ geschrieben vom Nikon selber ist hier zu finden: http://www.chlu.de/purebasic/downloads/ ... Sample.rar .

Hoffe, du/ihr kannst/könnt da was mit anfangen.

_________________
Mit freundlichen Grüßen,
chrizl


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 20.02.2009 16:33 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Porada Ninfu
das SDK kann / möchte ich hier auf diesem Rechner nicht installieren.
Deshalb muss ich mich ein wenig blind durch den Code hangeln.

Als erstes muss geprüft werden, welche Objekte uns zur Verfügung
stehen. Ich denke, dass das zum einen der DeviceManager und zum
anderen der CommonDialog sind.

Um das herauszufinden, bitte mal nachfolgenden Code laufen lassen und
schauen, was der Debugger so herausgibt.

Code:
IncludePath #PB_Compiler_Home + "comate\" ; Pfad anpassen
XIncludeFile "comate.pbi"
IncludePath ""

Define WIA_DeviceManager.COMateObject
Define WIA_CommonDialog.COMateObject

WIA_DeviceManager = COMate_CreateObject("WIA.DeviceManager")
If WIA_DeviceManager
  Debug "WIA_DeviceManager-Objekt wurde erfolgreich erstellt :-)"
  WIA_DeviceManager\Release() ; Objekt wieder freigeben
Else
  Debug "WIA_DeviceManager-Objekt konnte nicht erstellt werden."
  Debug COMate_GetLastErrorDescription()
EndIf

WIA_CommonDialog = COMate_CreateObject("WIA.CommonDialog")
If WIA_CommonDialog
  Debug "WIA_CommonDialog-Objekt wurde erfolgreich erstellt :-)"
  WIA_CommonDialog\Release() ; Objekt wieder freigeben
Else
  Debug "WIA_CommonDialog-Objekt konnte nicht erstellt werden."
  Debug COMate_GetLastErrorDescription()
EndIf



Grüße ... Kiffi

_________________
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - Martin Golding

PB2Web: Mach mit! :allright:
PureBasic FAQ
PureBasic Projekthosting


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23.02.2009 13:04 
Offline
Benutzeravatar

Registriert: 31.08.2004 15:03
Wohnort: Pbg.
Hey,
sorry das ich mich jetzt erst melde, aber hatte am Wochenende wenig Zeit.

So, dass du die SDK nicht installieren möchtest, ist nicht schlimm. Problem ist ja leider auch, dass man ohne die Cam auch nicht viel mit der SDK anfangen kann.

Also zu deinem Code erstmal die Ausgabe des Debuggers:
Code:
WIA_DeviceManager-Objekt konnte nicht erstellt werden.
Invalid progID/CLSID. Check your spelling of the programmatic identifier. Also check that the component / ActiveX control has been registered.
WIA_CommonDialog-Objekt konnte nicht erstellt werden.
Invalid progID/CLSID. Check your spelling of the programmatic identifier. Also check that the component / ActiveX control has been registered.


Also bekommt das Script keine gültige ID vom DeviceManager zurück, wenn ich das richtig verstanden habe oder?

_________________
Mit freundlichen Grüßen,
chrizl


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23.02.2009 13:38 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Porada Ninfu
chrizl hat geschrieben:
Code:
Invalid progID/CLSID. Check your spelling of the programmatic identifier. Also check that the component / ActiveX control has been registered.

nun gibt es eigentlich nur eine Möglichkeit:

Die erforderlichen DLL(s) sind nicht korrekt in Deinem System registriert
worden. Ich weiss leider nicht, um welche DLL(s) es sich hierbei handelt,
aber such einfach mal im SDK-Ordner nach *.DLL

Die dann gefundenen DLLs übergibst Du als Parameter der regsvr32.exe

In der Kommandozeilenumgebung:

Code:
regsvr32 [PfadUndNameDeinerDll]


regsvr32 sorgt dafür, dass benötige Informationen in der Registry
eingetragen werden.

sowas sollte dann ausgegeben werden:

Code:
---------------------------
RegSvr32
---------------------------
DllRegisterServer in [Deine DLL] erfolgreich durchgeführt.
---------------------------
OK   
---------------------------


(es kann durchaus sein, dass sich auch andere DLLs in Deinem
SDK-Ordner befinen, die nicht registriert werden können. In diesem Fall
die Fehlermeldung einfach ignorieren. Wichtig ist, dass zumindest einmal
die Erfolgsmeldung kommen sollte.)

Wenn Du das gemacht hast, dann bitte nochmal meinen PB-Code
ausführen.

Grüße ... Kiffi

_________________
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - Martin Golding

PB2Web: Mach mit! :allright:
PureBasic FAQ
PureBasic Projekthosting


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23.02.2009 14:06 
Offline
Benutzeravatar

Registriert: 31.08.2004 15:03
Wohnort: Pbg.
Ah, das sieht doch schon viel besser aus.
Nun werden beide Objekte erfolgreich erstellt.

Oh man, ich glaube, ich muss noch so einiges dazu lernen.

Achja, die DLL, die ich registriert habe ist jetzt erstmal die wiaaut.dll. Also nicht die DLL von der SDK von Nikon.
Bzw. diese lässt sich auch nicht registrieren, weil die keinen "DLL-Eingangspunkt" hat.

_________________
Mit freundlichen Grüßen,
chrizl


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23.02.2009 16:18 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Porada Ninfu
chrizl hat geschrieben:
Nun werden beide Objekte erfolgreich erstellt.

prima! Das sind schon mal die besten Voraussetzungen, dass der Rest
auch laufen wird. :-)

Probier mal, ob das nachfolgende Schnippselchen bei Dir was ausspuckt:
Code:
Define WIA_DeviceManager.COMateObject
Define WIA_CommonDialog.COMateObject

WIA_DeviceManager = COMate_CreateObject("WIA.DeviceManager")
If WIA_DeviceManager
  Debug "WIA_DeviceManager-Objekt wurde erfolgreich erstellt :-)"
Else
  Debug "WIA_DeviceManager-Objekt konnte nicht erstellt werden."
  Debug COMate_GetLastErrorDescription()
  End
EndIf

WIA_CommonDialog = COMate_CreateObject("WIA.CommonDialog")
If WIA_CommonDialog
  Debug "WIA_CommonDialog-Objekt wurde erfolgreich erstellt :-)"
Else
  Debug "WIA_CommonDialog-Objekt konnte nicht erstellt werden."
  Debug COMate_GetLastErrorDescription()
  WIA_DeviceManager\Release() ; Objekt wieder freigeben
  End
EndIf

Define dev.COMateObject
 
dev = WIA_CommonDialog\getObjectProperty("ShowSelectDevice")

If dev

  Debug "Selected device: " + dev\GetStringProperty("Properties('Description')\Value")
 
  itemCount = dev\GetIntegerProperty("Items\Count")
 
  Debug "Items: " + Str(itemCount)
 
  dev\Release() ; Objekt freigeben
 
Else
 
  Debug COMate_GetLastErrorDescription()
 
EndIf

WIA_CommonDialog\Release()  ; Objekt freigeben
WIA_DeviceManager\Release() ; Objekt freigeben


Grüße ... Kiffi

_________________
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - Martin Golding

PB2Web: Mach mit! :allright:
PureBasic FAQ
PureBasic Projekthosting


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 23.02.2009 18:24 
Offline
Benutzeravatar

Registriert: 31.08.2004 15:03
Wohnort: Pbg.
Perfecto.

Genauso muss das Ding laufen.

Kiffi, du bist ein Schatz.

Jetzt weiss ich auf jeden Fall, wie ich COMate einsetzen muss, ich bin da vorher nicht so wirklich durchgestiegen.

Danke schön :-)

Achja, dein Code zeigt mir nun an, dass beide Objekte erstellt wurden und anschließend, dass die D60 ausgewählt wurde.
Als letztes kommt dann noch die Anzahl der Bilder.

_________________
Mit freundlichen Grüßen,
chrizl


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 41 Beiträge ]  Gehe zu Seite 1, 2, 3, 4, 5  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Google [Bot], Google Adsense [Bot] und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye