feat: 现在停止视频流会使摄像头休眠,配置过程会唤醒,配置完后再休眠
This commit is contained in:
parent
938ee80979
commit
a28ae9be97
|
@ -61,9 +61,8 @@ class Camera
|
|||
var resetResult = await Reset();
|
||||
if (!resetResult.IsSuccessful) return resetResult;
|
||||
|
||||
// 步骤2: 休眠
|
||||
var sleepResult = await Sleep();
|
||||
if (!sleepResult.IsSuccessful) return sleepResult;
|
||||
var wakeupResult = await WakeUp();
|
||||
if (!wakeupResult.IsSuccessful) return wakeupResult;
|
||||
|
||||
// 步骤3: 配置基础寄存器
|
||||
var basicResult = await ConfigureBasicRegisters();
|
||||
|
@ -138,13 +137,14 @@ class Camera
|
|||
if (!testResult.IsSuccessful) return testResult;
|
||||
|
||||
// 步骤21: 配置分辨率(默认640x480)
|
||||
// var resolutionResult = await ConfigureResolution640x480();
|
||||
var resolutionResult = await ConfigureResolution1280x720();
|
||||
var resolutionResult = await ConfigureResolution640x480();
|
||||
// var resolutionResult = await ConfigureResolution1280x720();
|
||||
if (!resolutionResult.IsSuccessful) return resolutionResult;
|
||||
|
||||
// // 步骤22: 开始流
|
||||
var startResult = await StartStreaming();
|
||||
if (!startResult.IsSuccessful) return startResult;
|
||||
// var startResult = await WakeUp();
|
||||
// if (!startResult.IsSuccessful) return startResult;
|
||||
var sleepResult = await Sleep();
|
||||
if (!sleepResult.IsSuccessful) return sleepResult;
|
||||
// var resetResult2 = await Reset();
|
||||
// if (!resetResult2.IsSuccessful) return resetResult2;
|
||||
|
||||
|
@ -293,16 +293,8 @@ class Camera
|
|||
}
|
||||
else
|
||||
{
|
||||
// 使用默认延时逻辑
|
||||
if (address == 0x3008 && cmd.Length >= 2 && cmd[1] == 0x82)
|
||||
{
|
||||
// 复位命令,等待5MS
|
||||
await Task.Delay(5);
|
||||
}
|
||||
else
|
||||
{
|
||||
await Task.Delay(5); // 其他命令延时3ms
|
||||
}
|
||||
// 默认延时逻辑:每个寄存器写入后延时1毫秒
|
||||
await Task.Delay(1);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
@ -493,6 +485,7 @@ class Camera
|
|||
{
|
||||
try
|
||||
{
|
||||
await WakeUp();
|
||||
logger.Info($"正在切换摄像头分辨率到 {width}x{height}");
|
||||
|
||||
Result<bool> result;
|
||||
|
@ -516,7 +509,7 @@ class Camera
|
|||
_currentFrameLength = (UInt32)(width * height * 2 / 4); // RGB565格式,按4字节对齐
|
||||
logger.Info($"摄像头分辨率已切换到 {width}x{height}");
|
||||
}
|
||||
|
||||
await Sleep();
|
||||
return result;
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
@ -570,7 +563,7 @@ class Camera
|
|||
[0x3008, 0x42] // 休眠命令
|
||||
};
|
||||
|
||||
return await ConfigureRegisters(sleepRegisters);
|
||||
return await ConfigureRegisters(sleepRegisters, customDelayMs: 50);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -949,14 +942,14 @@ class Camera
|
|||
/// 开始流媒体传输
|
||||
/// </summary>
|
||||
/// <returns>配置结果</returns>
|
||||
public async ValueTask<Result<bool>> StartStreaming()
|
||||
public async ValueTask<Result<bool>> WakeUp()
|
||||
{
|
||||
var startRegisters = new UInt16[][]
|
||||
{
|
||||
[0x3008, 0x02] // 开始流
|
||||
};
|
||||
|
||||
return await ConfigureRegisters(startRegisters);
|
||||
return await ConfigureRegisters(startRegisters, customDelayMs: 50);
|
||||
}
|
||||
|
||||
#region 自动对焦功能
|
||||
|
|
|
@ -156,6 +156,8 @@ public class HttpVideoStreamService : BackgroundService
|
|||
throw new Exception("Please config camera first");
|
||||
}
|
||||
_cameraEnable = isEnabled;
|
||||
if (_cameraEnable) await _camera.WakeUp();
|
||||
else await _camera.Sleep();
|
||||
await _camera.EnableHardwareTrans(_cameraEnable);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue