use*_*821 3 c++ edsdk canon-sdk
我正在使用EDSDK v2.13和我的EOS 50D相机.我想在我的主人中保存拍摄的照片.我正在使用此代码(c ++):
EdsOpenSession(camera);
EdsInt32 saveTarget = kEdsSaveTo_Both;
err = EdsSetPropertyData( camera, kEdsPropID_SaveTo, 0, 4, &saveTarget );
EdsCapacity newCapacity = {0x7FFFFFFF, 0x1000, 1};
err = EdsSetCapacity(camera, newCapacity);
const char* ch_dest = "C:\\photo\\Img.jpg";
EdsCreateFileStreamEx( ch_dest ,kEdsFileCreateDisposition_CreateNew,kEdsAccess_ReadWrite, 0);
EdsSendCommand(camera, kEdsCameraCommand_TakePicture, 0);
EdsCloseSession(camera);
EdsTerminateSDK();
Run Code Online (Sandbox Code Playgroud)
相机快门正常闪光,我在相机的存储卡中找到了照片,但我在电脑上找不到它.
请帮忙.
它不起作用.拍摄照片后,您需要捕获ObjectEvent然后下载文件.它的工作原理如下:
对不起,我无法为您提供实际代码,我不是C++开发人员.如果你愿意,我可以告诉你一些C#代码.要获得有关函数如何工作的更多详细信息,您还可以查看SDK的文档.
亲切的问候
编辑:
好的,一些C++代码在文档的帮助下:请注意,这就是它最简单的形式.你应该经常检查是否错误!= EDS_ERR_OK.并且只有在下载图像后才能调用Close.
void TakePhoto()
{
EdsError err = EDS_ERR_OK;
EdsCameraRef camera = NULL;
EdsCameraListRef cameraList = NULL;
EdsUInt32 count = 0;
err = EdsInitializeSDK();
err = EdsGetCameraList(&cameraList);
err = EdsGetChildCount(cameraList, &count);
if (count > 0)
{
err = EdsGetChildAtIndex(cameraList, 0, &camera);
cameraList = NULL;
err = EdsSetObjectEventHandler(camera, kEdsObjectEvent_All, handleObjectEvent, NULL);
err = EdsOpenSession(camera);
err = EdsSendCommand(camera, kEdsCameraCommand_TakePicture, 0);
}
}
void Close(EdsCameraRef *camera)
{
err = EdsCloseSession(camera);
EdsRelease(camera);
EdsTerminateSDK();
}
static EdsError EDSCALLBACK handleObjectEvent(EdsObjectEvent event, EdsBaseRef object, EdsVoid * context)
{
if (event == kEdsObjectEvent_DirItemRequestTransfer)
{
EdsError err = EDS_ERR_OK;
EdsStreamRef stream = NULL;
EdsDirectoryItemInfo dirItemInfo;
err = EdsGetDirectoryItemInfo(object, &dirItemInfo);
err = EdsCreateFileStream(dirItemInfo.szFileName, kEdsFileCreateDisposition_CreateAlways, kEdsAccess_ReadWrite, &stream);
err = EdsDownload(object, dirItemInfo.size, stream);
err = EdsDownloadComplete(object);
EdsRelease(stream);
stream = NULL;
}
if (object) EdsRelease(object);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2912 次 |
| 最近记录: |