esskar / Canon.Eos.Framework

Currently, this project is not under development. Time is not my friend.
MIT License
66 stars 33 forks source link

Architecture question #3

Open Elgeor opened 12 years ago

Elgeor commented 12 years ago

Hello,

1.) why there is EosObject class when only EosCamera extends this class. 2.) will your implementation works in multi-thread application? 3.) It's later possible to have more than one kind of Exception (if it really makes sense)? 4.) What camera did you use for testing?

Btw very impressive piece of work.

esskar commented 12 years ago

Hi,

thanks for your feedback. let me comment on your questions: 1) the EDSDK has camera and image objects. Image Objects are not yet implemented, but they will be in the future. With that in mind, i created the EosObject since they will share that functioanality 2) it actually works only on mutlithreaded applications, since the eventing does not work in single threaded mode. Just make sure, that you only keep on EosFramework instance. (I just added a small (unfinished) sample application. 3) Could be. You have something in mind? 4) Canon EOS 7D

Thanks for the flowers! ;-) Feel free to test and give further feedback.

Elgeor commented 12 years ago

Hi,

thank for your response. 1.) I expect this was an idea :) 3.) Maybe yes, just suggestion: What about EosPropertyException which will be triggered when property get/set fails. This kind of exception can hold also property id and maybe even value which should be inserted into property 4.) I have Canon 550d and it seems that properties: kEdsPropID_MakerName and kEdsPropID_BatteryQuality are not supported by my camera. I think some models supports more or less from possible properties and especially 7D and 1D has several Marks and there will be also big differences.

Bill-Lea commented 12 years ago

Gentlemen:

I am interested in the project because I want to control my EOS 7D. I have also a Olympus ER-500 which also has software. The E-500 has a dynamic set of properties so you need to be able to detect changes in the allowable property values and update them from time to time. The camera driver issues messages when this updating is needed. I believe that the Canon cameras also have this variable allowable property. Does this framework have any methods to accomplish this?

I have been trying to compile the code just uploaded but can't seem to get the DLL's in the right spot. It might be my use of a 64 bit system I am going to move all this over to a 32 bit system later this evening. I suppose I've got some googling to do as well.

esskar commented 12 years ago

@Bill-Lea this framework is not for Olympus cameras and probably never will be. About the DLLs: Have you downloaded the EDSDK from Canon. There you'll find the missing DLLs. I have not uploaded them here since i am not sure whether or not I am allowed to redistribute them since Canon has their on "complicated" process for that.

Bill-Lea commented 12 years ago

I was comparing the Olympus SDK to the Canon SDK. The Oly sdk has a
functional C# example. The canon does not. I'm looking for a
functional c# wrapper wirh some example of how to use it.

My aim is a program that will controle either my canon 7d or my
Olympus E-500.

My problem with the EDSDK is two fold. First I get errors when I compile the EDSDK.cs. There are a couple of
numbers that are out of range for ints. 0xffffffff won't fit in an
int32. I can fix that.

I am having problems with the DLLs. I have coppied them to the bin/
release and bin/debug folders but the programs still won't locate
them. This is puzzling because I have another partial wrapper where
this works. I'm assuming this is a problem with my setup in visual
studio some how.

I have simply downloaded your files and brought them up via the .cproj
file. They build clean but when I try to debug the EDSDK.dll can't be
loaded. As I said I put the dll's in the output file for both the
release and the debug versions. Still I must not have something set
right. I'm poring over my reference books trying to sort it out.

One thong of particular interest to me is the properties. I formed the
openion that the allowable values are dynamic. So one question I have is does your wrapper provide a mechanism to
manage a dynamic properties list or do you feel that it is not required?

Thanks Bill

Sent from my iPhone

On Jan 25, 2012, at 7:23 AM, esskar <reply +i- 2928222- 5c18e374e44814e111ea78eb85e2a1a4eaa9539b-1377818@reply.github.com>
wrote:

@Bill-Lea this framework is not for Olympus cameras and probably
never will be. About the DLLs: Have you downloaded the EDSDK from Canon. There
you'll find the missing DLLs. I have not uploaded them here since i
am not sure whether or not I am allowed to redistribute them since
Canon has their on "complicated" process for that.


Reply to this email directly or view it on GitHub: https://github.com/esskar/Canon.Eos.Framework/issues/3#issuecomment-3650403

Bill-Lea commented 12 years ago

Solved my problem with the dll's. I had to put them in both projects
bin directories. I have not checked to see if only one project needed
them. Now I will look at the camera properties. I want to control all
of them if possible. Bill

Sent from my iPhone

On Jan 25, 2012, at 7:23 AM, esskar <reply +i- 2928222- 5c18e374e44814e111ea78eb85e2a1a4eaa9539b-1377818@reply.github.com>
wrote:

@Bill-Lea this framework is not for Olympus cameras and probably
never will be. About the DLLs: Have you downloaded the EDSDK from Canon. There
you'll find the missing DLLs. I have not uploaded them here since i
am not sure whether or not I am allowed to redistribute them since
Canon has their on "complicated" process for that.


Reply to this email directly or view it on GitHub: https://github.com/esskar/Canon.Eos.Framework/issues/3#issuecomment-3650403

esskar commented 12 years ago

what properties are you talking about?

Bill-Lea commented 12 years ago

I call em properties. Shutter speed, iso, all rhe enumerated settings
needed to control the camera. Maybe there is a better name but that
how I think of them.

For instance the eos has 3 modes of operation. I need to know what
mode the camera is in and want to be able to set the mode so that
during computer operation the camera body controls are locked out.

The availiable apetures are a function of the lens. If the lens is a
zoom then rhe availiable apetures is a function of the zoom setting.
If the lens is a manual I.e. Non electronic lens then the availiable
apetures are indeterminate. (I want to use my leica R lenses.

So I want to read all the settings ( maybe that's a better word ) and
set them as desired at the start right after the camera is initialized.

For instance I want to be able to set rhe image types or resolution.
It looks like the commands are in the sdk and it looks like you have
some code that handels them but I have not sorted through all of it yet.

I need to set: the mode of operation Shutter speed Iso sensitivity White ballance Image type and resolutiol Live view Image storage location

I think of these paramiters as properties.

My goal is to develope a program to automatically generate a panorama
using either ldr or hdr techniques based on a alt-az telescope mount. I was going to use the ASCOM platform as it allows writing of drivers
which can easily be switched. Thus I could use either my E-500 or my 7D.

I must say though that the ASCOM guys are not verry supportive.

I must also say I'm a novice at .NET. I sort of hack my way through it.

Anyway thanks for your reply Bill

Sent from my iPhone

On Jan 26, 2012, at 1:46 AM, esskar <reply +i- 2928222- 5c18e374e44814e111ea78eb85e2a1a4eaa9539b-1377818@reply.github.com>
wrote:

what properties are you talking about?


Reply to this email directly or view it on GitHub: https://github.com/esskar/Canon.Eos.Framework/issues/3#issuecomment-3665471

Bill-Lea commented 12 years ago

The properties are discussed in the EDSDK.cs file about line 660. They
are needed to make a fully functioning camera control application.

I can speak to how they are handled by the Olympus SDK since they are
discussed in some detail in the SDK documents and Oly provides a fully
functional example program.

My plan is to use the Ascom platform to write camera "drivers" where
by the two cameras are effectively interchangable. I must admit that
the ASCOM group is not too reciptive to my need to modify their
program paradymes.

Bill

Sent from my iPhone

On Jan 26, 2012, at 1:46 AM, esskar <reply +i- 2928222- 5c18e374e44814e111ea78eb85e2a1a4eaa9539b-1377818@reply.github.com>
wrote:

what properties are you talking about?


Reply to this email directly or view it on GitHub: https://github.com/esskar/Canon.Eos.Framework/issues/3#issuecomment-3665471

esskar commented 12 years ago

I will look into this today. will keep you posted.

Bill-Lea commented 12 years ago

I have written some functions to generate names from various property
numbers as defined by the edsdk.cs file. I'm not sure on naming
conventions or where they should go. For now I just stuck them in the
edsdk.cs file. They work.

I can not figure out how to get the list of settable properties and
the corresponding allowable values. I think this structure needs to be
initialized and populated after the camera session is opened. I
beleive the camera will use delegates to inform the program of and
changes. Say you change the focal length of the lens. Then the
allowable appetures will change. I'm not sure how to do this and I
beleive there are a number of properties which may change wirh changes
in the camera state.

Thanks for your consideration. Bill

Sent from my iPhone

On Jan 29, 2012, at 4:51 AM, esskar <reply +i- 2928222- 5c18e374e44814e111ea78eb85e2a1a4eaa9539b-1377818@reply.github.com>
wrote:

I will look into this today. will keep you posted.


Reply to this email directly or view it on GitHub: https://github.com/esskar/Canon.Eos.Framework/issues/3#issuecomment-3707713

esskar commented 12 years ago

ok. i know how to implement it but i probably will not be able to do it before the beginning of next week. I need to finish a customer project first.

simonbuehler commented 12 years ago

a lot of work is done in https://github.com/Aperis/CanonDSLR.NET/tree/master/CanonDSLR ,you might integrate stuff from there ( i prefer your api )