海思[Hi3531]onvif协议实现基于gsoap和openssl_代码篇

海思[Hi3531]onvif协议实现基于gsoap和openssl_代码篇

onvif的openssl和gsoap的环境搭建可以参考上一篇
海思[Hi3531]onvif协议实现基于gsoap和openssl

编写代码

直接附上main函数代码

int result = 0;
struct soap soap;
soap_init(&soap);
enum xsd__boolean ForceStorage;
//******************************************************************
char * ip;
char Mediaddr[256] = "";
char profile[256] = "";
struct _tds__GetCapabilities            	req;
struct _tds__GetCapabilitiesResponse    	rep;

req.Category = (enum tt__CapabilityCategory *)soap_malloc(&soap, sizeof(int));
//申请4个字节内存
req.__sizeCategory = 1;//元素序列的类型
*(req.Category) = (enum tt__CapabilityCategory)0;//0意味着要获取全部类型信息的枚举


char endpoint[255];
memset(endpoint, '\0', 255);
if (argc > 1)
{
	ip = argv[1];
}
else
{
	ip = "192.168.1.18";
}
sprintf(endpoint, "http://%s/onvif/device_service", ip);
//这里输入想要获取信息的模块的地址
soap_call___tds__GetCapabilities(&soap, endpoint, NULL, &req, &rep);
if (soap.error)
{
	printf("[%s][%d]--->>> soap result: %d, %s, %s\n", __func__, __LINE__,
		soap.error, *soap_faultcode(&soap),
		*soap_faultstring(&soap));
}
else
{
	printf("get capability success\n");
	printf("Mediaddr_XAddr====%s\n", rep.Capabilities->Media->XAddr);
	strcpy(Mediaddr, rep.Capabilities->Media->XAddr);
}
printf("\n");
return result;

Makefile文件编写

Makefile.inc文件内容:
SHELL = /bin/bash
 
CC           := arm-hisiv500-linux-gcc 
CPP          := arm-hisiv500-linux-g++
LD           := arm-hisiv500-linux-ld
AR           := arm-hisiv500-linux-ar
STRIP        := strip

 
CFLAGS += -c -g -Wall -DWITH_DOM -DWITH_OPENSSL -DDEBUG
CFLAGS += $(INCLUDE)
 
# openssl目录名
OPENSSL_DIR = /usr/local/ssl
# 源文件
SOURCES_ONVIF += \
           ../onvif/soapC.c                          \
           ../onvif/soapClient.c                     \
           ../onvif/stdsoap2.c                       \
           ../onvif/wsaapi.c                         \
           ../onvif/dom.c                            \
           ../onvif/mecevp.c                         \
           ../onvif/smdevp.c                         \
           ../onvif/threads.c                        \
           ../onvif/wsseapi.c                        \
	../onvif/duration.c	
 
# 目标文件
OBJECTS_ONVIF := $(patsubst %.c,$(TEMPDIR)%.o,$(filter %.c, $(SOURCES_ONVIF)))
 
# 头文件路径
INCLUDE += -I../onvif/                               \
           -I$(OPENSSL_DIR)/include                  \
 
# 静态库链接OpenSSL
LDLIBS += $(OPENSSL_DIR)/lib/libssl.a                \
          $(OPENSSL_DIR)/lib/libcrypto.a             \
          -ldl -lm                                      \
 
# 链接库(其他)
LDLIBS += -lpthread
 
%.o: %.cpp
	@echo "  CPP     " $@;
	@$(CPP) $(CFLAGS) -c -o $@ $<
 
%.o: %.c
	@echo "  CC      " $@;
	@$(CC) $(CFLAGS) -c -o $@ $<
 
.PHONY: all clean
makefile文件内容:
include Makefile.inc
 
PROGRAM = PTZ
 
SOURCES += myptz.c
 
OBJECTS := $(patsubst %.c,$(TEMPDIR)%.o,$(filter %.c, $(SOURCES)))
 
all: $(OBJECTS_ONVIF) $(OBJECTS_COMM) $(OBJECTS)
	$(CC) -o $(PROGRAM) $(OBJECTS_ONVIF) $(OBJECTS_COMM) $(OBJECTS) $(LDLIBS)
 
clean:
	rm -f $(OBJECTS_ONVIF)
	rm -f $(OBJECTS_COMM)
	rm -f $(OBJECTS)
	rm -f $(PROGRAM)

烧录程序

编译完成后会生成如图执行文件
在这里插入图片描述
如果有网口你可以用nfs文件系统或者tftp传输程序,没的话就用SecureCRT串口传输

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I&You

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值