137 lines
4.0 KiB
C#
137 lines
4.0 KiB
C#
namespace ThreatSource.Utils
|
||
{
|
||
/// <summary>
|
||
/// 激光编码类型枚举,定义支持的不同编码类型
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 包含多种常见的激光编码类型:
|
||
/// - PRF:脉冲重复频率编码
|
||
/// - PPM:脉冲位置调制
|
||
/// - PWM:脉冲宽度调制
|
||
/// - PseudoRandom:伪随机编码
|
||
/// - Frequency:频率编码
|
||
/// - Phase:相位编码
|
||
/// </remarks>
|
||
public enum LaserCodeType
|
||
{
|
||
/// <summary>
|
||
/// 无编码
|
||
/// </summary>
|
||
None = 0,
|
||
|
||
/// <summary>
|
||
/// 脉冲重复频率编码
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 最常用的激光编码方式
|
||
/// NATO标准使用的编码方式
|
||
/// 通常使用4位数字编码(1111-1788)
|
||
/// </remarks>
|
||
PRF = 1,
|
||
|
||
/// <summary>
|
||
/// 脉冲位置调制
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 通过改变脉冲在时间窗口中的位置来编码信息
|
||
/// 抗干扰能力较强
|
||
/// </remarks>
|
||
PPM = 2,
|
||
|
||
/// <summary>
|
||
/// 脉冲宽度调制
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 通过改变脉冲宽度来编码信息
|
||
/// 实现简单,抗干扰能力一般
|
||
/// </remarks>
|
||
PWM = 3,
|
||
|
||
/// <summary>
|
||
/// 伪随机编码
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 使用伪随机序列对激光信号进行调制
|
||
/// 抗干扰能力极强
|
||
/// </remarks>
|
||
PseudoRandom = 4,
|
||
|
||
/// <summary>
|
||
/// 频率编码
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 使用不同频率的激光进行编码
|
||
/// 可以同时使用多个频率
|
||
/// </remarks>
|
||
Frequency = 5,
|
||
|
||
/// <summary>
|
||
/// 相位编码
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 通过调制激光信号的相位来编码信息
|
||
/// 编码容量大,抗干扰能力强
|
||
/// </remarks>
|
||
Phase = 6
|
||
}
|
||
|
||
/// <summary>
|
||
/// 激光编码类,用于表示激光信号的编码信息
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 提供了激光编码的基本属性和方法:
|
||
/// - 编码类型
|
||
/// - 编码值
|
||
/// - 附加参数
|
||
/// - 编码匹配判断
|
||
/// 用于实现激光信号的编码和解码功能
|
||
/// </remarks>
|
||
public class LaserCode
|
||
{
|
||
/// <summary>
|
||
/// 获取或设置编码类型
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 指定使用的编码方案
|
||
/// 默认为None(无编码)
|
||
/// </remarks>
|
||
public LaserCodeType CodeType { get; set; } = LaserCodeType.None;
|
||
|
||
/// <summary>
|
||
/// 获取或设置编码值
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 对于不同类型的编码,解释方式不同
|
||
/// 对于PRF编码,表示1111-1788范围内的编码值
|
||
/// </remarks>
|
||
public int CodeValue { get; set; }
|
||
|
||
/// <summary>
|
||
/// 获取或设置附加参数
|
||
/// </summary>
|
||
/// <remarks>
|
||
/// 用于存储特定编码类型的额外信息
|
||
/// 如PPM编码的脉冲位置模式、PWM编码的脉冲宽度等
|
||
/// </remarks>
|
||
public Dictionary<string, object> Parameters { get; set; } = new Dictionary<string, object>();
|
||
|
||
/// <summary>
|
||
/// 判断当前编码是否与指定编码匹配
|
||
/// </summary>
|
||
/// <param name="other">要比较的编码</param>
|
||
/// <returns>如果匹配返回true,否则返回false</returns>
|
||
/// <remarks>
|
||
/// 匹配规则:
|
||
/// - 编码类型必须相同
|
||
/// - 编码值必须相同
|
||
/// 不考虑附加参数的匹配
|
||
/// </remarks>
|
||
public bool Matches(LaserCode? other)
|
||
{
|
||
if (other == null)
|
||
return false;
|
||
|
||
return CodeType == other.CodeType && CodeValue == other.CodeValue;
|
||
}
|
||
}
|
||
} |