From d7cbd9e3b25818636f0b267976f163c81d13957d Mon Sep 17 00:00:00 2001 From: kunmeng Date: Fri, 4 Jul 2025 16:36:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(SetPTZPos):=E5=A2=9E=E5=8A=A0=20PTZ=20?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E7=9A=84=E5=8F=AF=E9=85=8D=E7=BD=AE=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 SetPTZPos 函数中添加 Action 参数,用于控制 PTZ 操作类型- 更新 Core.go 中的 SetPTZPOS 函数,根据 Action 参数执行不同操作 - 修改 BallCamera.go 中的 SetPTZPos调用,传入 Action 参数 --- BallCamera.go | 2 +- Core.go | 24 ++++++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/BallCamera.go b/BallCamera.go index c27099d..ba48068 100644 --- a/BallCamera.go +++ b/BallCamera.go @@ -246,7 +246,7 @@ func (this *BallCamera) PtzGotoPut(Action int, P, T, Z float64) error { pBuf = append(pBuf, pBufv) tBuf = append(tBuf, tBufv) zBuf = append(zBuf, zBufv) - err = SetPTZPos(this.userId, pBuf, tBuf, zBuf) + err = SetPTZPos(this.userId, Action, pBuf, tBuf, zBuf) if err != nil { return err } diff --git a/Core.go b/Core.go index 2a88208..bc7e5f5 100644 --- a/Core.go +++ b/Core.go @@ -175,13 +175,25 @@ void GetPTZPOS(LONG lUserID) NET_DVR_SerialStop(lTranHandle); } -void SetPTZPOS(LONG lUserID,char* P,char* T,char *Z) +void SetPTZPOS(LONG lUserID,int action,char* P,char* T,char *Z) { LONG lTranHandle = NET_DVR_SerialStart(lUserID, 2,g_fSerialDataCallBack,6); LONG lSerialChan = 0; - NET_DVR_SerialSend(lTranHandle, lSerialChan, P, 7); - NET_DVR_SerialSend(lTranHandle, lSerialChan, T, 7); - NET_DVR_SerialSend(lTranHandle, lSerialChan, Z, 7); + if (action == 1) { + NET_DVR_SerialSend(lTranHandle, lSerialChan, P, 7); + NET_DVR_SerialSend(lTranHandle, lSerialChan, T, 7); + NET_DVR_SerialSend(lTranHandle, lSerialChan, Z, 7); + }else if (action == 2) { + NET_DVR_SerialSend(lTranHandle, lSerialChan, P, 7); + }else if (action == 3) { + NET_DVR_SerialSend(lTranHandle, lSerialChan, T, 7); + }else if (action == 4) { + NET_DVR_SerialSend(lTranHandle, lSerialChan, Z, 7); + }else { + NET_DVR_SerialSend(lTranHandle, lSerialChan, P, 7); + NET_DVR_SerialSend(lTranHandle, lSerialChan, T, 7); + } + NET_DVR_SerialStop(lTranHandle); sleep(1); } @@ -388,7 +400,7 @@ func FindClose(Handle LONG) error { var SerialMux sync.Mutex -func SetPTZPos(lUserID LONG, P []byte, T []byte, Z []byte) error { +func SetPTZPos(lUserID LONG, Action int, P []byte, T []byte, Z []byte) error { cP := C.CBytes(P) cT := C.CBytes(T) @@ -397,7 +409,7 @@ func SetPTZPos(lUserID LONG, P []byte, T []byte, Z []byte) error { defer C.free(cT) defer C.free(cZ) SerialMux.Lock() - C.SetPTZPOS(C.LONG(lUserID), (*C.char)(cP), (*C.char)(cT), (*C.char)(cZ)) + C.SetPTZPOS(C.LONG(lUserID), C.int(Action), (*C.char)(cP), (*C.char)(cT), (*C.char)(cZ)) SerialMux.Unlock() return lastError("SetPTZPOS") }