✨ feat(*): 重构PCB放行流程并接入双扫码校验
- 将流程改为 OMRON FINS + TCP 双扫码 + SFTP 文件校验 - 新增文件校验与扫码结果汇总实现,补充对应单测 - 同步更新流程设计文档、配置和系统设置页面文案
This commit is contained in:
@@ -15,6 +15,11 @@ public sealed class AppConfig
|
||||
/// </summary>
|
||||
public ScannerOptions Scanner { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置统一文件校验配置。
|
||||
/// </summary>
|
||||
public FileCheckOptions FileCheck { get; set; } = new();
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 SFTP 校验配置。
|
||||
/// </summary>
|
||||
@@ -41,6 +46,64 @@ public sealed class AppConfig
|
||||
public SecurityOptions Security { get; set; } = new();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 表示文件校验通道类型。
|
||||
/// </summary>
|
||||
public enum FileCheckProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// 使用 SFTP 目录作为文件校验来源。
|
||||
/// </summary>
|
||||
Sftp,
|
||||
|
||||
/// <summary>
|
||||
/// 使用本地磁盘目录作为文件校验来源。
|
||||
/// </summary>
|
||||
Local
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 表示统一文件校验配置。
|
||||
/// </summary>
|
||||
public sealed class FileCheckOptions
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置当前启用的文件校验通道。
|
||||
/// </summary>
|
||||
public FileCheckProvider Provider { get; set; } = FileCheckProvider.Sftp;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置文件名匹配模板。
|
||||
/// </summary>
|
||||
public string FileNamePattern { get; set; } = "${barcode}.txt";
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置首次未命中后的重试间隔,单位为秒。
|
||||
/// </summary>
|
||||
public int RetryIntervalSeconds { get; set; } = 2;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置首次未命中后的最大重试次数。
|
||||
/// </summary>
|
||||
public int MaxRetryCount { get; set; } = 3;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置本地磁盘文件校验配置。
|
||||
/// </summary>
|
||||
public LocalFileCheckOptions Local { get; set; } = new();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 表示本地磁盘文件校验配置。
|
||||
/// </summary>
|
||||
public sealed class LocalFileCheckOptions
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置本地文件校验根目录。
|
||||
/// </summary>
|
||||
public string RootPath { get; set; } = "D:\\PcbCheck\\Files";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 表示 PLC 通信参数与点位映射配置。
|
||||
/// </summary>
|
||||
@@ -54,12 +117,17 @@ public sealed class PlcOptions
|
||||
/// <summary>
|
||||
/// 获取或设置 PLC 端口。
|
||||
/// </summary>
|
||||
public int Port { get; set; } = 502;
|
||||
public int Port { get; set; } = 9600;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 Modbus 从站号。
|
||||
/// 获取或设置 FINS 目标单元地址。
|
||||
/// </summary>
|
||||
public byte UnitId { get; set; } = 1;
|
||||
public byte UnitAddress { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置上位机节点编号。
|
||||
/// </summary>
|
||||
public byte SourceNodeAddress { get; set; } = 25;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置轮询周期,单位为毫秒。
|
||||
@@ -98,54 +166,75 @@ public sealed class PlcOptions
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 表示扫码枪串口参数配置。
|
||||
/// 表示双 TCP 扫码枪参数配置。
|
||||
/// </summary>
|
||||
public sealed class ScannerOptions
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置串口号。
|
||||
/// 获取或设置扫码枪1配置。
|
||||
/// </summary>
|
||||
public string PortName { get; set; } = "COM1";
|
||||
public TcpScannerEndpointOptions Scanner1 { get; set; } = new()
|
||||
{
|
||||
Name = "扫码枪1",
|
||||
Host = "127.0.0.1",
|
||||
Port = 9001
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置波特率。
|
||||
/// 获取或设置扫码枪2配置。
|
||||
/// </summary>
|
||||
public int BaudRate { get; set; } = 9600;
|
||||
public TcpScannerEndpointOptions Scanner2 { get; set; } = new()
|
||||
{
|
||||
Name = "扫码枪2",
|
||||
Host = "127.0.0.1",
|
||||
Port = 9002
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置数据位。
|
||||
/// 获取或设置 TCP 连接超时,单位为毫秒。
|
||||
/// </summary>
|
||||
public int DataBits { get; set; } = 8;
|
||||
public int ConnectTimeoutMs { get; set; } = 3000;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置校验位名称。
|
||||
/// 获取或设置扫码枪触发命令,支持转义字符。
|
||||
/// </summary>
|
||||
public string Parity { get; set; } = "None";
|
||||
public string TriggerCommand { get; set; } = "T";
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置停止位名称。
|
||||
/// 获取或设置返回报文结束符,支持转义字符;为空时读取到首批非空数据即返回。
|
||||
/// </summary>
|
||||
public string StopBits { get; set; } = "One";
|
||||
public string ResponseTerminator { get; set; } = "\\r";
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置是否并发触发两把扫码枪。
|
||||
/// </summary>
|
||||
public bool TriggerInParallel { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置单次扫码超时,单位为毫秒。
|
||||
/// </summary>
|
||||
public int ReadTimeoutMs { get; set; } = 3000;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 表示单把 TCP 扫码枪连接参数。
|
||||
/// </summary>
|
||||
public sealed class TcpScannerEndpointOptions
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置扫码枪名称。
|
||||
/// </summary>
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置触发命令,支持转义字符。
|
||||
/// 获取或设置扫码枪 IP 或主机名。
|
||||
/// </summary>
|
||||
public string TriggerCommand { get; set; } = "SCAN\\r";
|
||||
public string Host { get; set; } = "127.0.0.1";
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置返回报文结束符,支持转义字符。
|
||||
/// 获取或设置扫码枪 TCP 端口。
|
||||
/// </summary>
|
||||
public string ResponseTerminator { get; set; } = "\\r";
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置最大扫码尝试次数。
|
||||
/// </summary>
|
||||
public int MaxScanAttempts { get; set; } = 3;
|
||||
public int Port { get; set; } = 9001;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -331,33 +420,33 @@ public sealed class PlcInputAddressOptions
|
||||
/// <summary>
|
||||
/// 获取或设置 PCB 到位点位地址。
|
||||
/// </summary>
|
||||
public int PcbArrived { get; set; } = 10001;
|
||||
public int PcbArrived { get; set; } = 1001;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 PLC 复位点位地址。
|
||||
/// </summary>
|
||||
public int PlcReset { get; set; } = 10002;
|
||||
public int PlcReset { get; set; } = 1002;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置 PLC 放行应答点位地址。
|
||||
/// </summary>
|
||||
public int PlcAckRelease { get; set; } = 10003;
|
||||
public int PlcAckRelease { get; set; } = 1003;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 表示 PLC 输出线圈地址配置。
|
||||
/// 表示 PLC 输出地址配置。
|
||||
/// </summary>
|
||||
public sealed class PlcOutputAddressOptions
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取或设置 PC 忙碌位地址。
|
||||
/// </summary>
|
||||
public int PcBusy { get; set; } = 51;
|
||||
public int PcBusy { get; set; } = 1051;
|
||||
|
||||
/// <summary>
|
||||
/// 获取或设置放行位地址。
|
||||
/// </summary>
|
||||
public int ReleasePermit { get; set; } = 52;
|
||||
public int ReleasePermit { get; set; } = 1052;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -368,7 +457,5 @@ public sealed class PlcRegisterAddressOptions
|
||||
/// <summary>
|
||||
/// 获取或设置结果代码寄存器地址。
|
||||
/// </summary>
|
||||
public int ResultCode { get; set; } = 40001;
|
||||
|
||||
/// <summary>
|
||||
public int ResultCode { get; set; } = 1100;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user