using System; using System.Collections.Generic; using TeamAAS_VP.Enums; using TeamAAS_VP.Models.Calibration; namespace TeamAAS_VP.Interfaces { /// /// 校准信息管理(CRUD)接口。 /// 提供对应用中校准数据的获取、添加/更新、删除以及持久化操作的抽象。 /// 实现应负责数据存储细节(内存、文件、数据库等),并在 Dispose 中释放任何非托管资源或订阅。 /// public interface ICalibrationService : IDisposable { /// /// 获取所有已知的校准信息的只读集合。 /// /// /// 包含当前所有校准项的只读集合;集合本身不能为空,但可以为空集合。 /// 集合的实现应保证对调用者只读(不应暴露可变集合引用)。 /// IReadOnlyCollection GetAllCalibrations(); /// /// 根据标识符获取单个校准信息。 /// /// 要查找的校准信息的唯一标识符()。 /// /// 对应的 实例;若不存在则返回 null。 /// CalibrationInfo GetCalibration(Guid id); /// /// 添加新的校准信息或更新已有的校准信息。 /// /// 要添加或更新的校准信息对象;其 内部应包含用于识别的标识字段。 /// /// 添加或更新后存储的 实例(可能包含由存储层填充的字段,如创建时间、标识等)。 /// 实现应保证返回的对象反映当前持久化状态。 /// /// /// 调用方应负责验证传入对象的有效性(例如必填字段),实现也可在内部进行额外验证并抛出相应异常。 /// CalibrationInfo AddOrUpdateCalibration(CalibrationInfo calib); /// /// 删除指定标识符对应的校准信息。 /// /// 要删除的校准信息的唯一标识符()。 /// /// 如果找到并成功删除则返回 true;如果未找到该标识或删除失败则返回 false。 /// bool RemoveCalibration(Guid id); // 文件加载/保存 /// /// 从持久化存储加载所有校准信息并替换当前内存中的集合。 /// /// /// 实现应在加载失败时记录错误或抛出异常;若为耗时操作,调用方应在合适的线程/任务中调用本方法。 /// 方法语义为同步加载;如需异步支持,可在实现中提供额外的异步方法。 /// void LoadAll(); /// /// 将当前内存中的所有校准信息保存到持久化存储。 /// /// /// 实现应保证原子性或在文档中说明保存策略;若为耗时操作,调用方应在合适的线程/任务中调用本方法。 /// void SaveAll(); /// /// 校准转换,将像素坐标转换位置坐标 /// /// /// /// /// (bool IsSucceed, double X, double Y, double U) ConvertPixelToPosition((double X, double Y,double angle) pixelCoord, double[] robotCoord, CalibrationInfo calib, RobotBrand robotBrand = RobotBrand.Default); /// /// 校准转换,将像素坐标转换位置坐标 /// /// /// /// /// (bool IsSucceed, double X, double Y, double U) ConvertPixelToPosition((double X, double Y, double angle) pixelCoord, double[] robotCoord, Guid calibId, RobotBrand robotBrand = RobotBrand.Default); } }