Ошибка EDS_ERR_DEVICE_NOT_FOUND при открытии сеанса камеры canon ( EdsOpenSession(cRef))
Я разрабатываю приложение для метро Windows 8, которое может управлять камерой canon. Мое приложение обнаруживает камеру и также получает информацию об устройстве. Но когда я открываю сессию камеры "err = EdsOpenSession(cRef)", я получаю ошибку "EDS_ERR_DEVICE_NOT_FOUND".
Но я обнаружил камеру, когда я вызываю функцию ниже -
private uint GetFirstCamera()
{
// Variable initilazions
IntPtr cameraList;
uint err;
int count;
// Get list of cameras;
err = EdsGetCameraList(out cameraList);
if (err != EDS_ERR_OK)
{
return err;
}
// Get count of cameras in list
err = EdsGetChildCount(cameraList, out count);
if (err != EDS_ERR_OK)
{
return err;
}
if (count == 0)
{
return EDS_ERR_DEVICE_NOT_FOUND;
}
// Get first camera to public cRef
err = EdsGetChildAtIndex(cameraList, 0, out cRef);
if (err != EDS_ERR_OK)
{
return err;
}
EDSDKLib.EDSDK.EdsDeviceInfo deviceInfo;
//Canon EOS REBEL T1i
if (err == EDS_ERR_OK)
{
err = EdsGetDeviceInfo(cRef, out deviceInfo);
if (err == EDS_ERR_OK & (cRef == null) == true)
{
err = (uint)EDS_ERR_DEVICE_NOT_FOUND;
}
}
// release camera list
if (cameraList != null)
{
EdsRelease(cameraList);
}
// everything went just fine
return EDS_ERR_OK;
}
Вот мой полный код инициализации -
public uint Initialize()
{
// err init
uint err;
// Initilize SDK.
// SDK initilizion is needed to use EDSDK functions
err = EdsInitializeSDK();
// In case of error pass it on...
if (err != EDS_ERR_OK)
{
return err;
}
// get first camera connected to computer
err = GetFirstCamera(); // **MY CAMERA IS DETECTED IN THIS FUNCTION**
if (err != EDS_ERR_OK)
{
return err;
}
err = EdsSetObjectEventHandler(cRef, ObjectEvent_All, ObjectEventHandler, IntPtr.Zero);
// Open session to camera
// **ERROR HAPPENS HERE .RETURNS ERROR CODE 128 - EDS_ERR_DEVICE_NOT_FOUND**
err = EdsOpenSession(cRef);
if (err != EDS_ERR_OK)
{
return err;
}
// We don't want to save pictures to the camera so lets set save target to host
err = EdsSetPropertyData(cRef, PropID_SaveTo, 0, 4, 1);
return err;
}
Я попробовал тот же код в приложении WPF, и он работает. Это происходит только в приложениях магазина Windows / приложениях Metro. Моя камера - Canon EOS REBEL T1i.SDK Я использую версию 2.11.
2 ответа
Метро приложение не может общаться с устройством за пределами песочницы. Причина 426, что я не пишу приложения для метро.
Проверьте, если вы собираете "ЛЮБОЙ ЦП". Canon EDSDK работает только для "x86", даже если у вас Windows 64 бит.
Это помогает?