|
|
@@ -33,6 +33,7 @@ struct mvs_camera::impl {
|
|
|
static void on_error(unsigned int msg_type, void *user_data) {
|
|
|
auto pimpl = (impl *) user_data;
|
|
|
SPDLOG_ERROR("MVS camera {} exception 0x{:x}.", pimpl->cam_name, msg_type);
|
|
|
+ if (msg_type == 0x8003) return; // stop capture
|
|
|
assert(false);
|
|
|
}
|
|
|
|
|
|
@@ -78,7 +79,7 @@ bool mvs_camera::open(std::string_view camera_name) {
|
|
|
}
|
|
|
pimpl->cam_name = camera_name;
|
|
|
|
|
|
- MVS_API_CHECK(MV_CC_IsDeviceAccessible(dev_info, MV_ACCESS_Control));
|
|
|
+// MVS_API_CHECK(MV_CC_IsDeviceAccessible(dev_info, MV_ACCESS_Control));
|
|
|
MVS_API_CHECK(MV_CC_CreateHandle(&pimpl->handle, dev_info));
|
|
|
MVS_API_CHECK(MV_CC_OpenDevice(pimpl->handle, MV_ACCESS_Control));
|
|
|
|
|
|
@@ -90,6 +91,7 @@ bool mvs_camera::open(std::string_view camera_name) {
|
|
|
MVS_API_CHECK(MV_CC_RegisterExceptionCallBack(pimpl->handle, impl::on_error, pimpl.get()));
|
|
|
MVS_API_CHECK(MV_CC_RegisterImageCallBackEx(pimpl->handle, impl::on_image, pimpl.get()));
|
|
|
|
|
|
+ SPDLOG_INFO("Camera {} opened successfully.", pimpl->cam_name);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -99,6 +101,7 @@ void mvs_camera::close() {
|
|
|
MV_CC_CloseDevice(pimpl->handle);
|
|
|
MV_CC_DestroyHandle(pimpl->handle);
|
|
|
pimpl->handle = nullptr;
|
|
|
+ SPDLOG_INFO("Camera {} closed.", pimpl->cam_name);
|
|
|
}
|
|
|
|
|
|
bool mvs_camera::start_capture(const capture_config *config) {
|
|
|
@@ -116,12 +119,15 @@ bool mvs_camera::start_capture(const capture_config *config) {
|
|
|
|
|
|
MVS_API_CHECK(MV_CC_StartGrabbing(pimpl->handle));
|
|
|
pimpl->is_capturing = true;
|
|
|
+ SPDLOG_INFO("Camera {} is capturing.", pimpl->cam_name);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
void mvs_camera::stop_capture() {
|
|
|
if (pimpl->handle == nullptr || !pimpl->is_capturing) return;
|
|
|
MV_CC_StopGrabbing(pimpl->handle);
|
|
|
+ pimpl->is_capturing = false;
|
|
|
+ SPDLOG_INFO("Camera {} stopped capturing.", pimpl->cam_name);
|
|
|
}
|
|
|
|
|
|
bool mvs_camera::software_trigger() {
|
|
|
@@ -133,4 +139,12 @@ bool mvs_camera::software_trigger() {
|
|
|
void mvs_camera::retrieve_image(cv::cuda::GpuMat **image_ptr) {
|
|
|
pimpl->next_img.wait(nullptr);
|
|
|
*image_ptr = pimpl->next_img.exchange(*image_ptr);
|
|
|
+}
|
|
|
+
|
|
|
+bool mvs_camera::is_opened() const {
|
|
|
+ return pimpl->handle != nullptr;
|
|
|
+}
|
|
|
+
|
|
|
+bool mvs_camera::is_capturing() const {
|
|
|
+ return pimpl->is_capturing;
|
|
|
}
|