windows下怎么实现uvc设备的控制

wangkingyuan 2016-12-12 01:48:55
现有一个带扩展单元的uvc设备,怎么实现软件对设备的控制。
用vc实现软件的步骤是怎么样的,烦请赐教。
...全文
5140 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mokx 2018-08-01
  • 打赏
  • 举报
回复
你好,我在开发uvc 扩展相关的程序。也看了一些微软的教程,但思路上面还是有些不明白。 方便的话一起交流一下,QQ 182215507,谢谢!
wangkingyuan 2016-12-16
  • 打赏
  • 举报
回复
目前.ax文件已经编译出来了,接下来就是使用了,谢谢大家的帮忙
ostric 2021-07-22
  • 举报
回复
@wangkingyuan 自定义了一个filter做EU控制?
wangkingyuan 2016-12-13
  • 打赏
  • 举报
回复
引用 9 楼 VisualEleven 的回复:
那你得去查看一下你硬件的datasheet,看看哪个GPIO可以控制灯的。
嗯,那是另外一种方法。现在是这样的,摄像头有一个控制是做在扩展单元上的, https://msdn.microsoft.com/windows/hardware/drivers/stream/uvc-extension-unit-code-samples有部分实现,但通篇看下来 思路不是很清晰,望大家能帮忙梳理梳理。
Eleven 2016-12-13
  • 打赏
  • 举报
回复
那你得去查看一下你硬件的datasheet,看看哪个GPIO可以控制灯的。
wangkingyuan 2016-12-13
  • 打赏
  • 举报
回复
@Eleven https://msdn.microsoft.com/windows/hardware/drivers/stream/uvc-extension-unit-code-samples 我现在参考这上面的,在做扩展单元的控制
wangkingyuan 2016-12-13
  • 打赏
  • 举报
回复
扩展单元描述符
引用 6 楼 VisualEleven 的回复:
[quote=引用 3 楼 wangkingyuan 的回复:] @Eleven uvc协议的摄像头,我们可以通过directshow控制他的曝光、亮度、对比度之类的。现给uvc设备加上了扩展单元,通过扩展单元控制焦距等。软件这边改怎么实现?
Directshow中可以实现控制焦距的功能。比如下面代码实现了自动聚焦:

HRESULT CCameraCaptureImp::AutoFocus(void)
{
	CCommon::PRINT(DBG_INF, TEXT("CCameraCaptureImp::AutoFocus()."));
	HRESULT hRes = S_FALSE;
	_ASSERT(NULL != m_pCapDev);
	IAMCameraControl* pCamera = NULL;
	// Obtain camera control
	CHECK(m_pCapDev->QueryInterface(IID_IAMCameraControl, (void**)&pCamera));
	CCommon::PRINT(DBG_INF, TEXT("CCameraCaptureImp::AutoFocus() Obtain Camera Control Completed."));

	// Set auto focus
	_ASSERT(NULL != pCamera);
	CHECK(pCamera->Set(CameraControl_Focus, 0, CameraControl_Flags_Auto));
	CCommon::PRINT(DBG_INF, TEXT("CCameraCaptureImp::AutoFocus() Set Auto Focus Completed."));

	hRes = S_OK;

__CLEANUP__:
	SAFE_RELEASE(pCamera);
	CCommon::PRINT(DBG_INF, TEXT("CCameraCaptureImp::AutoFocus() Completed."));
	return hRes;
}
[/quote] 如果directshow没提供接口,例如设备上有一个led灯,控制灯的部分在uvc扩展单元中,我又该怎么操作呢?
Eleven 2016-12-13
  • 打赏
  • 举报
回复
引用 3 楼 wangkingyuan 的回复:
@Eleven uvc协议的摄像头,我们可以通过directshow控制他的曝光、亮度、对比度之类的。现给uvc设备加上了扩展单元,通过扩展单元控制焦距等。软件这边改怎么实现?
Directshow中可以实现控制焦距的功能。比如下面代码实现了自动聚焦:

HRESULT CCameraCaptureImp::AutoFocus(void)
{
	CCommon::PRINT(DBG_INF, TEXT("CCameraCaptureImp::AutoFocus()."));
	HRESULT hRes = S_FALSE;
	_ASSERT(NULL != m_pCapDev);
	IAMCameraControl* pCamera = NULL;
	// Obtain camera control
	CHECK(m_pCapDev->QueryInterface(IID_IAMCameraControl, (void**)&pCamera));
	CCommon::PRINT(DBG_INF, TEXT("CCameraCaptureImp::AutoFocus() Obtain Camera Control Completed."));

	// Set auto focus
	_ASSERT(NULL != pCamera);
	CHECK(pCamera->Set(CameraControl_Focus, 0, CameraControl_Flags_Auto));
	CCommon::PRINT(DBG_INF, TEXT("CCameraCaptureImp::AutoFocus() Set Auto Focus Completed."));

	hRes = S_OK;

__CLEANUP__:
	SAFE_RELEASE(pCamera);
	CCommon::PRINT(DBG_INF, TEXT("CCameraCaptureImp::AutoFocus() Completed."));
	return hRes;
}
wangkingyuan 2016-12-13
  • 打赏
  • 举报
回复
https://msdn.microsoft.com/windows/hardware/drivers/stream/uvc-extension-unit-code-samples 这是msdn上提供的,通篇看下来,思路不是很清晰,还望大家帮我梳理下。
wangkingyuan 2016-12-13
  • 打赏
  • 举报
回复
@shiyanzi 有好的demo吗,发个链接参考下呗
wangkingyuan 2016-12-13
  • 打赏
  • 举报
回复
@Eleven uvc协议的摄像头,我们可以通过directshow控制他的曝光、亮度、对比度之类的。现给uvc设备加上了扩展单元,通过扩展单元控制焦距等。软件这边改怎么实现?
  • 打赏
  • 举报
回复
有提供驱动和demo的吧
Eleven 2016-12-12
  • 打赏
  • 举报
回复
你想要控制什么什么?摄像头?

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧