public DateTimeZoneSetting(ref CameraController controller) { map.Add(0x00000000, "None"); map.Add(0x00000001, "Chatham Islands"); map.Add(0x00000002, "Wellington"); map.Add(0x00000003, "Solomon Islands"); map.Add(0x00000004, "Sydney"); map.Add(0x00000005, "Adelaide"); map.Add(0x00000006, "Tokyo"); map.Add(0x00000007, "Hong Kong"); map.Add(0x00000008, "Bangkok"); map.Add(0x00000009, "Yangon"); map.Add(0x0000000A, "Dhaka"); map.Add(0x0000000B, "Kathmandu"); map.Add(0x0000000C, "Delhi"); map.Add(0x0000000D, "Karachi"); map.Add(0x0000000E, "Kabul"); map.Add(0x0000000F, "Dubai"); map.Add(0x00000010, "Tehran"); map.Add(0x00000011, "Moscow"); map.Add(0x00000012, "Cairo"); map.Add(0x00000013, "Paris"); map.Add(0x00000014, "London"); map.Add(0x00000015, "Azores"); map.Add(0x00000016, "Fernando"); map.Add(0x00000017, "Sao Paulo"); map.Add(0x00000018, "Newfoundland"); map.Add(0x00000019, "Santiago"); map.Add(0x0000001A, "Caracas"); map.Add(0x0000001B, "New York"); map.Add(0x0000001C, "Chicago"); map.Add(0x0000001D, "Denver"); map.Add(0x0000001E, "Los Angeles"); map.Add(0x0000001F, "Anchorage"); map.Add(0x00000020, "Honolulu"); map.Add(0x00000021, "Samoa"); map.Add(0x00000022, "Riyadh"); map.Add(0x00000023, "Manaus"); map.Add(0x00000100, "UTC"); map.Add(0xffffffff, "unknown"); _controller = controller; _camera = _controller.GetModel().Camera; InitializeComponent(); // Date / Time EDSDKLib.EDSDK.EdsTime utcTime = default(EDSDKLib.EDSDK.EdsTime); if (_camera != IntPtr.Zero) { uint err = EDSDKLib.EDSDK.EdsGetPropertyData(_camera, EDSDKLib.EDSDK.PropID_UTCTime, 0, out utcTime); // Zone Setting err = EDSDKLib.EDSDK.EdsGetPropertyData(_camera, EDSDKLib.EDSDK.PropID_TimeZone, 0, out _timeZone); _desc = new EDSDKLib.EDSDK.EdsPropertyDesc(); err = EDSDKLib.EDSDK.EdsGetPropertyDesc(_camera, EDSDKLib.EDSDK.PropID_TimeZone, out _desc); this.comboBox1.Items.Clear(); for (int i = 0; i < _desc.NumElements; i++) { string outString; bool isGet = map.TryGetValue((uint)_desc.PropDesc[i] >> 16, out outString); if (isGet && !outString.Equals("unknown")) { // Create list of combo box comboBox1.Items.Add(outString); if (_timeZone == _desc.PropDesc[i]) { // Select item of combo box comboBox1.SelectedIndex = i; _timeZone = (uint)_desc.PropDesc[i]; _timeZonePrev = _timeZone; } } } // Daylight Saving Time uint summerTimeSetting; err = EDSDKLib.EDSDK.EdsGetPropertyData(_camera, EDSDKLib.EDSDK.PropID_SummerTimeSetting, 0, out summerTimeSetting); if (summerTimeSetting == 0x01) { this.checkBox1.Checked = true; } _summerTimeSetting = this.checkBox1.Checked; _summerTimeSettingPrev = _summerTimeSetting; // Time difference consideration DateTime dateTime = EdsTime2DateTime(utcTime); short timeDiff = (short)(_timeZone & 0x0000ffff); TimeSpan timeSpan = new TimeSpan(0, Convert.ToInt32(this.checkBox1.Checked), timeDiff, 0); dateTime = dateTime.Add(timeSpan); utcTime = DateTime2EdsTime(dateTime); _localTime = EdsTime2StrTime(utcTime); _localTimePrev = _localTime; this.textBox1.Text = _localTime; } }
static void Main() { // Initialization of SDK uint err = EDSDKLib.EDSDK.EdsInitializeSDK(); bool isSDKLoaded = false; if (err == EDSDKLib.EDSDK.EDS_ERR_OK) { isSDKLoaded = true; } //Acquisition of camera list IntPtr cameraList = IntPtr.Zero; if (err == EDSDKLib.EDSDK.EDS_ERR_OK) { err = EDSDKLib.EDSDK.EdsGetCameraList(out cameraList); } //Acquisition of number of Cameras if (err == EDSDKLib.EDSDK.EDS_ERR_OK) { int count = 0; err = EDSDKLib.EDSDK.EdsGetChildCount(cameraList, out count); if (count == 0) { err = EDSDKLib.EDSDK.EDS_ERR_DEVICE_NOT_FOUND; } } //Acquisition of camera at the head of the list IntPtr camera = IntPtr.Zero; if (err == EDSDKLib.EDSDK.EDS_ERR_OK) { err = EDSDKLib.EDSDK.EdsGetChildAtIndex(cameraList, 0, out camera); } //Acquisition of camera information EDSDKLib.EDSDK.EdsDeviceInfo deviceInfo; if (err == EDSDKLib.EDSDK.EDS_ERR_OK) { err = EDSDKLib.EDSDK.EdsGetDeviceInfo(camera, out deviceInfo); if (err == EDSDKLib.EDSDK.EDS_ERR_OK && camera == IntPtr.Zero) { err = EDSDKLib.EDSDK.EDS_ERR_DEVICE_NOT_FOUND; } } //Release camera list if (cameraList != IntPtr.Zero) { EDSDKLib.EDSDK.EdsRelease(cameraList); } //Create Camera model CameraModel model = null; if (err == EDSDKLib.EDSDK.EDS_ERR_OK || err == EDSDKLib.EDSDK.EDS_ERR_DEVICE_NOT_FOUND) { model = new CameraModel(camera); } if (err != EDSDKLib.EDSDK.EDS_ERR_OK && err != EDSDKLib.EDSDK.EDS_ERR_DEVICE_NOT_FOUND) { MessageBox.Show($"Cannot detect camera: 0x{err:x}"); } EDSDKLib.EDSDK.EdsPropertyEventHandler handlePropertyEvent = new EDSDKLib.EDSDK.EdsPropertyEventHandler(CameraEventListener.HandlePropertyEvent); EDSDKLib.EDSDK.EdsObjectEventHandler handleObjectEvent = new EDSDKLib.EDSDK.EdsObjectEventHandler(CameraEventListener.HandleObjectEvent); EDSDKLib.EDSDK.EdsStateEventHandler handleStateEvent = new EDSDKLib.EDSDK.EdsStateEventHandler(CameraEventListener.HandleStateEvent); CameraController controller; if (err == EDSDKLib.EDSDK.EDS_ERR_OK || err == EDSDKLib.EDSDK.EDS_ERR_DEVICE_NOT_FOUND) { //Create CameraController controller = new CameraController(ref model); GCHandle handle = GCHandle.Alloc(controller); IntPtr ptr = GCHandle.ToIntPtr(handle); //Set Property Event Handler if (err == EDSDKLib.EDSDK.EDS_ERR_OK) { err = EDSDKLib.EDSDK.EdsSetPropertyEventHandler(camera, EDSDKLib.EDSDK.PropertyEvent_All, handlePropertyEvent, ptr); } //Set Object Event Handler if (err == EDSDKLib.EDSDK.EDS_ERR_OK) { err = EDSDKLib.EDSDK.EdsSetObjectEventHandler(camera, EDSDKLib.EDSDK.ObjectEvent_All, handleObjectEvent, ptr); } //Set State Event Handler if (err == EDSDKLib.EDSDK.EDS_ERR_OK) { err = EDSDKLib.EDSDK.EdsSetCameraStateEventHandler(camera, EDSDKLib.EDSDK.StateEvent_All, handleStateEvent, ptr); } controller.Run(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); IObserver form = new MainWindow(ref controller); model.Add(ref form); Application.Run((MainWindow)form); handle.Free(); } GC.KeepAlive(handlePropertyEvent); GC.KeepAlive(handleObjectEvent); GC.KeepAlive(handleStateEvent); //Release Camera if (camera != IntPtr.Zero) { EDSDKLib.EDSDK.EdsRelease(camera); } //Termination of SDK if (isSDKLoaded) { EDSDKLib.EDSDK.EdsTerminateSDK(); } }