ICalibrationService.cs 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using System;
  2. using System.Collections.Generic;
  3. using TeamAAS_VP.Enums;
  4. using TeamAAS_VP.Models.Calibration;
  5. namespace TeamAAS_VP.Interfaces
  6. {
  7. /// <summary>
  8. /// 校准信息管理(CRUD)接口。
  9. /// 提供对应用中校准数据的获取、添加/更新、删除以及持久化操作的抽象。
  10. /// 实现应负责数据存储细节(内存、文件、数据库等),并在 Dispose 中释放任何非托管资源或订阅。
  11. /// </summary>
  12. public interface ICalibrationService : IDisposable
  13. {
  14. /// <summary>
  15. /// 获取所有已知的校准信息的只读集合。
  16. /// </summary>
  17. /// <returns>
  18. /// 包含当前所有校准项的只读集合;集合本身不能为空,但可以为空集合。
  19. /// 集合的实现应保证对调用者只读(不应暴露可变集合引用)。
  20. /// </returns>
  21. IReadOnlyCollection<CalibrationInfo> GetAllCalibrations();
  22. /// <summary>
  23. /// 根据标识符获取单个校准信息。
  24. /// </summary>
  25. /// <param name="id">要查找的校准信息的唯一标识符(<see cref="Guid"/>)。</param>
  26. /// <returns>
  27. /// 对应的 <see cref="CalibrationInfo"/> 实例;若不存在则返回 <c>null</c>。
  28. /// </returns>
  29. CalibrationInfo GetCalibration(Guid id);
  30. /// <summary>
  31. /// 添加新的校准信息或更新已有的校准信息。
  32. /// </summary>
  33. /// <param name="calib">要添加或更新的校准信息对象;其 <see cref="CalibrationInfo"/> 内部应包含用于识别的标识字段。</param>
  34. /// <returns>
  35. /// 添加或更新后存储的 <see cref="CalibrationInfo"/> 实例(可能包含由存储层填充的字段,如创建时间、标识等)。
  36. /// 实现应保证返回的对象反映当前持久化状态。
  37. /// </returns>
  38. /// <remarks>
  39. /// 调用方应负责验证传入对象的有效性(例如必填字段),实现也可在内部进行额外验证并抛出相应异常。
  40. /// </remarks>
  41. CalibrationInfo AddOrUpdateCalibration(CalibrationInfo calib);
  42. /// <summary>
  43. /// 删除指定标识符对应的校准信息。
  44. /// </summary>
  45. /// <param name="id">要删除的校准信息的唯一标识符(<see cref="Guid"/>)。</param>
  46. /// <returns>
  47. /// 如果找到并成功删除则返回 <c>true</c>;如果未找到该标识或删除失败则返回 <c>false</c>。
  48. /// </returns>
  49. bool RemoveCalibration(Guid id);
  50. // 文件加载/保存
  51. /// <summary>
  52. /// 从持久化存储加载所有校准信息并替换当前内存中的集合。
  53. /// </summary>
  54. /// <remarks>
  55. /// 实现应在加载失败时记录错误或抛出异常;若为耗时操作,调用方应在合适的线程/任务中调用本方法。
  56. /// 方法语义为同步加载;如需异步支持,可在实现中提供额外的异步方法。
  57. /// </remarks>
  58. void LoadAll();
  59. /// <summary>
  60. /// 将当前内存中的所有校准信息保存到持久化存储。
  61. /// </summary>
  62. /// <remarks>
  63. /// 实现应保证原子性或在文档中说明保存策略;若为耗时操作,调用方应在合适的线程/任务中调用本方法。
  64. /// </remarks>
  65. void SaveAll();
  66. /// <summary>
  67. /// 校准转换,将像素坐标转换位置坐标
  68. /// </summary>
  69. /// <param name="pixelCoord"></param>
  70. /// <param name="robotCoord"></param>
  71. /// <param name="calib"></param>
  72. /// <returns></returns>
  73. (bool IsSucceed, double X, double Y, double U) ConvertPixelToPosition((double X, double Y,double angle) pixelCoord, double[] robotCoord, CalibrationInfo calib, RobotBrand robotBrand = RobotBrand.Default);
  74. /// <summary>
  75. /// 校准转换,将像素坐标转换位置坐标
  76. /// </summary>
  77. /// <param name="pixelCoord"></param>
  78. /// <param name="robotCoord"></param>
  79. /// <param name="calibId"></param>
  80. /// <returns></returns>
  81. (bool IsSucceed, double X, double Y, double U) ConvertPixelToPosition((double X, double Y, double angle) pixelCoord, double[] robotCoord, Guid calibId, RobotBrand robotBrand = RobotBrand.Default);
  82. }
  83. }