From 647def1279e43da8eef27223356c712a933a3221 Mon Sep 17 00:00:00 2001 From: lijun Date: Wed, 15 Jan 2025 23:47:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA=EF=BC=8C?= =?UTF-8?q?=E7=A9=BA=E6=8C=87=E9=92=88=E5=AF=BC=E8=87=B4=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E5=87=BA=E9=94=99-=E6=B5=8B=E8=AF=95=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=B8=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/tool.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/service/tool.go b/service/tool.go index 02fefd1..e07d603 100644 --- a/service/tool.go +++ b/service/tool.go @@ -40,35 +40,41 @@ func SetDeviceCurrentFrame(frame gocv.Mat, device_id int) error { return nil } -func GetDeviceCurrentFrame(device_id int) (gocv.Mat, int) { +func GetDeviceCurrentFrame(deviceId int) (gocv.Mat, int) { + defer func() { + if err := recover(); err != nil { + log.Printf("设备:%d 错误: %v\n", deviceId, err) + } + }() + //获取读写锁 - mutex_, ok := DeviceRWMap.Load(device_id) + mutex_, ok := DeviceRWMap.Load(deviceId) if !ok { return gocv.NewMat(), -1 } mutex, ok := mutex_.(*sync.RWMutex) if !ok { - log.Printf("DeviceRWMap 存储的不是 *sync.RWMutex 类型,device_id: %d", device_id) + log.Printf("DeviceRWMap 存储的不是 *sync.RWMutex 类型,device_id: %d", deviceId) return gocv.NewMat(), -1 } mutex.RLock() defer mutex.RUnlock() //获取当前帧 - frameIface, ok := DeviceCurrentFrameMap.Load(device_id) + frameIface, ok := DeviceCurrentFrameMap.Load(deviceId) if !ok { return gocv.NewMat(), -1 } frame, ok := frameIface.(gocv.Mat) if !ok { - log.Printf("DeviceCurrentFrameMap 存储的不是 gocv.Mat 类型,device_id: %d", device_id) + log.Printf("DeviceCurrentFrameMap 存储的不是 gocv.Mat 类型,device_id: %d", deviceId) } - frame_countIface, ok := DeviceFrameCount.Load(device_id) + frame_countIface, ok := DeviceFrameCount.Load(deviceId) if !ok { return gocv.NewMat(), -1 } frame_count, ok := frame_countIface.(int) if !ok { - log.Printf("DeviceFrameCount 存储的不是 int 类型,device_id: %d", device_id) + log.Printf("DeviceFrameCount 存储的不是 int 类型,device_id: %d", deviceId) } return frame, frame_count }