Hikvision.go 2.1 KB

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