582 lines
22 KiB
C#
582 lines
22 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
namespace INT63DC_6CH
|
|
{
|
|
public class Helper
|
|
{
|
|
/// <summary>
|
|
/// ProgressBar Rescale
|
|
/// </summary>
|
|
/// <param name="progressBar">ProgressBar</param>
|
|
/// <param name="max">ProgressBar Maximum</param>
|
|
/// <param name="min">ProgressBar Mimimum</param>
|
|
public static void RescaleProgressBar(SmartX.SmartProgressBar progressBar, int max, int min)
|
|
{
|
|
if (progressBar.Maximum != max)
|
|
progressBar.Maximum = max;
|
|
if (progressBar.Minimum != min)
|
|
progressBar.Minimum = min;
|
|
}
|
|
|
|
/// <summary>
|
|
/// ProgressBar Value Set
|
|
/// </summary>
|
|
/// <param name="progressBar">ProgressBar</param>
|
|
/// <param name="weight">중량</param>
|
|
/// <param name="judStatus">판정결과</param>
|
|
/// <param name="decimalPlaces">소수점</param>
|
|
public static void SetProgressBarValue(SmartX.SmartProgressBar progressBar, int weight, DataStore.JudgmentStatus judStatus)
|
|
{
|
|
if (progressBar.Value != weight)
|
|
progressBar.Value = weight;
|
|
|
|
if (judStatus == DataStore.JudgmentStatus.Over)
|
|
{
|
|
if (progressBar.BarColor1 != Color.Yellow)
|
|
progressBar.BarColor1 = Color.Yellow;
|
|
}
|
|
else if (judStatus == DataStore.JudgmentStatus.Under || judStatus == DataStore.JudgmentStatus.Double ||
|
|
judStatus == DataStore.JudgmentStatus.SensorError || judStatus == DataStore.JudgmentStatus.ExNG ||
|
|
judStatus == DataStore.JudgmentStatus.BP_NG)
|
|
{
|
|
if (progressBar.BarColor1 != Color.Red)
|
|
progressBar.BarColor1 = Color.Red;
|
|
}
|
|
else
|
|
{
|
|
if (progressBar.BarColor1 != Color.Lime)
|
|
progressBar.BarColor1 = Color.Lime;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 테이블 화면 Label Property Set
|
|
/// </summary>
|
|
/// <param name="label">SmartLabel</param>
|
|
public static void SetTableLabelProperty(Control label)
|
|
{
|
|
label.Font = new Font("Tahoma", 16, FontStyle.Bold);
|
|
}
|
|
/// <summary>
|
|
/// 테이블 화면 Label Value Set
|
|
/// </summary>
|
|
/// <param name="label">SmartLabel</param>
|
|
/// <param name="sys">시스템 설정값</param>
|
|
/// <param name="item">판정 데이터</param>
|
|
public static void SetTableLabelValue(SmartX.SmartLabel label, SystemConfigurationItem sys, StorageItem item)
|
|
{
|
|
string sValue = "";
|
|
Color colorWeightOver = Color.Red;
|
|
Color colorWeightStandard = Color.Black;
|
|
Color colorWeightUnder = Color.Red;
|
|
Color colorWeightSamplingData = Color.Blue;
|
|
Color colorWeightEmpty = Color.Gray;
|
|
Color colorWeightEmptySamplingData = Color.CornflowerBlue;
|
|
Color colorWeightBypass = Color.CornflowerBlue;
|
|
|
|
// Weight
|
|
sValue = Helper.DoubleToString(item.Weight, sys.DecimalPlaces);
|
|
if (label.Text != sValue)
|
|
label.Text = sValue;
|
|
|
|
// Empty 유무
|
|
if (item.IsEmptyData == false)
|
|
{
|
|
if (item.JudgmentStatus == DataStore.JudgmentStatus.Under)
|
|
{
|
|
if (label.ForeColor != colorWeightUnder)
|
|
label.ForeColor = colorWeightUnder;
|
|
}
|
|
else if (item.JudgmentStatus == DataStore.JudgmentStatus.Over)
|
|
{
|
|
if (label.ForeColor != colorWeightOver)
|
|
label.ForeColor = colorWeightOver;
|
|
}
|
|
else if (item.JudgmentStatus == DataStore.JudgmentStatus.Pass)
|
|
{
|
|
if (label.ForeColor != colorWeightStandard)
|
|
label.ForeColor = colorWeightStandard;
|
|
}
|
|
else if (item.JudgmentStatus == DataStore.JudgmentStatus.BP_Individual || item.JudgmentStatus == DataStore.JudgmentStatus.BP_NG ||
|
|
item.JudgmentStatus == DataStore.JudgmentStatus.BP_Pass)
|
|
{
|
|
if (label.ForeColor != colorWeightBypass)
|
|
label.ForeColor = colorWeightBypass;
|
|
}
|
|
else
|
|
{
|
|
if (label.ForeColor != colorWeightOver)
|
|
label.ForeColor = colorWeightOver;
|
|
}
|
|
|
|
// SamplingData 표시
|
|
if (item.IsSamplingData == true)
|
|
label.ForeColor = colorWeightSamplingData;
|
|
}
|
|
else
|
|
{
|
|
// SamplingData 표시
|
|
if (item.IsSamplingData == true)
|
|
label.ForeColor = colorWeightEmptySamplingData;
|
|
else
|
|
label.ForeColor = colorWeightEmpty;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 테이블 화면 Label Value Set
|
|
/// </summary>
|
|
/// <param name="label">SmartLabel</param>
|
|
/// <param name="pItem">중량 성절값</param>
|
|
/// <param name="sys">시스템 설정값</param>
|
|
/// <param name="value">판정 중량</param>
|
|
public static void SetTableLabelValue(SmartX.SmartLabel label, ProductItem pItem, SystemConfigurationItem sys, double value)
|
|
{
|
|
string sValue = "";
|
|
Color colorWeightOver = Color.Red;
|
|
Color colorWeightStandard = Color.Black;
|
|
Color colorWeightUnder = Color.Red;
|
|
Color colorWeightSamplingData = Color.Blue;
|
|
Color colorWeightEmpty = Color.Gray;
|
|
Color colorWeightEmptySamplingData = Color.CornflowerBlue;
|
|
|
|
if (value < Helper.StringToWeight(pItem.UnderRange, sys.DecimalPlaces))
|
|
{
|
|
if (label.ForeColor != colorWeightUnder)
|
|
label.ForeColor = colorWeightUnder;
|
|
}
|
|
else if (value > Helper.StringToWeight(pItem.OverRange, sys.DecimalPlaces))
|
|
{
|
|
if (label.ForeColor != colorWeightOver)
|
|
label.ForeColor = colorWeightOver;
|
|
}
|
|
else
|
|
{
|
|
if (label.ForeColor != colorWeightStandard)
|
|
label.ForeColor = colorWeightStandard;
|
|
}
|
|
|
|
|
|
sValue = Helper.DoubleToString(value, sys.DecimalPlaces);
|
|
|
|
if (label.Text != sValue)
|
|
label.Text = sValue;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Double형을 String형으로 변환하여 리턴(소수점 자릿수에 맞춰 0을 채워서 리턴)
|
|
/// </summary>
|
|
/// <param name="value">Double형 데이터</param>
|
|
/// <param name="decimalPlaces">소수점 자릿수</param>
|
|
/// <returns>String형 데이터</returns>
|
|
public static string DoubleToString(double value, int decimalPlaces)
|
|
{
|
|
if (decimalPlaces == 0)
|
|
return string.Format("{0:F0}", value);
|
|
else if (decimalPlaces == 1)
|
|
return string.Format("{0:F1}", value);
|
|
else if (decimalPlaces == 2)
|
|
return string.Format("{0:F2}", value);
|
|
else if (decimalPlaces == 3)
|
|
return string.Format("{0:F3}", value);
|
|
else if (decimalPlaces == 4)
|
|
return string.Format("{0:F4}", value);
|
|
else if (decimalPlaces == 5)
|
|
return string.Format("{0:F5}", value);
|
|
else if (decimalPlaces == 6)
|
|
return string.Format("{0:F6}", value);
|
|
else if (decimalPlaces == 7)
|
|
return string.Format("{0:F7}", value);
|
|
else
|
|
return "0";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 소수점 없는 String 값을 소수점 추가 후 String 값으로 리턴
|
|
/// </summary>
|
|
/// <param name="value">소수점이 없는 값</param>
|
|
/// <param name="decimalPlaces">소수점 자릿수</param>
|
|
/// <returns>소수점 자리 추가 데이터</returns>
|
|
public static string StringToDecimalPlaces(string value, int decimalPlaces)
|
|
{
|
|
string ret = "";
|
|
double dValue = 0.0;
|
|
|
|
dValue = StringToWeight(value, decimalPlaces);
|
|
ret = DoubleToString(dValue, decimalPlaces);
|
|
|
|
return ret;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 소수점 없는 String형 값을 소수점 추가후 Double형으로 리턴(부호가 포함된 String형값)
|
|
/// </summary>
|
|
/// <param name="value">소수점이 없는 값</param>
|
|
/// <param name="decimalPlaces">소수점 자릿수</param>
|
|
/// <returns>Double형 소수점 추가 데이터</returns>
|
|
public static double StringToWeight(string value, int decimalPlaces)
|
|
{
|
|
double dValue = 0.0;
|
|
string str = "", code = "";
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.Append(value);
|
|
|
|
try
|
|
{
|
|
if (sb.Length > 8)
|
|
return 0.0;
|
|
|
|
if (sb[0] == '-')
|
|
{
|
|
code = "-";
|
|
|
|
// 부호 제거
|
|
sb.Remove(0, 1);
|
|
}
|
|
|
|
str = sb.ToString();
|
|
str = str.Trim();
|
|
sb.Remove(0, sb.Length);
|
|
sb.Append(str);
|
|
|
|
for (int i = 0; i < decimalPlaces; i++)
|
|
{
|
|
if (sb.Length > decimalPlaces)
|
|
break;
|
|
|
|
sb.Insert(0, "0");
|
|
}
|
|
|
|
sb.Insert(sb.Length - decimalPlaces, ".");
|
|
str = sb.ToString();
|
|
str = code + str;
|
|
dValue = double.Parse(str);
|
|
|
|
return dValue;
|
|
|
|
}
|
|
catch
|
|
{
|
|
return 0.0;
|
|
}
|
|
}
|
|
|
|
public static DataStore.JudgmentStatus StringToJudgmentStatusStatistics(string value)
|
|
{
|
|
if (value == "Under")
|
|
return DataStore.JudgmentStatus.Under;
|
|
else if (value == "Over")
|
|
return DataStore.JudgmentStatus.Over;
|
|
else if (value == "Pass")
|
|
return DataStore.JudgmentStatus.Pass;
|
|
else if (value == "Double")
|
|
return DataStore.JudgmentStatus.Double;
|
|
else if (value == "SensorError")
|
|
return DataStore.JudgmentStatus.SensorError;
|
|
else if (value == "ExNG")
|
|
return DataStore.JudgmentStatus.ExNG;
|
|
else if (value == "Empty")
|
|
return DataStore.JudgmentStatus.Empty;
|
|
else
|
|
return DataStore.JudgmentStatus.None;
|
|
}
|
|
public static DataStore.JudgmentStatus StringToJudgmentStatus(string value)
|
|
{
|
|
if (value.Length != 2)
|
|
return DataStore.JudgmentStatus.None;
|
|
|
|
if (value == "su" || value == "sU" || value == "sa")
|
|
return DataStore.JudgmentStatus.Under;
|
|
else if (value == "so" || value == "sO" || value == "sj")
|
|
return DataStore.JudgmentStatus.Over;
|
|
else if (value == "sp" || value == "sP")
|
|
return DataStore.JudgmentStatus.Pass;
|
|
else if (value == "sd" || value == "sD")
|
|
return DataStore.JudgmentStatus.Double;
|
|
else if (value == "sc" || value == "sC")
|
|
return DataStore.JudgmentStatus.SensorError;
|
|
else if (value == "se")
|
|
return DataStore.JudgmentStatus.ExNG;
|
|
else if (value == "st" || value == "sT")
|
|
return DataStore.JudgmentStatus.Empty;
|
|
else if (value == "sb")
|
|
return DataStore.JudgmentStatus.BP_Individual;
|
|
else if (value == "sh")
|
|
return DataStore.JudgmentStatus.BP_Pass;
|
|
else if (value == "si")
|
|
return DataStore.JudgmentStatus.BP_NG;
|
|
else
|
|
return DataStore.JudgmentStatus.None;
|
|
}
|
|
public static DataStore.WeightStatus StringToWeightStatus(string value)
|
|
{
|
|
if (value.Length != 2)
|
|
return DataStore.WeightStatus.Empty;
|
|
|
|
if (value == "sn")
|
|
return DataStore.WeightStatus.WeightChange;
|
|
else if (value == "sz")
|
|
return DataStore.WeightStatus.WeightZero;
|
|
else if (value == "cn")
|
|
return DataStore.WeightStatus.CalNomal;
|
|
else if (value == "cB")
|
|
return DataStore.WeightStatus.CalBalans;
|
|
else if (value == "cb")
|
|
return DataStore.WeightStatus.CalStandby;
|
|
else if (value == "cF")
|
|
return DataStore.WeightStatus.CalFinish;
|
|
else if (value == "ce")
|
|
return DataStore.WeightStatus.CalError;
|
|
else
|
|
return DataStore.WeightStatus.Empty;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 2자리에 맞춰 공백을 0으로 채움
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public static string StringZeroFillDigits2(string value)
|
|
{
|
|
if (value.Length == 1)
|
|
return string.Format("0{0}", value);
|
|
else if (value.Length == 2)
|
|
return value;
|
|
else
|
|
return "00";
|
|
}
|
|
/// <summary>
|
|
/// 4자리에 맞춰 공백을 0으로 채움
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public static string StringZeroFillDigits4(string value)
|
|
{
|
|
if (value.Length == 1)
|
|
return string.Format("000{0}", value);
|
|
else if (value.Length == 2)
|
|
return string.Format("00{0}", value);
|
|
else if (value.Length == 3)
|
|
return string.Format("0{0}", value);
|
|
else if (value.Length == 4)
|
|
return value;
|
|
else
|
|
return "0000";
|
|
}
|
|
/// <summary>
|
|
/// 5자리에 맞춰 공백을 0으로 채움
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public static string StringZeroFillDigits5(string value)
|
|
{
|
|
if (value.Length == 1)
|
|
return string.Format("0000{0}", value);
|
|
else if (value.Length == 2)
|
|
return string.Format("000{0}", value);
|
|
else if (value.Length == 3)
|
|
return string.Format("00{0}", value);
|
|
else if (value.Length == 4)
|
|
return string.Format("0{0}", value);
|
|
else if (value.Length == 5)
|
|
return value;
|
|
else
|
|
return "00000";
|
|
}
|
|
/// <summary>
|
|
/// 6자리에 맞춰 공백을 0으로 채움
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public static string StringZeroFillDigits6(string value)
|
|
{
|
|
if (value.Length == 1)
|
|
return string.Format("00000{0}", value);
|
|
else if (value.Length == 2)
|
|
return string.Format("0000{0}", value);
|
|
else if (value.Length == 3)
|
|
return string.Format("000{0}", value);
|
|
else if (value.Length == 4)
|
|
return string.Format("00{0}", value);
|
|
else if (value.Length == 5)
|
|
return string.Format("0{0}", value);
|
|
else if (value.Length == 6)
|
|
return value;
|
|
else
|
|
return "000000";
|
|
}
|
|
/// <summary>
|
|
/// 6자리에 맞춰 공백을 빈칸으로 채움
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public static string StringBlankFillDigits6(string value)
|
|
{
|
|
if (value.Length == 1)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 2)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 3)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 4)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 5)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 6)
|
|
return value;
|
|
else
|
|
return " ";
|
|
}
|
|
/// <summary>
|
|
/// 7자리에 맞춰 공백을 0으로 채움
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public static string StringZeroFillDigits7(string value)
|
|
{
|
|
if (value.Length == 1)
|
|
return string.Format("000000{0}", value);
|
|
else if (value.Length == 2)
|
|
return string.Format("00000{0}", value);
|
|
else if (value.Length == 3)
|
|
return string.Format("0000{0}", value);
|
|
else if (value.Length == 4)
|
|
return string.Format("000{0}", value);
|
|
else if (value.Length == 5)
|
|
return string.Format("00{0}", value);
|
|
else if (value.Length == 6)
|
|
return string.Format("0{0}", value);
|
|
else if (value.Length == 7)
|
|
return value;
|
|
else
|
|
return "0000000";
|
|
}
|
|
/// <summary>
|
|
/// 7자리에 맞춰 공백을 빈칸으로 채움
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public static string StringBlankFillDigits7(string value)
|
|
{
|
|
if (value.Length == 1)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 2)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 3)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 4)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 5)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 6)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 7)
|
|
return value;
|
|
else
|
|
return " ";
|
|
}
|
|
/// <summary>
|
|
/// 9자리에 맞춰 공백을 빈칸으로 채움
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public static string StringBlankFillDigits9(string value)
|
|
{
|
|
if (value.Length == 1)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 2)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 3)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 4)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 5)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 6)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 7)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 8)
|
|
return string.Format(" {0}", value);
|
|
else if (value.Length == 9)
|
|
return value;
|
|
else
|
|
return " ";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 2로 나눈 나머지값 리턴
|
|
/// </summary>
|
|
/// <param name="value"></param>
|
|
/// <returns></returns>
|
|
public static string ReminderByTwo(string value)
|
|
{
|
|
int reminder = 0;
|
|
|
|
reminder = int.Parse(value)%2;
|
|
|
|
return reminder.ToString();
|
|
}
|
|
}
|
|
|
|
public static class FindByNameUtil
|
|
{
|
|
public static T FindByName<T>(this object targetClass, string name) where T : class
|
|
{
|
|
System.Reflection.FieldInfo fi = targetClass.GetType().GetField(name, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
|
|
return fi.GetValue(targetClass) as T;
|
|
}
|
|
public static T FindByName<T>(this string name, object targetClass) where T : class
|
|
{
|
|
System.Reflection.FieldInfo fi = targetClass.GetType().GetField(name, System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
|
|
return fi.GetValue(targetClass) as T;
|
|
}
|
|
public static System.Windows.Forms.Label Is_Label_From(this string name, object targetClass)
|
|
{
|
|
return FindByName<System.Windows.Forms.Label>(targetClass, name);
|
|
}
|
|
public static System.Windows.Forms.TextBox Is_TextBox_From(this string name, object targetClass)
|
|
{
|
|
return FindByName<System.Windows.Forms.TextBox>(targetClass, name);
|
|
}
|
|
public static System.Windows.Forms.TextBox TextBox(string name, object targetClass)
|
|
{
|
|
return FindByName<System.Windows.Forms.TextBox>(targetClass, name);
|
|
}
|
|
public static System.Windows.Forms.Label Label(string name, object targetClass)
|
|
{
|
|
return FindByName<System.Windows.Forms.Label>(targetClass, name);
|
|
}
|
|
public static System.Windows.Forms.PictureBox PictureBox(string name, object targetClass)
|
|
{
|
|
return FindByName<System.Windows.Forms.PictureBox>(targetClass, name);
|
|
}
|
|
|
|
|
|
public static SmartX.SmartLabel SmartLabel(string name, object targetClass)
|
|
{
|
|
return FindByName<SmartX.SmartLabel>(targetClass, name);
|
|
}
|
|
public static SmartX.SmartProgressBar SmartProgressBar(string name, object targetClass)
|
|
{
|
|
return FindByName<SmartX.SmartProgressBar>(targetClass, name);
|
|
}
|
|
public static SmartX.SmartButton SmartButton(string name, object targetClass)
|
|
{
|
|
return FindByName<SmartX.SmartButton>(targetClass, name);
|
|
}
|
|
public static SmartX.SmartDraw SmartDraw(string name, object targetClass)
|
|
{
|
|
return FindByName<SmartX.SmartDraw>(targetClass, name);
|
|
}
|
|
public static SmartX.SmartListBox SmartListBox(string name, object targetClass)
|
|
{
|
|
return FindByName<SmartX.SmartListBox>(targetClass, name);
|
|
}
|
|
}
|
|
}
|