/// <summary> /// プリンタ設定解析 /// </summary> /// <param name="QRSetting">QRコード設定</param> /// <param name="textSetting">テキスト設定</param> /// <param name="inslist">検査リストクラス</param> /// <returns>成功/失敗</returns> static bool ParsePrinterSetting(string QRSetting, string textSetting, InspectionList inslist) { if (string.IsNullOrEmpty(QRSetting) && string.IsNullOrEmpty(textSetting)) { // 設定なし(プリンタを使用しない) inslist.TemplateFileNameBarcode = null; inslist.TemplateFileNameText = null; inslist.PrintNumBarcode = 0; inslist.PrintNumText = 0; } else if (!string.IsNullOrEmpty(QRSetting) && !string.IsNullOrEmpty(textSetting)) { // 設定あり(プリンタを使用する) var prmsBarcode = QRSetting.Split(':'); var prmsText = textSetting.Split(':'); if (prmsBarcode.Length == 2 && prmsText.Length == 2) { int printNumBarcode = 0; int printNumText = 0; // 値のチェック(テンプレート) if (string.IsNullOrWhiteSpace(prmsBarcode[0]) || string.IsNullOrWhiteSpace(prmsText[0])) { log.Error($"プリンタ設定のテンプレート設定が不正です。({prmsBarcode[0]}, {prmsText[0]})"); return(false); } // 値のチェック(枚数) if (!int.TryParse(prmsBarcode[1], out printNumBarcode) & !int.TryParse(prmsText[1], out printNumText)) { log.Error($"プリンタ設定の印刷枚数設定が不正です。({prmsBarcode[1]}, {prmsText[1]})"); return(false); } inslist.TemplateFileNameBarcode = prmsBarcode[0]; inslist.TemplateFileNameText = prmsText[0]; inslist.PrintNumBarcode = printNumBarcode; inslist.PrintNumText = printNumText; } else { log.Error($"プリンタ設定のフォーマットが不正です。コロンの数を確認して下さい"); return(false); } } else { // QRコードまたはテキストの片方のみ設定されている(不正) log.Error($"プリンタ設定が不正です。QRコードとテキストが設定されているか確認して下さい"); return(false); } return(true); }
/// <summary> /// 外観検査レシピファイル読み込み /// </summary> /// <param name="fpath">ファイルパス</param> /// <returns>検査リスト</returns> public static InspectionList LoadRecipeFile(string fpath) { log.Info($"外観検査レシピファイル '{fpath}' 読み込み開始"); InspectionRecipeSetting setting = new InspectionRecipeSetting(); ExpandoObject eo = CommonLib.SettingFile.LoadSettingFile(fpath); if (!setting.SetParam(eo)) { log.Error($"外観検査レシピファイルリードエラー"); return(null); } InspectionList ret = new InspectionList(); ret.ItemCode = setting.ItemCode; ret.ProductName = setting.ProductName; // プリンタ設定 if (!ParsePrinterSetting(setting.PrinterBarcodeSetting, setting.PrinterTextSetting, ret)) { log.Error("プリンタ設定エラー"); return(null); } string dir = Path.GetDirectoryName(fpath); ret.m_ispDataFront = LoadInspectionItemFile(Path.Combine(dir, setting.RecipeF)); if (ret.m_ispDataFront == null) { log.Error($"表面の検査項目ファイルが読み込めませんでした"); return(null); } ret.m_ispDataBack = LoadInspectionItemFile(Path.Combine(dir, setting.RecipeB)); if (ret.m_ispDataBack == null) { log.Error($"裏面の検査項目ファイルが読み込めませんでした"); return(null); } log.Info($"外観検査レシピファイル '{fpath}' 読み込み完了"); return(ret); }