using HMI.Core.Manager; namespace Plugin.BurnIn.Util { public class SNValidator { public static bool ValidateSN(string model, string sn, out string msg) { msg = string.Empty; string validate = string.Empty; try { validate = ProductManager.GetParameterByProductAndName(model, "SNRValidate")?.Value; if (string.IsNullOrEmpty(validate)) { msg = $"当前型号[{model}]未配置SNRValidate参数,无法校验SN合法性"; return true; } string[] arr = validate.Split(';'); if (arr.Length == 1) { if (!sn.Contains(arr[0])) { msg = $"条码不包含固定码[{arr[0]}]"; return false; } return true; } if (arr.Length == 2) { int length = int.Parse(arr[1]); if (!sn.Contains(arr[0])) { msg = $"条码不包含固定码[{arr[0]}]"; return false; } if (sn.Length != length) { msg = $"条码长度应为[{length}]"; return false; } return true; } if (arr.Length >= 3) { int length = int.Parse(arr[1]); int startIndex = int.Parse(arr[2]); if (sn.Length != length) { msg = $"条码长度应为[{length}]"; return false; } if (startIndex >= sn.Length) { msg = $"条码长读小于起始下标[{validate}]"; return false; } if (arr[0].Length > sn.Length) { msg = $"条码长读小于固定码长度[{validate}]"; return false; } if (sn.Substring(startIndex, arr[0].Length) != arr[0]) { msg = $"固定码检查失败: [{validate}]"; return false; } return true; } msg = $"当前型号[{model}]配置参数[{validate}]解析失败"; return false; } catch (Exception ex) { msg = $"当前型号[{model}]配置参数[{validate}]解析失败"; return false; } } } }