14 Commits
1.0.0 ... 1.0.2

Author SHA1 Message Date
kunmeng
d563b72610 移除Golang的内容 2025-01-08 09:40:54 +08:00
41d8da2401 1. 修改按月查询的数据返回
2. 修复一点击即视的死锁问题
2024-11-14 09:44:00 +08:00
763376a95c 1. 返回合适的错误标识 2024-10-31 15:29:13 +08:00
8afb72cab6 1. 海康设备状态加入到结构体中 2024-10-31 15:22:07 +08:00
3e7ead4a2f 补充上次提交 2024-10-28 13:57:25 +08:00
10f587962f 添加 获取海康NVR时区的API 2024-10-28 13:24:18 +08:00
3fd2fc4062 1. 修改 Docker Hub 使用内部镜像源
2. 修改 Arm 加载动态链接库链接路径前面的空格
2024-10-24 13:55:17 +08:00
002d24e2b0 1. 添加 获取 Nvr 与 UTC 之间的插曲接口
2. 修复 球机聚焦接口存在的错误
3. 修复 PTZ 跳转到指定位置 Action 参数标准海康接口下无效的问题,以及无法设置Z值
4. 移除 GetBallCameraByName
5. 添加 PointPair 配置文件结构
2024-10-22 15:20:51 +08:00
bd6cff81ec 1. 添加 球机的一点即视 和 逆运算接口
2. 添加 Nvr 和 球机 的配置结构体 和一些基本结构体类型
3. 修改 Nvr 和 球机 的 Login 方法
4. 修复 球机部分 MOVE 操作无法停止
5. 修复 HikBase Login 返回值错误
2024-10-12 12:43:38 +08:00
a52e1a27fc 1. 修复 Go 不同架构下 getSystemLibrary 获取的 dll 名 2024-10-10 16:30:40 +08:00
4fa9ce6131 1. 修复 包名为 HikNetSDK 2024-10-10 15:17:04 +08:00
c36505d530 Merge remote-tracking branch 'origin/master' 2024-10-10 15:15:49 +08:00
167dd8be77 1. 修复 go.mod module 为 gitea.com/kunmeng/HikNetSDKPkg
2. 删除 main.go
2024-10-10 15:15:37 +08:00
77a3e37a0e 1. 修复 go 包名为 gitea.com/kunmeng/HikNetSDKPkg
2. 删除 main.go
2024-10-10 15:10:08 +08:00
15 changed files with 494 additions and 643 deletions

3
.gitignore vendored
View File

@@ -1,6 +1,9 @@
/.idea /.idea
/.cache
/.fleet
/cmake-build-debug-visual-studio /cmake-build-debug-visual-studio
/cmake-build-release-visual-studio /cmake-build-release-visual-studio
/cmake-build-debug
*.lib *.lib
*.dll *.dll
*.so *.so

View File

@@ -44,21 +44,21 @@ if(OS STREQUAL "Windows")
target_link_libraries(HikNetSDKPkg PRIVATE "HCNetSDK.lib") target_link_libraries(HikNetSDKPkg PRIVATE "HCNetSDK.lib")
target_link_libraries(HikNetSDKPkg PRIVATE "HCCore.lib") target_link_libraries(HikNetSDKPkg PRIVATE "HCCore.lib")
target_link_libraries(HikNetSDKPkg PRIVATE "GdiPlus.lib") target_link_libraries(HikNetSDKPkg PRIVATE "GdiPlus.lib")
elseif (Arch STREQUAL "x86_64") elseif (Arch STREQUAL "x86_64" OR Arch STREQUAL "amd64")
target_link_directories(HikNetSDKPkg PRIVATE "./amd64_linux_lib") target_link_directories(HikNetSDKPkg PRIVATE "./amd64_linux_lib")
target_link_libraries(HikNetSDKPkg "libHCCore.so") target_link_libraries(HikNetSDKPkg PRIVATE "libHCCore.so")
target_link_libraries(HikNetSDKPkg "libhcnetsdk.so") target_link_libraries(HikNetSDKPkg PRIVATE "libhcnetsdk.so")
target_link_libraries(HikNetSDKPkg "libhpr.so") target_link_libraries(HikNetSDKPkg PRIVATE "libhpr.so")
target_link_libraries(HikNetSDKPkg "libz.so") target_link_libraries(HikNetSDKPkg PRIVATE "libz.so")
elseif (Arch STREQUAL "aarch64") elseif (Arch STREQUAL "aarch64")
target_link_directories(HikNetSDKPkg PRIVATE "./arm64_linux_lib") target_link_directories(HikNetSDKPkg PRIVATE "./arm64_linux_lib")
target_link_libraries(HikNetSDKPkg "libAudioRender.so") target_link_libraries(HikNetSDKPkg PRIVATE "libAudioRender.so")
target_link_libraries(HikNetSDKPkg "libcrypto.so") target_link_libraries(HikNetSDKPkg PRIVATE "libcrypto.so")
target_link_libraries(HikNetSDKPkg "libHCCore.so") target_link_libraries(HikNetSDKPkg PRIVATE "libHCCore.so")
target_link_libraries(HikNetSDKPkg "libhcnetsdk.so") target_link_libraries(HikNetSDKPkg PRIVATE "libhcnetsdk.so")
target_link_libraries(HikNetSDKPkg "libhpr.so") target_link_libraries(HikNetSDKPkg PRIVATE "libhpr.so")
target_link_libraries(HikNetSDKPkg "libPlayCtrl.so") target_link_libraries(HikNetSDKPkg PRIVATE "libPlayCtrl.so")
target_link_libraries(HikNetSDKPkg "libssl.so") target_link_libraries(HikNetSDKPkg PRIVATE "libssl.so")
target_link_libraries(HikNetSDKPkg "libSuperRender.so") target_link_libraries(HikNetSDKPkg PRIVATE "libSuperRender.so")
target_link_libraries(HikNetSDKPkg "libz.so") target_link_libraries(HikNetSDKPkg PRIVATE "libz.so")
endif () endif ()

View File

@@ -1,10 +1,10 @@
FROM alpine:3.19 AS deps FROM r-2.top/alpine:3.19 AS deps
WORKDIR /usr WORKDIR /usr
RUN apk add gcc g++ cmake make acl RUN apk add gcc g++ cmake make acl
FROM alpine:3.19 AS build FROM r-2.top/alpine:3.19 AS build
WORKDIR /hikbuild WORKDIR /hikbuild
@@ -14,7 +14,7 @@ COPY . /hikbuild
RUN cmake . -D Arch=${TARGETARCH} -D CMAKE_BUILD_TYPE=RELEASE && make RUN cmake . -D Arch=${TARGETARCH} -D CMAKE_BUILD_TYPE=RELEASE && make
FROM alpine:3.19 AS export FROM r-2.top/alpine:3.19 AS export
WORKDIR /home WORKDIR /home
COPY --from=build /hikbuild/build /home COPY --from=build /hikbuild/build /home

View File

@@ -1,107 +0,0 @@
package main
import (
"fmt"
"github.com/ebitengine/purego"
"runtime"
"unsafe"
)
var libc uintptr
var (
DVR_Init func() bool
newHIKBallCamera func() unsafe.Pointer
initBallCamera func(core unsafe.Pointer, ip string, port string, username string, password string, BallMachineType string) bool
ptzTo func(core unsafe.Pointer, Action int, P float32, T float32, Z float32) bool
ptzGet func(unsafe.Pointer, unsafe.Pointer, unsafe.Pointer, unsafe.Pointer) bool
stopBus func(unsafe.Pointer, int) bool
startBus func(unsafe.Pointer, int, int) bool
newHIKNvr func() unsafe.Pointer
initNvr func(unsafe.Pointer, string, string, string, string, int) bool
checkTimeRegionWithMonth func(core unsafe.Pointer, year int, month int) string
checkTimeRegionWithDay func(core unsafe.Pointer, year int, month int, day int) string
)
func init() {
var err error
libc, err = openLibrary(getSystemLibrary())
if err != nil {
panic(err)
}
purego.RegisterLibFunc(&DVR_Init, libc, "DVR_Init")
purego.RegisterLibFunc(&newHIKBallCamera, libc, "NewHIKBallCamera")
purego.RegisterLibFunc(&initBallCamera, libc, "InitBallCamera")
purego.RegisterLibFunc(&ptzTo, libc, "PtzGotoPut")
purego.RegisterLibFunc(&ptzGet, libc, "PtzGet")
purego.RegisterLibFunc(&stopBus, libc, "StopBus")
purego.RegisterLibFunc(&startBus, libc, "StartBus")
purego.RegisterLibFunc(&newHIKNvr, libc, "NewHIKNvr")
purego.RegisterLibFunc(&initNvr, libc, "InitNvr")
purego.RegisterLibFunc(&checkTimeRegionWithMonth, libc, "CheckTimeRegionWithMonth")
purego.RegisterLibFunc(&checkTimeRegionWithDay, libc, "CheckTimeRegionWithDay")
}
func getSystemLibrary() string {
switch runtime.GOOS {
case "linux":
return "libc.so.6"
case "windows":
return "Hikvision_Network_SDK_Packaging_Library.dll"
default:
panic(fmt.Errorf("GOOS=%s is not supported", runtime.GOOS))
}
}
type HIKBallCamera struct {
core unsafe.Pointer
}
func NewHIKBallCamera() *HIKBallCamera {
return &HIKBallCamera{
core: newHIKBallCamera(),
}
}
func (h *HIKBallCamera) Login(ip string, port string, username string, password string, BallMachineType string) bool {
return initBallCamera(h.core, ip, port, username, password, BallMachineType)
}
func (h *HIKBallCamera) PtzTo(Action int, P, T, Z float32) bool {
return ptzTo(h.core, Action, P, T, Z)
}
func (h *HIKBallCamera) PTZGet(P, T, Z *float32) bool {
return ptzGet(h.core, unsafe.Pointer(P), unsafe.Pointer(T), unsafe.Pointer(Z))
}
func (h *HIKBallCamera) StopBus(Direction int) bool {
return stopBus(h.core, Direction)
}
func (h *HIKBallCamera) StartBus(Direction, Speed int) bool {
return startBus(h.core, Direction, Speed)
}
type HIKNvr struct {
core unsafe.Pointer
}
func NewHIKNvr() *HIKNvr {
return &HIKNvr{
core: newHIKNvr(),
}
}
func (h *HIKNvr) Login(ip string, port string, username string, password string, nvrType int) bool {
return initNvr(h.core, ip, port, username, password, nvrType)
}
func (h *HIKNvr) CheckTimeRegionWithMonth(year int, month int) string {
return checkTimeRegionWithMonth(h.core, year, month)
}
func (h *HIKNvr) CheckTimeRegionWithDay(year int, month int, day int) string {
return checkTimeRegionWithDay(h.core, year, month, day)
}

5
go.mod
View File

@@ -1,5 +0,0 @@
module Hik_GoC
go 1.23.1
require github.com/ebitengine/purego v0.8.0

2
go.sum
View File

@@ -1,2 +0,0 @@
github.com/ebitengine/purego v0.8.0 h1:JbqvnEzRvPpxhCJzJJ2y0RbiZ8nyjccVUrSM3q+GvvE=
github.com/ebitengine/purego v0.8.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=

View File

@@ -29,6 +29,7 @@ extern "C" {
Omnimatrix bool InitNvr(void* PtrHIKNvr,char* ip, char* port, char* username, char* password, int channel); Omnimatrix bool InitNvr(void* PtrHIKNvr,char* ip, char* port, char* username, char* password, int channel);
Omnimatrix char* CheckTimeRegionWithMonth(void* PtrHIKNvr,int year,int month); Omnimatrix char* CheckTimeRegionWithMonth(void* PtrHIKNvr,int year,int month);
Omnimatrix char* CheckTimeRegionWithDay(void* PtrHIKNvr,int year,int month,int day); Omnimatrix char* CheckTimeRegionWithDay(void* PtrHIKNvr,int year,int month,int day);
Omnimatrix int NvrUTCDiff(void* PtrHIKNvr);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -3,50 +3,50 @@
#include "src/HIKNvr.h" #include "src/HIKNvr.h"
#include <cstring> #include <cstring>
bool DVR_Init(){ bool DVR_Init() {
return HK_DVR_Init(); return HK_DVR_Init();
} }
void* NewHIKBallCamera() { void *NewHIKBallCamera() {
return new HIKBallCamera(); return new HIKBallCamera();
} }
bool InitBallCamera(void* PtrHIKBallCamera,const char* ip, const char* port,const char* username,const char* password,const char* BallMachineType){ bool InitBallCamera(void *PtrHIKBallCamera, const char *ip, const char *port, const char *username, const char *password, const char *BallMachineType) {
auto* HIKBallCameraObj = (HIKBallCamera*)PtrHIKBallCamera; auto *HIKBallCameraObj = (HIKBallCamera *)PtrHIKBallCamera;
return HIKBallCameraObj->InitBallCamera(ip,port,username,password,BallMachineType); return HIKBallCameraObj->InitBallCamera(ip, port, username, password, BallMachineType);
} }
bool PtzGotoPut(void* PtrHIKBallCamera,int Action, float P, float T, float Z){ bool PtzGotoPut(void *PtrHIKBallCamera, int Action, float P, float T, float Z) {
auto* HIKBallCameraObj = (HIKBallCamera*)PtrHIKBallCamera; auto *HIKBallCameraObj = (HIKBallCamera *)PtrHIKBallCamera;
return HIKBallCameraObj->PtzGotoPut(Action,P,T,Z); return HIKBallCameraObj->PtzGotoPut(Action, P, T, Z);
} }
bool PtzGet(void* PtrHIKBallCamera,void *P, void *T, void *Z){ bool PtzGet(void *PtrHIKBallCamera, void *P, void *T, void *Z) {
auto* HIKBallCameraObj = (HIKBallCamera*)PtrHIKBallCamera; auto *HIKBallCameraObj = (HIKBallCamera *)PtrHIKBallCamera;
return HIKBallCameraObj->PtzGet((float*)P,(float*)T,(float*)Z); return HIKBallCameraObj->PtzGet((float *)P, (float *)T, (float *)Z);
} }
bool StopBus(void* PtrHIKBallCamera,int direction){ bool StopBus(void *PtrHIKBallCamera, int direction) {
auto* HIKBallCameraObj = (HIKBallCamera*)PtrHIKBallCamera; auto *HIKBallCameraObj = (HIKBallCamera *)PtrHIKBallCamera;
return HIKBallCameraObj->StopBus(direction); return HIKBallCameraObj->StopBus(direction);
} }
bool StartBus(void* PtrHIKBallCamera,int direction,int speed){ bool StartBus(void *PtrHIKBallCamera, int direction, int speed) {
auto* HIKBallCameraObj = (HIKBallCamera*)PtrHIKBallCamera; auto *HIKBallCameraObj = (HIKBallCamera *)PtrHIKBallCamera;
return HIKBallCameraObj->StartBus(direction,speed); return HIKBallCameraObj->StartBus(direction, speed);
} }
void* NewHIKNvr(){ void *NewHIKNvr() {
return new HIKNvr(); return new HIKNvr();
} }
bool InitNvr(void* PtrHIKNvr,char* ip, char* port, char* username, char* password, int channel){ bool InitNvr(void *PtrHIKNvr, char *ip, char *port, char *username, char *password, int channel) {
auto* HIKNvrObj = (HIKNvr*)PtrHIKNvr; auto *HIKNvrObj = (HIKNvr *)PtrHIKNvr;
return HIKNvrObj->InitNvr(ip,port,username,password,channel); return HIKNvrObj->InitNvr(ip, port, username, password, channel);
} }
char* CheckTimeRegionWithMonth(void* PtrHIKNvr,int year,int month){ char *CheckTimeRegionWithMonth(void *PtrHIKNvr, int year, int month) {
auto* HIKNvrObj = (HIKNvr*)PtrHIKNvr; auto *HIKNvrObj = (HIKNvr *)PtrHIKNvr;
DateTime select_time; DateTime select_time;
select_time.year() = year; select_time.year() = year;
@@ -58,17 +58,18 @@ char* CheckTimeRegionWithMonth(void* PtrHIKNvr,int year,int month){
std::vector<int> available_date_vec; std::vector<int> available_date_vec;
nRet = HIKNvrObj->CheckTimeRegionWithMonth(select_time, available_date_vec); nRet = HIKNvrObj->CheckTimeRegionWithMonth(select_time, available_date_vec);
if (nRet == 0) if (nRet == 0) {
{
res = HIKNvrObj->TimeToJson(select_time, &available_date_vec).dump(); res = HIKNvrObj->TimeToJson(select_time, &available_date_vec).dump();
}else{
res = "";
} }
char* cString = new char[res.size() + 1]; char *cString = new char[res.size() + 1];
std::strcpy(cString,res.c_str()); std::strcpy(cString, res.c_str());
return cString; return cString;
} }
char* CheckTimeRegionWithDay(void* PtrHIKNvr,int year,int month,int day){ char *CheckTimeRegionWithDay(void *PtrHIKNvr, int year, int month, int day) {
auto* HIKNvrObj = (HIKNvr*)PtrHIKNvr; auto *HIKNvrObj = (HIKNvr *)PtrHIKNvr;
DateTime select_time; DateTime select_time;
select_time.year() = year; select_time.year() = year;
select_time.month() = month; select_time.month() = month;
@@ -76,11 +77,17 @@ char* CheckTimeRegionWithDay(void* PtrHIKNvr,int year,int month,int day){
std::string res; std::string res;
std::vector<TimeRecord> available_time_vec; std::vector<TimeRecord> available_time_vec;
int nRet = HIKNvrObj->CheckTimeRegionWithDay(select_time, available_time_vec); int nRet = HIKNvrObj->CheckTimeRegionWithDay(select_time, available_time_vec);
if (nRet == 0) if (nRet == 0) {
{
res = HIKNvrObj->TimeToJsonInDay(select_time, &available_time_vec).dump(); res = HIKNvrObj->TimeToJsonInDay(select_time, &available_time_vec).dump();
}else{
res = "";
} }
char* cString = new char[res.size() + 1]; char *cString = new char[res.size() + 1];
std::strcpy(cString,res.c_str()); std::strcpy(cString, res.c_str());
return cString; return cString;
} }
int NvrUTCDiff(void *PtrHIKNvr) {
auto *HIKNvrObj = (HIKNvr *)PtrHIKNvr;
return HIKNvrObj->GetNvrUTCDiff();
}

25
main.go
View File

@@ -1,25 +0,0 @@
package main
import "fmt"
func main() {
SdkInitState := DVR_Init()
println(SdkInitState)
//BallCamera := NewHIKBallCamera()
//res := BallCamera.Login("192.168.211.49", "8000", "admin", "Max123456", "BuKongQiu")
//if !res {
// fmt.Println("Login Failed")
// //return
//}
//var P, T, Z float32
//println(BallCamera.PTZGet(&P, &T, &Z))
Nvr := NewHIKNvr()
res := Nvr.Login("192.168.211.124", "8000", "admin", "guanyaokeji8520", 1)
if !res {
fmt.Println("Login Failed")
return
}
fmt.Println(Nvr.CheckTimeRegionWithMonth(2024, 10))
fmt.Println(Nvr.CheckTimeRegionWithDay(2024, 10, 8))
}

View File

@@ -1,12 +0,0 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: 2023 The Ebitengine Authors
//go:build darwin || freebsd || linux
package main
import "github.com/ebitengine/purego"
func openLibrary(name string) (uintptr, error) {
return purego.Dlopen(name, purego.RTLD_NOW|purego.RTLD_GLOBAL)
}

View File

@@ -1,13 +0,0 @@
// SPDX-License-Identifier: Apache-2.0
// SPDX-FileCopyrightText: 2023 The Ebitengine Authors
package main
import "syscall"
func openLibrary(name string) (uintptr, error) {
// Use [syscall.LoadLibrary] here to avoid external dependencies (#270).
// For actual use cases, [golang.org/x/sys/windows.NewLazySystemDLL] is recommended.
handle, err := syscall.LoadLibrary(name)
return uintptr(handle), err
}

View File

@@ -1,4 +1,7 @@
#include "HIKBallCamera.h" #include "HIKBallCamera.h"
#include <cstring>
#include "FormatTrans.h" #include "FormatTrans.h"
#include <vector> #include <vector>
#include <sstream> #include <sstream>
@@ -21,14 +24,14 @@ bool HIKBallCamera::InitBallCamera(std::string ip, std::string port, std::string
{ {
int res = Login(ip, port, username, password); int res = Login(ip, port, username, password);
if (res != 0){ if (res != 0){
std::cout << "Incorrect Login" << std::endl; std::cout << "Incorrect Login error code:" << res << std::endl;
return false; return false;
} }
m_Channel = DeviceInfo.byStartChan; m_Channel = DeviceInfo.byStartChan;
this->BallMachineType = BallMachineType; this->BallMachineType = BallMachineType;
//建立透明通道 if (BallMachineType == "BuKongQiu"){
NET_DVR_SERIALSTART_V40 struSerialParam = { 0 }; NET_DVR_SERIALSTART_V40 struSerialParam = { 0 };
struSerialParam.dwSize = sizeof(struSerialParam); struSerialParam.dwSize = sizeof(struSerialParam);
struSerialParam.dwSerialType = 2;//1:232串口2:485串口 struSerialParam.dwSerialType = 2;//1:232串口2:485串口
@@ -41,7 +44,7 @@ bool HIKBallCamera::InitBallCamera(std::string ip, std::string port, std::string
NET_DVR_Cleanup(); NET_DVR_Cleanup();
return false; return false;
} }
}
return true; return true;
} }
@@ -93,7 +96,7 @@ bool HIKBallCamera::PtzControlRight(int speed,int state)
SerialSend(PrepareHexString(buf)); SerialSend(PrepareHexString(buf));
return true; return true;
}else{ }else{
return PtzControl(PAN_RIGHT, 0, speed); return PtzControl(PAN_RIGHT, state, speed);
} }
} }
@@ -105,7 +108,7 @@ bool HIKBallCamera::PtzControlUp(int speed,int state)
SerialSend(PrepareHexString(buf)); SerialSend(PrepareHexString(buf));
return true; return true;
}else{ }else{
return PtzControl(TILT_UP, 0, speed); return PtzControl(TILT_UP, state, speed);
} }
} }
@@ -117,7 +120,7 @@ bool HIKBallCamera::PtzControlDown(int speed,int state)
SerialSend(PrepareHexString(buf)); SerialSend(PrepareHexString(buf));
return true; return true;
}else{ }else{
return PtzControl(TILT_DOWN, 0, speed); return PtzControl(TILT_DOWN, state, speed);
} }
} }
@@ -127,7 +130,7 @@ bool HIKBallCamera::PtzControlZoomIn(int speed,int state)
SerialSend(PrepareHexString("ff 01 00 20 00 00 21")); SerialSend(PrepareHexString("ff 01 00 20 00 00 21"));
return true; return true;
}else{ }else{
return PtzControl(ZOOM_IN, 0, speed); return PtzControl(ZOOM_IN, state, speed);
} }
} }
@@ -137,7 +140,7 @@ bool HIKBallCamera::PtzControlZoomOut(int speed,int state)
SerialSend(PrepareHexString("ff 01 00 40 00 00 41")); SerialSend(PrepareHexString("ff 01 00 40 00 00 41"));
return true; return true;
}else{ }else{
return PtzControl(ZOOM_OUT, 0, speed); return PtzControl(ZOOM_OUT, state, speed);
} }
} }
@@ -148,7 +151,7 @@ bool HIKBallCamera::PtzControlFocusAdd(int speed,int state){
SerialSend(PrepareHexString("ff 01 01 00 00 00 02")); SerialSend(PrepareHexString("ff 01 01 00 00 00 02"));
return true; return true;
}else{ }else{
return PtzControl(ZOOM_OUT, 1, speed); return PtzControl(FOCUS_FAR, state, speed);
} }
} }
@@ -158,7 +161,7 @@ bool HIKBallCamera::PtzControlFocusSub(int speed,int state){
SerialSend(PrepareHexString("ff 01 00 80 00 00 81")); SerialSend(PrepareHexString("ff 01 00 80 00 00 81"));
return true; return true;
}else{ }else{
return PtzControl(ZOOM_OUT, 1, speed); return PtzControl(FOCUS_NEAR, state, speed);
} }
} }
@@ -188,7 +191,7 @@ bool HIKBallCamera::PtzControlUpRight(int speed,int state)
SerialSend(PrepareHexString(buf)); SerialSend(PrepareHexString(buf));
return true; return true;
}else{ }else{
return PtzControl(UP_RIGHT, 0, speed); return PtzControl(UP_RIGHT, state, speed);
} }
} }
@@ -200,7 +203,7 @@ bool HIKBallCamera::PtzControlDownLeft(int speed,int state)
SerialSend(PrepareHexString(buf)); SerialSend(PrepareHexString(buf));
return true; return true;
}else{ }else{
return PtzControl(DOWN_LEFT, 0, speed); return PtzControl(DOWN_LEFT, state, speed);
} }
} }
@@ -212,7 +215,7 @@ bool HIKBallCamera::PtzControlDownRight(int speed,int state)
SerialSend(PrepareHexString(buf)); SerialSend(PrepareHexString(buf));
return true; return true;
}else{ }else{
return PtzControl(DOWN_RIGHT, 0, speed); return PtzControl(DOWN_RIGHT, state, speed);
} }
} }
@@ -283,7 +286,8 @@ bool HIKBallCamera::PtzGotoPut(int Action, float P, float T, float Z)
NET_DVR_PTZPOS ptzPosCurrent; NET_DVR_PTZPOS ptzPosCurrent;
ptzPosCurrent.wPanPos = DEC2HEX(P); ptzPosCurrent.wPanPos = DEC2HEX(P);
ptzPosCurrent.wTiltPos = DEC2HEX(T); ptzPosCurrent.wTiltPos = DEC2HEX(T);
ptzPosCurrent.wAction = 5; ptzPosCurrent.wZoomPos = DEC2HEX(Z);
ptzPosCurrent.wAction = Action;
bool b = NET_DVR_SetDVRConfig(LoginID, NET_DVR_SET_PTZPOS, m_Channel, &ptzPosCurrent, sizeof(NET_DVR_PTZPOS)); bool b = NET_DVR_SetDVRConfig(LoginID, NET_DVR_SET_PTZPOS, m_Channel, &ptzPosCurrent, sizeof(NET_DVR_PTZPOS));
return b; return b;
@@ -315,9 +319,9 @@ bool HIKBallCamera::PtzGet(float* posP, float* posT, float* posZ) {
float P = HEX2DEC(ptzPosCurrent.wPanPos); float P = HEX2DEC(ptzPosCurrent.wPanPos);
float T = HEX2DEC(ptzPosCurrent.wTiltPos); float T = HEX2DEC(ptzPosCurrent.wTiltPos);
float Z = HEX2DEC(ptzPosCurrent.wZoomPos); float Z = HEX2DEC(ptzPosCurrent.wZoomPos);
posP = &P; *posP = P;
posT = &T; *posT = T;
posZ = &Z; *posZ = Z;
return b; return b;
} }
} }

View File

@@ -19,8 +19,7 @@ int HIKBase::Login(std::string ip, std::string port, std::string username, std::
Password = password; Password = password;
LoginID = NET_DVR_Login_V30((char *)Ip.c_str(), atoi(Port.c_str()), (char *)Username.c_str(), (char *)Password.c_str(), &DeviceInfo); LoginID = NET_DVR_Login_V30((char *)Ip.c_str(), atoi(Port.c_str()), (char *)Username.c_str(), (char *)Password.c_str(), &DeviceInfo);
std::cout << LoginID <<std::endl; return NET_DVR_GetLastError();
return LoginID;
} }
void HIKBase::Logout() void HIKBase::Logout()

View File

@@ -27,15 +27,16 @@ bool HIKNvr::InitNvr(std::string ip, std::string port, std::string username, std
return false; return false;
} }
bool HIKNvr::GetNvrUTCDiff(){ int HIKNvr::GetNvrUTCDiff(){
NET_DVR_NETAPPCFG struNAC = {0}; NET_DVR_NETAPPCFG struNAC = {0};
DWORD ZoneSize = 0; DWORD ZoneSize = 0;
NET_DVR_GetDVRConfig(LoginID, NET_DVR_GET_NETAPPCFG, 0, &struNAC, sizeof(NET_DVR_NETAPPCFG), &ZoneSize); if (NET_DVR_GetDVRConfig(LoginID, NET_DVR_GET_NETAPPCFG, 0, &struNAC, sizeof(NET_DVR_NETAPPCFG), &ZoneSize)){
return 5000;
};
int nDiffHour = struNAC.struNtpClientParam.cTimeDifferenceH; int nDiffHour = struNAC.struNtpClientParam.cTimeDifferenceH;
int nDiffMin = struNAC.struNtpClientParam.cTimeDifferenceM; int nDiffMin = struNAC.struNtpClientParam.cTimeDifferenceM;
nDiffTotalMin = (nDiffHour < 0 ? -1 : 1) * (abs(nDiffHour) * 60 + nDiffMin); nDiffTotalMin = (nDiffHour < 0 ? -1 : 1) * (abs(nDiffHour) * 60 + nDiffMin);
return true; return (nDiffHour < 0 ? -1 : 1) * (abs(nDiffHour) * 60 + nDiffMin);
} }
/** /**

View File

@@ -42,7 +42,7 @@ public:
//though input SelectTime get the time region //though input SelectTime get the time region
bool GetTimeRegion(DateTime select_time,int value ,DateTime &time_start,DateTime &time_end); bool GetTimeRegion(DateTime select_time,int value ,DateTime &time_start,DateTime &time_end);
bool GetNvrUTCDiff(); int GetNvrUTCDiff();
int nDiffTotalMin; int nDiffTotalMin;
public: public: