public static EDSDK.EdsDeviceInfo[] GetDeviceInfo(IntPtr[] camera, int Count) { EDSDK.EdsDeviceInfo[] DeviceInfo = new EDSDK.EdsDeviceInfo[Count]; EDSDK.EdsDeviceInfo deviceInfo; for (int i = 0; i < Count; i++) { EDSDK.EdsGetDeviceInfo(camera[i], out deviceInfo); DeviceInfo[i] = deviceInfo; } return(DeviceInfo); }
public static unsafe void DownloadImage(IntPtr[] camera, int Count) { IntPtr sdRef = IntPtr.Zero; IntPtr dicmRef = IntPtr.Zero; IntPtr canonRef = IntPtr.Zero; int nFiles; IniFile iniFile = new IniFile(configForm.iniFilePaths); for (int i = 0; i < Count; i++) { EDSDK.EdsGetChildAtIndex(camera[i], 0, out sdRef); EDSDK.EdsGetChildAtIndex(sdRef, 0, out dicmRef); EDSDK.EdsGetChildAtIndex(dicmRef, 0, out canonRef); EDSDK.EdsGetChildCount(canonRef, out nFiles); string dest = PicDest; //for (int i = 0; i < 5; i++) { IntPtr fileRef = IntPtr.Zero; EDSDK.EdsDirectoryItemInfo fileInfo; #region Get Directory and download try { EDSDK.EdsGetChildAtIndex(canonRef, (nFiles - 1), out fileRef); EDSDK.EdsGetDirectoryItemInfo(fileRef, out fileInfo); IntPtr fStream = IntPtr.Zero; //it's a cannon sdk file stream, not a managed stream uint fSize = fileInfo.Size; #region DownLoad try { EDSDK.EdsCreateMemoryStream(fSize, out fStream); EDSDK.EdsDownload(fileRef, fSize, fStream); EDSDK.EdsDownloadComplete(fileRef); byte[] buffer = new byte[fSize]; IntPtr imgLocation; //uint _imageLen; if (EDSDK.EdsGetPointer(fStream, out imgLocation) == EDSDK.EDS_ERR_OK) { #region save Marshal.Copy(imgLocation, buffer, 0, (int)fSize - 1); EDSDK.EdsDeviceInfo deviceInfo; EDSDK.EdsGetDeviceInfo(camera[i], out deviceInfo); string deviceName; deviceName = iniFile.IniReadValue("CameraID", deviceInfo.szPortName); File.WriteAllBytes(dest + deviceName + "__" + fileInfo.szFileName, buffer); //EDSDK.EdsGetLength(fStream, out _imageLen); //UnmanagedMemoryStream ums = new UnmanagedMemoryStream((byte*)imgLocation.ToPointer(), _imageLen, _imageLen, FileAccess.Read); //Bitmap _bmp = new Bitmap(ums, true); //pictureBox1.Image = _bmp; //_bmp.Save("new1", System.Drawing.Imaging.ImageFormat.Jpeg); #endregion } } finally { EDSDK.EdsRelease(fStream); Console.WriteLine("DownloadSuccess\t" + i.ToString()); } #endregion } finally { EDSDK.EdsRelease(fileRef); } #endregion } } }
public override void GetEquipment() { Devices.Clear(); Devices.Add(new Model.DummyDevice(Locale.Loc.Instance["LblNoCamera"])); /* ASI */ try { Logger.Trace("Adding ASI Cameras"); for (int i = 0; i < ASICameras.Count; i++) { var cam = ASICameras.GetCamera(i, profileService); if (!string.IsNullOrEmpty(cam.Name)) { Logger.Trace(string.Format("Adding {0}", cam.Name)); Devices.Add(cam); } } } catch (Exception ex) { Logger.Error(ex); } /* Altair */ try { Logger.Trace("Adding Altair Cameras"); foreach (var instance in Altair.AltairCam.EnumV2()) { var cam = new AltairCamera(instance, profileService); Devices.Add(cam); } } catch (Exception ex) { Logger.Error(ex); } /* Atik */ try { Logger.Trace("Adding Atik Cameras"); var atikDevices = AtikCameraDll.GetDevicesCount(); Logger.Trace($"Cameras found: {atikDevices}"); if (atikDevices > 0) { for (int i = 0; i < atikDevices; i++) { var cam = new AtikCamera(i, profileService); Devices.Add(cam); } } } catch (Exception ex) { Logger.Error(ex); } /* FLI */ try { Logger.Trace("Adding FLI Cameras"); List <string> cameras = FLICameras.GetCameras(); if (cameras.Count > 0) { foreach (var entry in cameras) { var camera = new FLICamera(entry, profileService); if (!string.IsNullOrEmpty(camera.Name)) { Logger.Debug($"Adding FLI camera {camera.Id} (as {camera.Name})"); Devices.Add(camera); } } } } catch (Exception ex) { Logger.Error(ex); } /* QHYCCD */ try { Logger.Trace("Adding QHYCCD Cameras"); uint numCameras = QHYCameras.Count; if (numCameras > 0) { for (uint i = 0; i < numCameras; i++) { var cam = QHYCameras.GetCamera(i, profileService); if (!string.IsNullOrEmpty(cam.Name)) { Logger.Debug($"Adding QHY camera {i}: {cam.Id} (as {cam.Name})"); Devices.Add(cam); } } } } catch (Exception ex) { Logger.Error(ex); } /* ToupTek */ try { Logger.Debug("Adding ToupTek Cameras"); foreach (var instance in ToupTek.ToupCam.EnumV2()) { var cam = new ToupTekCamera(instance, profileService); Devices.Add(cam); } } catch (Exception ex) { Logger.Error(ex); } /* Omegon */ try { Logger.Debug("Adding Omegon Cameras"); foreach (var instance in Omegon.Omegonprocam.EnumV2()) { var cam = new OmegonCamera(instance, profileService); Devices.Add(cam); } } catch (Exception ex) { Logger.Error(ex); } /* ASCOM */ try { foreach (ICamera cam in ASCOMInteraction.GetCameras(profileService)) { Devices.Add(cam); } } catch (Exception ex) { Logger.Error(ex); } /* CANON */ try { IntPtr cameraList; try { EDSDKLocal.Initialize(); } catch (Exception ex) { Logger.Error(ex); Utility.Notification.Notification.ShowError(ex.Message); } uint err = EDSDK.EdsGetCameraList(out cameraList); if (err == EDSDK.EDS_ERR_OK) { int count; err = EDSDK.EdsGetChildCount(cameraList, out count); for (int i = 0; i < count; i++) { IntPtr cam; err = EDSDK.EdsGetChildAtIndex(cameraList, i, out cam); EDSDK.EdsDeviceInfo info; err = EDSDK.EdsGetDeviceInfo(cam, out info); Logger.Trace(string.Format("Adding {0}", info.szDeviceDescription)); Devices.Add(new EDCamera(cam, info, profileService)); } } } catch (Exception ex) { Logger.Error(ex); } /* NIKON */ try { Devices.Add(new NikonCamera(profileService, telescopeMediator)); } catch (Exception ex) { Logger.Error(ex); } Devices.Add(new Model.MyCamera.FileCamera(profileService, telescopeMediator)); Devices.Add(new Model.MyCamera.Simulator.SimulatorCamera(profileService, telescopeMediator)); DetermineSelectedDevice(profileService.ActiveProfile.CameraSettings.Id); }