1. 海康设备状态加入到结构体中
This commit is contained in:
101
HikNvr.go
Normal file
101
HikNvr.go
Normal file
@@ -0,0 +1,101 @@
|
||||
package HikNetSDK
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type HIKNvr struct {
|
||||
core unsafe.Pointer
|
||||
State bool
|
||||
NvrConfig Nvr
|
||||
mux sync.RWMutex
|
||||
}
|
||||
|
||||
func NewHIKNvr(nvrConfig Nvr) *HIKNvr {
|
||||
return &HIKNvr{
|
||||
core: newHIKNvr(),
|
||||
NvrConfig: nvrConfig,
|
||||
State: false,
|
||||
mux: sync.RWMutex{},
|
||||
}
|
||||
}
|
||||
|
||||
func (h *HIKNvr) opt(action func() bool) bool {
|
||||
h.mux.RLock()
|
||||
if h.State {
|
||||
h.mux.RUnlock()
|
||||
h.mux.Lock()
|
||||
h.State = action()
|
||||
h.mux.Unlock()
|
||||
}
|
||||
h.mux.RUnlock()
|
||||
return h.State
|
||||
}
|
||||
|
||||
func (h *HIKNvr) Login() bool {
|
||||
h.mux.Lock()
|
||||
h.State = initNvr(h.core, h.NvrConfig.Ip, h.NvrConfig.Port, h.NvrConfig.User, h.NvrConfig.Password, h.NvrConfig.Channel)
|
||||
h.mux.Unlock()
|
||||
return h.State
|
||||
}
|
||||
|
||||
func (h *HIKNvr) CheckTimeRegionWithMonth(year int, month int) string {
|
||||
h.mux.RLock()
|
||||
if h.State {
|
||||
h.mux.RUnlock()
|
||||
if checkTimeRegionWithMonth(h.core, year, month) == "" {
|
||||
h.mux.Lock()
|
||||
h.State = false
|
||||
h.mux.Unlock()
|
||||
} else {
|
||||
h.mux.Lock()
|
||||
h.State = true
|
||||
h.mux.Unlock()
|
||||
}
|
||||
} else {
|
||||
h.mux.RUnlock()
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (h *HIKNvr) CheckTimeRegionWithDay(year int, month int, day int) string {
|
||||
h.mux.RLock()
|
||||
if h.State {
|
||||
h.mux.RUnlock()
|
||||
data := checkTimeRegionWithDay(h.core, year, month, day)
|
||||
if data == "" {
|
||||
h.mux.Lock()
|
||||
h.State = false
|
||||
h.mux.Unlock()
|
||||
} else {
|
||||
h.mux.Lock()
|
||||
h.State = true
|
||||
h.mux.Unlock()
|
||||
return data
|
||||
}
|
||||
} else {
|
||||
h.mux.RUnlock()
|
||||
}
|
||||
return ""
|
||||
}
|
||||
func (h *HIKNvr) UTCDiff() int {
|
||||
h.mux.RLock()
|
||||
if h.State {
|
||||
data := nvrUTCDiff(h.core)
|
||||
h.mux.RUnlock()
|
||||
if nvrUTCDiff(h.core) == 500 {
|
||||
h.mux.Lock()
|
||||
h.State = false
|
||||
h.mux.Unlock()
|
||||
} else {
|
||||
h.mux.Lock()
|
||||
h.State = true
|
||||
h.mux.Unlock()
|
||||
return data
|
||||
}
|
||||
} else {
|
||||
h.mux.RUnlock()
|
||||
}
|
||||
return 1000
|
||||
}
|
||||
Reference in New Issue
Block a user