В настоящее время я работаю над проектом с использованием Sony Camera Remote SDK (v1.12.00) и не могу заставить функцию подключения возвращать дескриптор устройства, что бы я ни делал. Я попробовал повторно загрузить и пересобрать SDK, чтобы убедиться, что SDK в порядке.
Когда я печатаю дескриптор устройства после подключения, я получаю только «0» или (NULL), что означает, что оно не изменилось с момента его объявления.
Также важно отметить, что SDK инициализирует и создает USB-объект для моей камеры, но не выполняет процесс подключения.
Вот код, над которым я работаю:
#include <cstdlib>
#include <cstdint>
#include <iomanip>
#include "CRSDK/CameraRemote_SDK.h"
#include "CameraDevice.h"
#include "Text.h"
#include <iostream>
#include <chrono>
#include <thread>
using namespace std::chrono_literals;
using namespace SCRSDK;
class MyDeviceCallback : public IDeviceCallback {
void OnConnected(DeviceConnectionVersioin version) {
DeviceConnectionVersioin ver = version;
// Program can use the device handle.
}
};
int main() {
CrCameraDeviceModelList usbModel = CrCameraDeviceModelList::CrCameraDeviceModel_ILX_LR1;
ICrCameraObjectInfo* pCam = nullptr;
CrChar serialNum[(SCRSDK::USB_SERIAL_LENGTH + 1)] = { 0 }; // +1 is Null-terminate
memcpy(serialNum, L"D516000F44E5", sizeof(serialNum)); // wide char on Windows
CrError err = CreateCameraObjectInfoUSBConnection(&pCam, usbModel, (unsigned char*)serialNum);
MyDeviceCallback* cb = new MyDeviceCallback();
CrDeviceHandle hDev = NULL;
/*camera->connect(CrSdkControlMode_Remote, CrReconnecting_ON);*/
Connect(pCam, cb, &hDev, CrSdkControlMode_Remote, CrReconnecting_ON, 0, 0, 0, 0U);
std::cout << hDev << " : Device Handle" << std::endl;
std::cout << err << std::endl;
SendCommand(hDev, CrCommandId::CrCommandId_Release, CrCommandParam_Down);
// Wait, then send shutter up
std::this_thread::sleep_for(35ms);
SendCommand(hDev, CrCommandId::CrCommandId_Release, CrCommandParam_Up);
}
Я также убедился, что у компоновщика есть файлы .lib, что он может видеть dll и что заголовки видны.
Они оба возвращают CrError_None
или 0. Также я прошу прощения, мне следовало быть более ясным в своем вопросе, я не могу заставить функцию Connect()
что-либо делать с hDev
. hDev
остается нулевым даже после вызова функции Connect()
, и функция должна его изменить.
Тогда вам следует обратиться за помощью к автору SDK. Предоставленный вами код выглядит нормально, судя по нескольким примерам, которые я смог найти (не считая отсутствия проверки ошибок).
После небольшого обсуждения с Sony мы нашли решение.
Метод SCRSDK::CreateCameraInfoUSBConnection()
не работает и будет удален в следующем выпуске SDK.
Хотя оказалось, что проблема заключалась в методе SCRSDK::Connect()
. Это было SCRSDK::CreateCameraInfoUSBConnection()
, потому что ошибок не выдавалось, а в моей переменной pCam были некоторые данные.
С этого момента используйте ICrEnumCameraObjectInfo::GetCameraObjectInfo()
для генерации данных устройства.
Connect()
возвращаетCrError
, как иCreateCameraObjectInfoUSBConnection()
. Какие значения они оба возвращают? Вы распечатываете только 1-й.