磁导航1.0内部交管和信号交互

This commit is contained in:
ykkokluo
2026-08-24 14:55:35 +08:00
parent cacc5fea5c
commit 244b0af6c8
60 changed files with 6395 additions and 294 deletions
@@ -1,41 +1,47 @@
using System.ComponentModel;
using Newtonsoft.Json;
namespace StandardScene.Signal.Model
{
/// <summary>
/// 握手点配置。对应老地图点上的 <c>SignalStop</c>SignalType + SignalParams
/// 握手点。JGControl / PointControl 填机构、工位、动作;定时充电 / 限流走附加参数
/// 旧 JSON 仅有 SignalParams 时仍可解析。
/// </summary>
/// <remarks>
/// 站点 fields 若已填写同名键,扫车优先用站点字段,本表该站点不再生效。
/// SignalParams 按分号切分,各类型格式见 <see cref="StandardScene.Signal.Logic.SignalStopSpec"/>。
/// 列表主键展示为「站点号 + 类型」,同一站点建议只配一条。
/// </remarks>
[SignalTable("handshake", "handshake-points.json", "握手点", Order = 3)]
[Category("握手点数据管理")]
[DisplayName("握手点配置列表")]
public class HandshakePointModel
{
/// <summary>地图站点号,与车 PositionIdsiteID / GetLastSite)对应。</summary>
[DisplayName("站点")]
public int Sit { get; set; }
/// <summary>
/// 握手类型:<c>JGControl</c> 机构进出、
/// <c>PointControl</c> 销钉升降、
/// <c>TimedCharging</c> 定时充电、
/// <c>RateFlowControl</c> 区域限流。
/// 其它字符串会每 10s 打一次「未找到业务模块」日志。
/// </summary>
/// <summary>JGControl / PointControl / TimedCharging / RateFlowControl。</summary>
[DisplayName("信号类型")]
[SignalSelect("JGControl", "PointControl", "TimedCharging", "RateFlowControl")]
public string SignalType { get; set; } = "JGControl";
[DisplayName("机构名称")]
public string JgName { get; set; } = "";
[DisplayName("工位编号")]
public string DockId { get; set; } = "";
/// <summary>JGControlRequestIn / ArrivedPointControlUP1 / UP2 / Down1 / Down2。</summary>
[DisplayName("动作")]
[SignalSelect("RequestIn", "Arrived", "UP1", "UP2", "Down1", "Down2")]
public string Action { get; set; } = "";
/// <summary>
/// 类型参数。示例:
/// JGControl <c>上线机构1;RequestIn</c> / <c>上线机构1;Arrived</c> / 第三段限流 <c>缓存区-A-2-60,61</c>
/// PointControl <c>UP1;下线机构1</c>
/// TimedCharging <c>300;95;20</c>
/// RateFlowControl <c>缓存区;A;2;60,61,62</c>。
/// TimedCharging:最长秒;上限电量;下限电量。
/// RateFlowControl:区域;车组;限额;点列表。
/// JGControl 可选限流:区域-车组-限额-点列表。
/// </summary>
[DisplayName("信号参数")]
public string SignalParams { get; set; } = "";
[DisplayName("附加参数")]
public string ExtraParams { get; set; } = "";
/// <summary>旧字段。新配置可空,加载时由上面几列拼回。</summary>
[Browsable(false)]
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)]
public string SignalParams { get; set; }
}
}