golang sdk后端怎么用_使用golang对海康sdk进行业务开发

本文介绍了如何在Golang环境下,通过cgo调用海康威视的SDK进行摄像头操作,如登录、拍照和录像。主要步骤包括修改SDK头文件以适应cgo,处理数据类型转换,并展示了初始化、登录、播放视频、抓拍和退出等关键代码示例。
摘要由CSDN通过智能技术生成

项目最近需要改造升级:操作海康摄像头(包括登录,拍照,录像)等基本功能。经过一段时间研究后,发现使用golang的cgo来进行开发,甚是方便,不用考虑生成多余的golang代码,直接调用海康sdk中的函数代码。

准备工作

开发环境信息

在Windows10下进行开发,使用海康sdk是CH-HCNetSDKV6.0.2.35_build20190411_Win64版本。go版本号go1.12.7。

改写HCNetSDK.h头文件

海康威视提供的头文件是不能被cgo所识别的,而cgo是不能使用C++相关的东西的,比如标准库或者C++的面向对象特性,导致其会疯狂的报语法错误.

查询资料后得知,该头文件中有以下情况,就不能通过编译:

注释里面套注释,例如这样的//这里是注释1 /*这里是注释2*/

#define xxx时,若后面函数被xxx修饰,当xxx无对应的值而仅仅是被定义的时候;

c++语法,例如联合嵌套在C++中是不支持的,c++的bool类型等

在开发的时候,发现原HCNetSDK.h文件里面有五万多行,如果全部的改造,那么会花费大量的时间。在c++开发的同事的建议下:只取出与开发功能相关的代码进行改造(改造为cgo可以识别的代码)。

改造规则如下:

去掉所有注释

去掉函数前面的NET_DVR_API和__std

去掉CALLBACK

为没有tag的结构体加上tag前缀

删除无实现的函数

开发过程

基本数据类型转换

由于在开发过程中涉及到基本的golang和c的数据类型转换,查阅资料后,转换对应关系如下:

C语言类型

CGO类型

Go语言类型

char

C.char

byte

singed char

C.schar

int8

unsigned char

C.uchar

uint8

short

C.short

int16

unsigned short

C.ushort

uint16

int

C.int

int32

unsigned int

C.uint

uint32

long

C.long

int32

unsigned long

C.ulong

uint32

long long

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值