using System; using System.Linq; using System.Collections.Generic; using System.Text; namespace ITC81DB_0H { public class Helper { /// /// Double형을 String형으로 변환하여 리턴(소수점 자릿수에 마춰 0을 채워서 리턴) /// /// Double형 데이터 /// 소수점 자릿수 /// String형 데이터 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"; } /// /// 소수점 없는 String 값을 소수점 추가 후 String 값으로 리턴 /// /// 소수점이 없는 값 /// 소수점 자릿수 /// 소수점 자리 추가 데이터 public static string StringToDecimalPlaces(string value, int decimalPlaces) { string ret = ""; double dValue = 0.0; dValue = StringToWeight(value, decimalPlaces); ret = DoubleToString(dValue, decimalPlaces); return ret; } /// /// 소수점 없는 String형 값을 소수점 추가후 Double형으로 리턴(부호가 포함된 String형값) /// /// 소수점이 없는 값 /// 소수점 자릿수 /// Double형 소수점 추가 데이터 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 > 7) 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 string CommunicationWeightValueToString(string value, int decimalPlaces) { string sValue = ""; double dValue = 0.0; dValue = Helper.StringToWeight(value, decimalPlaces); sValue = Helper.DoubleToString(dValue, decimalPlaces); return sValue; } public static DataStore.JudgmentStatus StringToJudgmentStatus(string value) { if (value.Length != 2) return DataStore.JudgmentStatus.Empty; if (value == "su") return DataStore.JudgmentStatus.Under; else if (value == "so") return DataStore.JudgmentStatus.Over; else if (value == "sp") return DataStore.JudgmentStatus.Pass; else if (value == "sd" || value == "sD") return DataStore.JudgmentStatus.Double; else if (value == "sm") return DataStore.JudgmentStatus.Metal; else if (value == "se") return DataStore.JudgmentStatus.ExNg; else if (value == "sf") return DataStore.JudgmentStatus.ExNg1; else if (value == "sg") return DataStore.JudgmentStatus.ExNg2; else return DataStore.JudgmentStatus.Empty; } 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 == "cw") return DataStore.WeightStatus.CalWait; 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; } /// /// 2자리에 마춰 공백을 0으로 채움 /// /// /// 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"; } /// /// 4자리에 마춰 공백을 0으로 채움 /// /// /// 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"; } /// /// 5자리에 마춰 공백을 0으로 채움 /// /// /// 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"; } /// /// 6자리에 마춰 공백을 0으로 채움 /// /// /// 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"; } /// /// 7자리에 마춰 공백을 0으로 채움 /// /// /// 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"; } public static byte ChecksumCalculator(byte[] array) { byte checksum = 0x00; for (int i = 0; i < array.Length; i++) { checksum = (byte)(checksum ^ array[i]); } return checksum; } } }