嵌入式案例:Sony Camera Remote SDK API编写设计

嵌入式技术

1338人已加入

描述

使用Sony相机最快乐的一点就是开放SDK,所以让相机用作工业用途有了可以实现的软件基础,但是我C++写的太恶心了,只能先看API的参考,对SDK有大致的了解后,开始编写App。

C++

最后就是我小相机了

C++

一般是搭配嵌入式的平台一起,ESP32估计是没有戏了

C++

注意要先准备好设备的回调函数,相当于一个后台的线程来管理相机和主机的连接状态。而且这个回调函数也会调用别的回调函数,完成提醒等工作。

C++

连接过程是异步的,这个图的左边的线是,用户的线程,中间这个线是SDK的API,右边是SDK和相机内部的线程。

C++

这个远程识别的常数是300,是固定的

C++

这个是初始化的函数,init方法里面的0参数是固定的

C++

这个是释放资源,气死我了后面括号没有成对!!!

在相机断开连接以后执行这个函数是正确的

C++

枚举设别到的相机

返回的info函数里面包含了有的相机的列表,GetCameraObjectInfo这个函数是会反映相机的详细信息。最后不用的时候释放资源。

C++

看下面这个连接的函数,第一个参数是要连接的相机对象,就是上文检测到的函数对象。接着参数是一个回调函数,用来通知SDK的通信事件,第三个参数是控制远程模式的。

C++

具体使用的时候是这样的

C++

SDK连接状态的变化

C++

连接多个相机时候,每一个handle都可以控制一个相机

C++

这个可能看的更清晰一些

C++

上面是连接,下面是控制

C++

获得相机属性,三参数:第一个是设备的handle,第二个是指向属性的指针,第三个是这个属性列表的大小。

成功接收的属性列表:

C++

都在此处保存

C++

C++

C++

这个函数可以改变相机的属性,而且这个函数不是同步的调用,执行后是送入发送队列的。

属性不会因为状态而改变,SDK也不通知你干啥,所以应该延时读取属性,然后读取状态,进行页面状态更新,也就是说,这个过程需要开发者自己处理。

 SDK::SendCommand(m_device_handle, SDK::CrCommandId::CrCommandId_Release, SDK::CrCommandParam_Down);

命令的发送方法

C++

C++

按下和松开

C++

一个简单的demo

C++

索引的命令ID,第一个是盛开,第二个是影片录制,取消对焦,媒体格式,媒体快速格式,取消内容传输等。

这个发送函数的优先级很高,所以我个人建议是经常的使用。

C++

实时的获取试图,这个可能是一个很重要的事情

C++

函数在这里

C++

不解释了,Mac截图麻烦死了,后面是得到预览的图像信息

C++

一个图像是一个类封装的,也有帧的大小,内部有图像大小

C++

内部也简单的对数据类型进行了重构,32和64

C++

这个是一个数据块的获取,Data回来的是一个数据指针,Size是一个数据的大小

C++

一个小的demo,线获取一帧,得到数据内存的大小,接着把它复制过来。

传输的时候每一帧都会给一个增量的数字,用来判断要不要复制缓冲区,一看数字,复制过,就可以不工作了。

C++

这个函数可以选择保存的位置

C++

更改的保存路径

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_473010144 2023-08-25
0 回复 举报
请问你当时用的是哪个硬件开发平台呢?我现在想用RK3399开发,不知道能不能支持 收起回复
jf_473010144 2023-08-25
0 回复 举报
您好,请问这个SDK在RK3399上可以开发吗?RK3399也是ARMV864BIT的 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分