108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package HikNetSDK
 | |
| 
 | |
| 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)
 | |
| }
 |