Hikvision.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package HikNetSDK
  2. import (
  3. "fmt"
  4. "github.com/ebitengine/purego"
  5. "runtime"
  6. "unsafe"
  7. )
  8. var libc uintptr
  9. var (
  10. DvrInit func() int
  11. newHIKBallCamera func() unsafe.Pointer
  12. initBallCamera func(core unsafe.Pointer, ip string, port string, username string, password string, BallMachineType string, ErrorCode unsafe.Pointer, ErrorInfo *byte) bool
  13. ballCameraLogout func(core unsafe.Pointer, ErrorCode unsafe.Pointer, ErrorInfo *byte) bool
  14. ptzTo func(core unsafe.Pointer, Action int, P float32, T float32, Z float32) bool
  15. ptzGet func(unsafe.Pointer, unsafe.Pointer, unsafe.Pointer, unsafe.Pointer) bool
  16. stopBus func(unsafe.Pointer, int) bool
  17. startBus func(unsafe.Pointer, int, int) bool
  18. newHIKNvr func() unsafe.Pointer
  19. initNvr func(unsafe.Pointer, string, string, string, string, int) bool
  20. checkTimeRegionWithMonth func(core unsafe.Pointer, year int, month int) string
  21. checkTimeRegionWithDay func(core unsafe.Pointer, year int, month int, day int) string
  22. nvrUTCDiff func(core unsafe.Pointer) int
  23. )
  24. func Init() {
  25. var err error
  26. libc, err = openLibrary(getSystemLibrary())
  27. if err != nil {
  28. panic(err)
  29. }
  30. purego.RegisterLibFunc(&DvrInit, libc, "DVR_Init")
  31. purego.RegisterLibFunc(&newHIKBallCamera, libc, "NewHIKBallCamera")
  32. purego.RegisterLibFunc(&initBallCamera, libc, "InitBallCamera")
  33. purego.RegisterLibFunc(&ptzTo, libc, "PtzGotoPut")
  34. purego.RegisterLibFunc(&ptzGet, libc, "PtzGet")
  35. purego.RegisterLibFunc(&stopBus, libc, "StopBus")
  36. purego.RegisterLibFunc(&startBus, libc, "StartBus")
  37. purego.RegisterLibFunc(&newHIKNvr, libc, "NewHIKNvr")
  38. purego.RegisterLibFunc(&initNvr, libc, "InitNvr")
  39. purego.RegisterLibFunc(&checkTimeRegionWithMonth, libc, "CheckTimeRegionWithMonth")
  40. purego.RegisterLibFunc(&checkTimeRegionWithDay, libc, "CheckTimeRegionWithDay")
  41. purego.RegisterLibFunc(&nvrUTCDiff, libc, "NvrUTCDiff")
  42. }
  43. func getSystemLibrary() string {
  44. switch runtime.GOOS {
  45. case "linux":
  46. if runtime.GOARCH == "amd64" || runtime.GOARCH == "386" {
  47. return "libHikNetSDKPkg_linux_amd64.so"
  48. } else {
  49. return "libHikNetSDKPkg_linux_arm64.so"
  50. }
  51. case "windows":
  52. return "HikNetSDKPkg_win_amd64.dll"
  53. default:
  54. panic(fmt.Errorf("GOOS=%s is not supported", runtime.GOOS))
  55. }
  56. }