12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package HikNetSDK
- import (
- "fmt"
- "github.com/ebitengine/purego"
- "runtime"
- "unsafe"
- )
- var libc uintptr
- var (
- DvrInit func() int
- newHIKBallCamera func() unsafe.Pointer
- initBallCamera func(core unsafe.Pointer, ip string, port string, username string, password string, BallMachineType string, ErrorCode unsafe.Pointer, ErrorInfo *byte) bool
- ballCameraLogout func(core unsafe.Pointer, ErrorCode unsafe.Pointer, ErrorInfo *byte) 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
- nvrUTCDiff func(core unsafe.Pointer) int
- )
- func Init() {
- var err error
- libc, err = openLibrary(getSystemLibrary())
- if err != nil {
- panic(err)
- }
- purego.RegisterLibFunc(&DvrInit, 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")
- purego.RegisterLibFunc(&nvrUTCDiff, libc, "NvrUTCDiff")
- }
- func getSystemLibrary() string {
- switch runtime.GOOS {
- case "linux":
- if runtime.GOARCH == "amd64" || runtime.GOARCH == "386" {
- return "libHikNetSDKPkg_linux_amd64.so"
- } else {
- return "libHikNetSDKPkg_linux_arm64.so"
- }
- case "windows":
- return "HikNetSDKPkg_win_amd64.dll"
- default:
- panic(fmt.Errorf("GOOS=%s is not supported", runtime.GOOS))
- }
- }
|