diff --git a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs index d784af6..73bbc3c 100644 --- a/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs +++ b/ITC81DB_0H/Controls/CenterConfiguration/ControlCenterConfiSerial.cs @@ -822,7 +822,6 @@ namespace ITC81DB_0H.Controls switch (temp) { case Define.E_MenuBottomConfiguration.SerialCOM1: - this.ParentForm.ParentForm.CloseSerialCOM1(); this.comboBoxSerialBaudRate.SelectedIndexChanged -= new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); this.comboBoxSerialBaudRate.SelectedIndex = 4; this.comboBoxSerialBaudRate.SelectedIndexChanged += new EventHandler(this.comboBoxSerialBaudRate_SelectedIndexChanged); diff --git a/ITC81DB_0H/Datastore/DataStore.cs b/ITC81DB_0H/Datastore/DataStore.cs index 900fe76..932eacc 100644 --- a/ITC81DB_0H/Datastore/DataStore.cs +++ b/ITC81DB_0H/Datastore/DataStore.cs @@ -25,6 +25,9 @@ namespace ITC81DB_0H #region CommunicationCommand public class CommunicationCommand { + // 운전데이터 Respone + public static readonly string StartDataCMD = "Sr0"; + // 불량알람(레벨) public static readonly string AlarmNgLevel = "Caa00"; // 불량알람 해지 @@ -1554,6 +1557,60 @@ namespace ITC81DB_0H } #endregion + #region CommunicationRespone + public class CommunicationRespone + { + #region Field + private bool m_IsFirst; + + private string m_TransactionID; + private string m_TransferCount; + #endregion + + #region Constructor + public CommunicationRespone() + { + this.Initialization(); + } + #endregion + + #region Property + public bool IsFirst + { + get { return this.m_IsFirst; } + set { this.m_IsFirst = value; } + } + + /// + /// Data ID (0~9) + /// + public string TransactionID + { + get { return this.m_TransactionID; } + set { this.m_TransactionID = value; } + } + /// + /// 재전송 CNT (0~9) + /// + public string TransferCount + { + get { return this.m_TransferCount; } + set { this.m_TransferCount = value; } + } + #endregion + + #region Method + public void Initialization() + { + this.IsFirst = false; + + this.TransactionID = "a"; + this.TransferCount = "a"; + } + #endregion + } + #endregion + public class AlarmList { #region Field diff --git a/ITC81DB_0H/Forms/FormMain.Designer.cs b/ITC81DB_0H/Forms/FormMain.Designer.cs index 45d05fb..258d138 100644 --- a/ITC81DB_0H/Forms/FormMain.Designer.cs +++ b/ITC81DB_0H/Forms/FormMain.Designer.cs @@ -46,6 +46,8 @@ this.timerEthernetPing = new System.Windows.Forms.Timer(); this.smartTimerLogout = new SmartX.SmartTimer(this.components); this.timerUserList = new System.Windows.Forms.Timer(); + this.smartThreadSerialPort2OverRun = new SmartX.SmartThread(this.components); + this.smartThreadSerialPort2Read = new SmartX.SmartThread(this.components); ((System.ComponentModel.ISupportInitialize)(this.smartForm)).BeginInit(); this.SuspendLayout(); // @@ -95,6 +97,7 @@ this.smartSerialPort2.STXCodes = null; this.smartSerialPort2.TailErrorCodeOffset = 0; this.smartSerialPort2.OnReadQueueEvent += new SmartX.SmartSerialPort.ReceiveDataHandler(this.smartSerialPort2_OnReadQueueEvent); + this.smartSerialPort2.OnPortError += new SmartX.SmartSerialPort.PortErrorHandler(this.smartSerialSerialPort2_OnPortError); // // smartSerialPort1 // @@ -209,6 +212,16 @@ this.timerUserList.Interval = 1000; this.timerUserList.Tick += new System.EventHandler(this.timerUserList_Tick); // + // smartThreadSerialPort2OverRun + // + this.smartThreadSerialPort2OverRun.Priority = System.Threading.ThreadPriority.Normal; + this.smartThreadSerialPort2OverRun.UIThreadFunction += new SmartX.SmartThread.UIThreadHandler(this.smartThreadSerialPort2Read_UIThreadFunction); + // + // smartThreadSerialPort2Read + // + this.smartThreadSerialPort2Read.Priority = System.Threading.ThreadPriority.Normal; + this.smartThreadSerialPort2Read.UIThreadFunction += new SmartX.SmartThread.UIThreadHandler(this.smartThreadSerialPort2Read_UIThreadFunction); + // // FormMain // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -242,6 +255,8 @@ private System.Windows.Forms.Timer timerEthernetPing; private SmartX.SmartTimer smartTimerLogout; private System.Windows.Forms.Timer timerUserList; + private SmartX.SmartThread smartThreadSerialPort2OverRun; + private SmartX.SmartThread smartThreadSerialPort2Read; } } diff --git a/ITC81DB_0H/Forms/FormMain.cs b/ITC81DB_0H/Forms/FormMain.cs index e6a5d3e..867fd50 100644 --- a/ITC81DB_0H/Forms/FormMain.cs +++ b/ITC81DB_0H/Forms/FormMain.cs @@ -18,14 +18,15 @@ using InModbus; using ITC81DB_2H.Datastore; using ITC81DB_0H.Part11_UserManager; using ITC81DB_0H.Part11_Encryption; +using ITC81DB_0H.SerialManager; namespace ITC81DB_0H.Forms { public partial class FormMain : Form { #region Field - public static string DisplayVersion = "3.1.2"; - public static string ReleaseDate = "2023.10.31"; + public static string DisplayVersion = "3.2.0"; + public static string ReleaseDate = "2023.11.08"; private SmartSplash SmartSplashProgramLoad; public bool IsCommunicationLogOpen; @@ -51,6 +52,16 @@ namespace ITC81DB_0H.Forms public int FlagAutomaticLogoutWarningTime; public bool IsLogProcessing; + // 재전송 기능 + public int MissingCommIDCount; + public int CommID; + public bool FlagSerialDll = true; + private string ComPortMainToLCD; + private Queue QueueCommunicationRecive; // 큐 통신 데이터용 + private int FlagComRetry3th; // 3회 재전송 횟수 + public Queue QueueOverRun = new Queue(); + private int IndexOverRun = 0; + private byte[] ClientSendDatabyteArray; private string ClientSendDataString; @@ -183,6 +194,8 @@ namespace ITC81DB_0H.Forms private JudgmentResult CurrentJudgmentResult; // Dll User_Name List public List ListDllUserName; + // Communication Respone + private CommunicationRespone CurrentComRespone; // HM Handshake를 위한 함수 private int HMCOM1_Step; @@ -383,7 +396,11 @@ namespace ITC81DB_0H.Forms this.UpdateValue = 0; this.IsOPCModbusUsing = false; this.IsLogProcessing = false; + this.FlagComRetry3th = 0; + this.MissingCommIDCount = 0; + this.CommID = 0; + this.QueueCommunicationRecive = new Queue(); this.CurrentAlarmList = new AlarmList(); this.EventAlarmStateChange += new Define.EventHandlerAlarmStateChange(this.CurrentAlarmList_Change); @@ -433,6 +450,8 @@ namespace ITC81DB_0H.Forms this.PathHeaderFolder = this.PathLaunchFolder + "Header\\"; PathBinFolder = this.PathLaunchFolder + "Bin\\"; + this.CurrentComRespone = new CommunicationRespone(); + this.ListDllUserName = new List(); this.ListDllUserName.Clear(); @@ -524,6 +543,18 @@ namespace ITC81DB_0H.Forms pathSDCardSystemFileFolder.Delete(); } + // COM port 설정 + this.smartSerialPort2.PortNo = SmartSerialPort.COMPORTNO.COM2; + this.ComPortMainToLCD = "COM2:"; + + if (this.FlagSerialDll == true) + { + SerialMgrComm.IntializeSerialManager(); + SerialMgrComm.SerialPortMessageReceive += this.SerialPort_MessageReceive; + SerialMgrComm.SerialPortErrMessageReceive += this.SerialPort_ErrMessageReceive; + } + + // Data 폴더 생성 if (Directory.Exists(this.PathDataFolder) == false) Directory.CreateDirectory(this.PathDataFolder); @@ -562,8 +593,7 @@ namespace ITC81DB_0H.Forms } // 통신 포트 설정 - if (this.smartSerialPort3.IsOpen == true) - this.smartSerialPort3.Close(); + this.CloseSerialCOM3(); // STXANDETX this.ChangeSerialCOM3FrameSeparateType(Define.E_SeparateType.STXANDETX); @@ -1050,6 +1080,46 @@ namespace ITC81DB_0H.Forms this.FlagThreadMessage1 = false; } } + private bool UI_Invoke(ThreadStart invoker) + { + try + { + if (this.InvokeRequired) + { + if (this.IsDisposed) + return true; + + this.Invoke(invoker); + } + else + { + invoker(); + } + + return true; + + } + catch (Exception e) + { + return false; + } + + } + private void SerialPort_MessageReceive(object data) + { + this.UI_Invoke(delegate + { + this.SerialReceiveData(data.ToString()); + }); + } + private void SerialPort_ErrMessageReceive(object data) + { + this.UI_Invoke(delegate + { + if (this.IsCommunicationLogOpen == true) + this.smartFileCommunicationLog.WriteString(string.Format("Receive ({0:yyyy-MM-dd HH:mm:ss}): {1} : Dll(Err MSG)", DateTime.Now, data)); + }); + } /// /// Set Mode @@ -1565,15 +1635,24 @@ namespace ITC81DB_0H.Forms } #region Uart Communication - private void OpenSmartUartLink() + private void OpenSmartSerialPort2() { string fullPath = ""; DateTime dt = DateTime.Now; try { - if (this.smartSerialPort2.IsOpen == false) - this.smartSerialPort2.Open(); + if (this.FlagSerialDll == false) + { + if (this.smartSerialPort2.IsOpen == false) + this.smartSerialPort2.Open(); + } + else + { + // Port : COM2 + // Baudrate : 115200 + SerialMgrComm.serialPortOpen(this.ComPortMainToLCD, 115200, 0, 0, 8); + } } catch { @@ -1594,9 +1673,12 @@ namespace ITC81DB_0H.Forms //this.IsErrorLogOpen = true; #endregion } - public void CloseSmartUartLink() + public void CloseSmartSerialPort2() { - this.smartSerialPort2.Close(); + if (this.FlagSerialDll == false) + this.smartSerialPort2.Close(); + else + SerialMgrComm.serialPortClose("COM2:"); } private bool SizeCheck(string cmd, string strTemp) @@ -1794,8 +1876,13 @@ namespace ITC81DB_0H.Forms sb.Append(chkSum); - if (this.smartSerialPort2.IsOpen == true) - this.smartSerialPort2.WriteFrame(sb.ToString(), SmartSerialPort.CODETYPES.ASCIICODE); + if (this.FlagSerialDll == false) + { + if (this.smartSerialPort2.IsOpen == true) + this.smartSerialPort2.WriteFrame(sb.ToString(), SmartSerialPort.CODETYPES.ASCIICODE); + } + else + SerialMgrComm.serialPortMessage(this.ComPortMainToLCD, sb.ToString()); // 통신 확인 로그 if (this.IsCommunicationLogOpen == true) @@ -1823,8 +1910,13 @@ namespace ITC81DB_0H.Forms sb.Append(chkSum); - if (this.smartSerialPort2.IsOpen == true) - this.smartSerialPort2.WriteFrame(sb.ToString(), SmartSerialPort.CODETYPES.ASCIICODE); + if (this.FlagSerialDll == false) + { + if (this.smartSerialPort2.IsOpen == true) + this.smartSerialPort2.WriteFrame(sb.ToString(), SmartSerialPort.CODETYPES.ASCIICODE); + } + else + SerialMgrComm.serialPortMessage(this.ComPortMainToLCD, sb.ToString()); // 통신 확인 로그 if (this.IsCommunicationLogOpen == true) @@ -1875,8 +1967,14 @@ namespace ITC81DB_0H.Forms for (int i = 0; i < byteCollection.Count; i++) byteData[i] = byteCollection[i]; - if (this.smartSerialPort2.IsOpen == true) - this.smartSerialPort2.WriteFrame(byteData); + if (this.FlagSerialDll == false) + { + if (this.smartSerialPort2.IsOpen == true) + this.smartSerialPort2.WriteFrame(byteData); + } + else + SerialMgrComm.serialPortMessageByte(this.ComPortMainToLCD, byteData, byteData.Length); + // 통신 확인 로그 if (this.IsCommunicationLogOpen == true) @@ -1891,28 +1989,38 @@ namespace ITC81DB_0H.Forms return ret; } - private void ReceiveData() + private int TransferDataRespone(string command, string id, string transactionID, string TransferCount, string respone) { int ret = 0; - string strTemp = ""; - byte[] readByte; + string chkSum = "cc"; + StringBuilder sb = new StringBuilder(); - SmartSerialPort.FRAMEDATAREADSTATUS receiveDataState = SmartSerialPort.FRAMEDATAREADSTATUS.EMPTY; + sb.Append(command); + sb.Append(transactionID); + sb.Append(TransferCount); + sb.Append(respone); - try - { - receiveDataState = this.smartSerialPort2.ReadQueue(out readByte); - strTemp = Encoding.Default.GetString(readByte, 0, readByte.Length); - } - catch - { - return; - } + chkSum = this.Checksumcalculator(sb.ToString()); - if ((receiveDataState == SmartSerialPort.FRAMEDATAREADSTATUS.EMPTY) || (receiveDataState == SmartSerialPort.FRAMEDATAREADSTATUS.FAILDATA)) + sb.Append(chkSum); + + if (this.FlagSerialDll == false) { - return; + if (this.smartSerialPort2.IsOpen == true) + this.smartSerialPort2.WriteFrame(sb.ToString(), SmartX.SmartSerialPort.CODETYPES.ASCIICODE); } + else + SerialMgrComm.serialPortMessage(this.ComPortMainToLCD, sb.ToString()); + + // 통신 확인 로그 + if (this.IsCommunicationLogOpen == true) + this.smartFileCommunicationLog.WriteString(string.Format("Send ({0:yyyy-MM-dd HH:mm:ss}): {1}", DateTime.Now, sb.ToString())); + + return ret; + } + private void ReceiveData(string strTemp) + { + int ret = 0; try { @@ -2085,7 +2193,9 @@ namespace ITC81DB_0H.Forms #region 정지 this.CurrentSystemStatus.Equipment = Define.E_EquipmentStatus.Stop; this.SetTrackingHistoryData(Define.E_TrackingOperation.Stop, ""); - + + this.CommID = 0; + // OPT1(액트라 - 안리쯔 금속검출기) if (this.SystemConfig1.SerialCOM1Mode == 14) this.TransferSerialCOM1(this.Transfer_14_OPT1("13")); @@ -2944,7 +3054,7 @@ namespace ITC81DB_0H.Forms return ret; } // 운전시 중량 - private int ReceiveCommand(string cmd, string lane, string dataID, string transferCount, string receiveData) + private int ReceiveCommand(string cmd, string lane, string transactionID, string transferCount, string receiveData) { int ret = 0; int temp = 0; @@ -2966,7 +3076,7 @@ namespace ITC81DB_0H.Forms //this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(15, 4).Trim()); this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus); - this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount); + this.CurrentWeightData.SetDataIDTransferCount(transactionID, transferCount); this.CurrentWeightData.Status = Define.E_WeightStatus.WeightChange; #endregion @@ -2983,7 +3093,7 @@ namespace ITC81DB_0H.Forms this.CurrentWeightData.ProductionSpeed = int.Parse(receiveData.Substring(19, 4).Trim()); this.CurrentWeightData.WeightSum(this.CurrentWeightData.JudgmentStatus); - this.CurrentWeightData.SetDataIDTransferCount(dataID, transferCount); + this.CurrentWeightData.SetDataIDTransferCount(transactionID, transferCount); this.CurrentWeightData.Status = Define.E_WeightStatus.WeightChange; #endregion @@ -2992,953 +3102,967 @@ namespace ITC81DB_0H.Forms break; } - // 통신 제대로 받으면 ACK - this.TransferData(string.Format("{0}{1}{2}{3}", CommunicationCommand.RunWeightData, (int)Define.E_ResponseData.ACK, dataID, transferCount), CommunicationID.MainBoard); - - if (this.CurrentWeightData.WeightString.Trim() == "-9999" || this.CurrentWeightData.WeightString.Trim() == "9999" - || this.CurrentWeightData.WeightString.Trim() == "99999") + //// 통신 제대로 받으면 ACK + //this.TransferData(string.Format("{0}{1}{2}{3}", CommunicationCommand.RunWeightData, (int)Define.E_ResponseData.ACK, dataID, transferCount), CommunicationID.MainBoard); + + if (this.CommID % 10 != int.Parse(transactionID)) + { + this.MissingCommIDCount++; + this.ChildFormMainDisplay.labelMissingCount.Text = this.MissingCommIDCount.ToString(); + } + else + this.CommID++; + + if (this.CurrentComRespone.TransactionID != transactionID) + { + this.CurrentComRespone.TransactionID = transactionID; + this.CurrentComRespone.TransferCount = transferCount; + + if (this.CurrentWeightData.WeightString.Trim() == "-9999" || this.CurrentWeightData.WeightString.Trim() == "9999" + || this.CurrentWeightData.WeightString.Trim() == "99999") + if (this.IsErrorLogOpen == true) + this.smartFileCheckLog.WriteString(string.Format("Check ({0:yyyy-MM-dd HH:mm:ss}): {1},{2},{3}", DateTime.Now, receiveData, this.CurrentProductItem.UnderRange, this.CurrentProductItem.OverRange)); + if (this.IsErrorLogOpen == true) - this.smartFileCheckLog.WriteString(string.Format("Check ({0:yyyy-MM-dd HH:mm:ss}): {1},{2},{3}", DateTime.Now, receiveData, this.CurrentProductItem.UnderRange, this.CurrentProductItem.OverRange)); + this.ChecklogPrint(receiveData, this.CurrentWeightData); - if (this.IsErrorLogOpen == true) - this.ChecklogPrint(receiveData, this.CurrentWeightData); - - // V6.2.0 - if (this.OverloadWeight <= this.CurrentWeightData.Weight) - { - this.CurrentWeightData.WeightString = this.CurrentCalibrationItem.OverloadWeightString; - this.CurrentWeightData.Weight = this.OverloadWeight; - } - - #region 통신 - // 통신 COM1 - if (this.SystemConfig1.SerialCOM1Mode != 0) - { - #region COM1 - switch (this.SystemConfig1.SerialCOM1Mode) + // V6.2.0 + if (this.OverloadWeight <= this.CurrentWeightData.Weight) { - case 1: - this.TransferSerialCOM1(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.TransferSerialCOM1(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.TransferSerialCOM1(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM1(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM1_Step = 1; - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.TransferSerialCOM1(this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.TransferSerialCOM1(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.TransferSerialCOM1(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.TransferSerialCOM1(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1)); - break; - case 10: - this.TransferSerialCOM1(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.TransferSerialCOM1(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.TransferSerialCOM1(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.TransferSerialCOM1(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.TransferSerialCOM1(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.TransferSerialCOM1(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.TransferSerialCOM1(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.TransferSerialCOM1(this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM1(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) - if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) - { - byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM1, this.SystemConfig2.ModbusRTUStartAddressCOM1); - - this.TransferSerialCOM1(sendData); - } - break; - case (int)Define.E_CommMode.f23_STD2: - this.TransferSerialCOM1(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case (int)Define.E_CommMode.f24_MULTi_JET: - this.TransferSerialCOM1(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f26_LINX8830: - this.TransferSerialCOM1(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f27_MYJET: - this.TransferSerialCOM1(this.Transfer_27_MYJET(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 - this.TransferSerialCOM1(this.Transfer_28_OPT4(false, this.CurrentWeightData)); - break; - default: - break; + this.CurrentWeightData.WeightString = this.CurrentCalibrationItem.OverloadWeightString; + this.CurrentWeightData.Weight = this.OverloadWeight; } - #endregion - } - // 통신 COM3 - if (this.SystemConfig1.SerialCOM3Mode != 0) - { - #region COM3 - switch (this.SystemConfig1.SerialCOM3Mode) + + #region 통신 + // 통신 COM1 + if (this.SystemConfig1.SerialCOM1Mode != 0) { - case 1: - this.TransferSerialCOM3(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.TransferSerialCOM3(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.TransferSerialCOM3(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM3(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM3_Step = 1; - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.TransferSerialCOM3(this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.TransferSerialCOM3(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.TransferSerialCOM3(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.TransferSerialCOM3(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM3)); - break; - case 10: - this.TransferSerialCOM3(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.TransferSerialCOM3(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.TransferSerialCOM3(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.TransferSerialCOM3(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.TransferSerialCOM3(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.TransferSerialCOM3(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.TransferSerialCOM3(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.TransferSerialCOM3(this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM3(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) - if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) - { - byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM3, this.SystemConfig2.ModbusRTUStartAddressCOM3); - - this.TransferSerialCOM3(sendData); - } - break; - case (int)Define.E_CommMode.f23_STD2: - this.TransferSerialCOM3(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case (int)Define.E_CommMode.f24_MULTi_JET: - this.TransferSerialCOM3(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f26_LINX8830: - this.TransferSerialCOM3(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f27_MYJET: - this.TransferSerialCOM3(this.Transfer_27_MYJET(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 - this.TransferSerialCOM3(this.Transfer_28_OPT4(false, this.CurrentWeightData)); - break; - default: - break; - } - #endregion - } - // 통신 COM4 - if (this.SystemConfig1.SerialCOM4Mode != 0) - { - #region COM4 - switch (this.SystemConfig1.SerialCOM4Mode) - { - case 1: - this.TransferSerialCOM4(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.TransferSerialCOM4(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.TransferSerialCOM4(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM4(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM4_Step = 1; - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.TransferSerialCOM4(this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.TransferSerialCOM4(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.TransferSerialCOM4(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.TransferSerialCOM4(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM4)); - break; - case 10: - this.TransferSerialCOM4(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.TransferSerialCOM4(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.TransferSerialCOM4(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.TransferSerialCOM4(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.TransferSerialCOM4(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.TransferSerialCOM4(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.TransferSerialCOM4(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.TransferSerialCOM4(this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.TransferSerialCOM4(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) - if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) - { - byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM4, this.SystemConfig2.ModbusRTUStartAddressCOM4); - - this.TransferSerialCOM4(sendData); - } - break; - case (int)Define.E_CommMode.f23_STD2: - this.TransferSerialCOM4(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case (int)Define.E_CommMode.f24_MULTi_JET: - this.TransferSerialCOM4(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f26_LINX8830: - this.TransferSerialCOM4(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f27_MYJET: - this.TransferSerialCOM4(this.Transfer_27_MYJET(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 - this.TransferSerialCOM4(this.Transfer_28_OPT4(false, this.CurrentWeightData)); - break; - default: - break; - } - #endregion - } - - // 이더넷 - switch (this.SystemConfig2.EthernetOperationMode) - { - case 1: - if (this.smartTCPMultiServer.ClientInfoList != null) + #region COM1 + switch (this.SystemConfig1.SerialCOM1Mode) { + case 1: + this.TransferSerialCOM1(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; + case 2: + this.TransferSerialCOM1(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 3: + if (this.SystemConfig1.IsPrintPerProductEnable == true) + this.TransferSerialCOM1(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 4: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM1(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK + } + break; + case 5: + this.HMCOM1_Step = 1; + this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ENQ)); + break; + case 6: + this.TransferSerialCOM1(this.Transfer_6_OPT0(this.CurrentWeightData)); + break; + case 7: + this.TransferSerialCOM1(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); + break; + case 8: + this.TransferSerialCOM1(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); + break; + case 9: + this.TransferSerialCOM1(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1)); + break; + case 10: + this.TransferSerialCOM1(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 11: + this.TransferSerialCOM1(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 12: + this.TransferSerialCOM1(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 13: + this.TransferSerialCOM1(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); + break; + case 17: + this.TransferSerialCOM1(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 18: + this.TransferSerialCOM1(this.Transfer_18_HP200(this.CurrentWeightData, 1)); + this.TransferSerialCOM1(this.Transfer_18_HP200(this.CurrentWeightData, 2)); + break; + case 19: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + this.TransferSerialCOM1(this.Transfer_19_SmartJet(this.CurrentWeightData)); + break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.TransferSerialCOM1(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM1(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM1(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM1(this.SendChar(Define.E_CharValue.ACK)); // ACK + } + break; + case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) + if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) + { + byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM1, this.SystemConfig2.ModbusRTUStartAddressCOM1); + + this.TransferSerialCOM1(sendData); + } + break; + case (int)Define.E_CommMode.f23_STD2: + this.TransferSerialCOM1(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.TransferSerialCOM1(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.TransferSerialCOM1(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + this.TransferSerialCOM1(this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.TransferSerialCOM1(this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; + default: + break; + } + #endregion + } + // 통신 COM3 + if (this.SystemConfig1.SerialCOM3Mode != 0) + { + #region COM3 + switch (this.SystemConfig1.SerialCOM3Mode) + { + case 1: + this.TransferSerialCOM3(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; + case 2: + this.TransferSerialCOM3(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 3: + if (this.SystemConfig1.IsPrintPerProductEnable == true) + this.TransferSerialCOM3(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 4: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM3(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK + } + break; + case 5: + this.HMCOM3_Step = 1; + this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ENQ)); + break; + case 6: + this.TransferSerialCOM3(this.Transfer_6_OPT0(this.CurrentWeightData)); + break; + case 7: + this.TransferSerialCOM3(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); + break; + case 8: + this.TransferSerialCOM3(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); + break; + case 9: + this.TransferSerialCOM3(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM3)); + break; + case 10: + this.TransferSerialCOM3(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 11: + this.TransferSerialCOM3(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 12: + this.TransferSerialCOM3(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 13: + this.TransferSerialCOM3(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); + break; + case 17: + this.TransferSerialCOM3(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 18: + this.TransferSerialCOM3(this.Transfer_18_HP200(this.CurrentWeightData, 1)); + this.TransferSerialCOM3(this.Transfer_18_HP200(this.CurrentWeightData, 2)); + break; + case 19: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + this.TransferSerialCOM3(this.Transfer_19_SmartJet(this.CurrentWeightData)); + break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.TransferSerialCOM3(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM3(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM3(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM3(this.SendChar(Define.E_CharValue.ACK)); // ACK + } + break; + case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) + if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) + { + byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM3, this.SystemConfig2.ModbusRTUStartAddressCOM3); + + this.TransferSerialCOM3(sendData); + } + break; + case (int)Define.E_CommMode.f23_STD2: + this.TransferSerialCOM3(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.TransferSerialCOM3(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.TransferSerialCOM3(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + this.TransferSerialCOM3(this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.TransferSerialCOM3(this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; + default: + break; + } + #endregion + } + // 통신 COM4 + if (this.SystemConfig1.SerialCOM4Mode != 0) + { + #region COM4 + switch (this.SystemConfig1.SerialCOM4Mode) + { + case 1: + this.TransferSerialCOM4(this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; + case 2: + this.TransferSerialCOM4(this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 3: + if (this.SystemConfig1.IsPrintPerProductEnable == true) + this.TransferSerialCOM4(this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 4: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM4(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK + } + break; + case 5: + this.HMCOM4_Step = 1; + this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ENQ)); + break; + case 6: + this.TransferSerialCOM4(this.Transfer_6_OPT0(this.CurrentWeightData)); + break; + case 7: + this.TransferSerialCOM4(this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); + break; + case 8: + this.TransferSerialCOM4(this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); + break; + case 9: + this.TransferSerialCOM4(this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM4)); + break; + case 10: + this.TransferSerialCOM4(this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 11: + this.TransferSerialCOM4(this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 12: + this.TransferSerialCOM4(this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 13: + this.TransferSerialCOM4(this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); + break; + case 17: + this.TransferSerialCOM4(this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 18: + this.TransferSerialCOM4(this.Transfer_18_HP200(this.CurrentWeightData, 1)); + this.TransferSerialCOM4(this.Transfer_18_HP200(this.CurrentWeightData, 2)); + break; + case 19: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + this.TransferSerialCOM4(this.Transfer_19_SmartJet(this.CurrentWeightData)); + break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.TransferSerialCOM4(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK + Thread.Sleep(200); + this.TransferSerialCOM4(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.TransferSerialCOM4(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.TransferSerialCOM4(this.SendChar(Define.E_CharValue.ACK)); // ACK + } + break; + case (int)Define.E_CommMode.f22_Modbus: // Modbus RTU(Master 사용 시 - Write multiple register) + if (this.SystemConfig2.ModbusRTUSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) + { + byte[] sendData = this.Modbus.MakeRTUSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusSlaveIDCOM4, this.SystemConfig2.ModbusRTUStartAddressCOM4); + + this.TransferSerialCOM4(sendData); + } + break; + case (int)Define.E_CommMode.f23_STD2: + this.TransferSerialCOM4(this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.TransferSerialCOM4(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.TransferSerialCOM4(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + this.TransferSerialCOM4(this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.TransferSerialCOM4(this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; + default: + break; + } + #endregion + } + + // 이더넷 + switch (this.SystemConfig2.EthernetOperationMode) + { + case 1: + if (this.smartTCPMultiServer.ClientInfoList != null) + { + if (this.SystemConfig2.EthernetCommMode != 0) + { + foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList) + { + #region Server + switch (this.SystemConfig2.EthernetCommMode) + { + case 1: + this.EthernetServerSendMessage(client, + this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; + case 2: + this.EthernetServerSendMessage(client, this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 3: + if (this.SystemConfig1.IsPrintPerProductEnable == true) + this.EthernetServerSendMessage(client, this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 4: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK + } + break; + case 5: + this.HMCOM1_Step = 1; + this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ENQ)); + break; + case 6: + this.EthernetServerSendMessage(client, this.Transfer_6_OPT0(this.CurrentWeightData)); + break; + case 7: + this.EthernetServerSendMessage(client, this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); + break; + case 8: + this.EthernetServerSendMessage(client, this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); + break; + case 9: + this.EthernetServerSendMessage(client, this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1)); + break; + case 10: + this.EthernetServerSendMessage(client, this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 11: + this.EthernetServerSendMessage(client, this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 12: + this.EthernetServerSendMessage(client, this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 13: + this.EthernetServerSendMessage(client, this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); + break; + case 17: + this.EthernetServerSendMessage(client, this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); + break; + case 18: + this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.CurrentWeightData, 1)); + this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.CurrentWeightData, 2)); + break; + case 19: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + this.EthernetServerSendMessage(client, this.Transfer_19_SmartJet(this.CurrentWeightData)); + break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK + } + break; + case (int)Define.E_CommMode.f22_Modbus: // 22, Modbus TCP + if (this.SystemConfig2.ModbusTCPSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) + { + byte[] sendData = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusTCPStartAddress); + + this.EthernetServerSendMessage(client, sendData); + } + break; + case (int)Define.E_CommMode.f23_STD2: + this.EthernetServerSendMessage(client, + this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); + break; + case (int)Define.E_CommMode.f24_MULTi_JET: + this.EthernetServerSendMessage(client, this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.EthernetServerSendMessage(client, this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + this.EthernetServerSendMessage(client, this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.EthernetServerSendMessage(client, this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; + default: + break; + } + #endregion + } + } + } + break; + case 2: if (this.SystemConfig2.EthernetCommMode != 0) { - foreach (SmartTCPMultiServer.CLIENTSINFOS client in this.smartTCPMultiServer.ClientInfoList) + #region Client + switch (this.SystemConfig2.EthernetCommMode) { - #region Server - switch (this.SystemConfig2.EthernetCommMode) - { - case 1: - this.EthernetServerSendMessage(client, - this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case 2: - this.EthernetServerSendMessage(client, this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - this.EthernetServerSendMessage(client, this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM1_Step = 1; - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ENQ)); - break; - case 6: - this.EthernetServerSendMessage(client, this.Transfer_6_OPT0(this.CurrentWeightData)); - break; - case 7: - this.EthernetServerSendMessage(client, this.Transfer_7_imaje9410OPT2(this.CurrentWeightData)); - break; - case 8: - this.EthernetServerSendMessage(client, this.Transfer_8_imaje9028OPT2(this.CurrentWeightData)); - break; - case 9: - this.EthernetServerSendMessage(client, this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1)); - break; - case 10: - this.EthernetServerSendMessage(client, this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 11: - this.EthernetServerSendMessage(client, this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 12: - this.EthernetServerSendMessage(client, this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 13: - this.EthernetServerSendMessage(client, this.Transfer_13_Marking_VJ1510(this.CurrentWeightData)); - break; - case 17: - this.EthernetServerSendMessage(client, this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem)); - break; - case 18: - this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.EthernetServerSendMessage(client, this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.EthernetServerSendMessage(client, this.Transfer_19_SmartJet(this.CurrentWeightData)); - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetServerSendMessage(client, this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetServerSendMessage(client, this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetServerSendMessage(client, this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_CommMode.f22_Modbus: // 22, Modbus TCP - if (this.SystemConfig2.ModbusTCPSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) - { - byte[] sendData = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusTCPStartAddress); - - this.EthernetServerSendMessage(client, sendData); - } - break; - case (int)Define.E_CommMode.f23_STD2: - this.EthernetServerSendMessage(client, - this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem)); - break; - case (int)Define.E_CommMode.f24_MULTi_JET: - this.EthernetServerSendMessage(client, this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f26_LINX8830: - this.EthernetServerSendMessage(client, this.Transfer_26_LINX8830(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f27_MYJET: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - this.EthernetServerSendMessage(client, this.Transfer_27_MYJET(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 - this.EthernetServerSendMessage(client, this.Transfer_28_OPT4(false, this.CurrentWeightData)); - break; - default: - break; - } - #endregion - } - } - } - break; - case 2: - if (this.SystemConfig2.EthernetCommMode != 0) - { - #region Client - switch (this.SystemConfig2.EthernetCommMode) - { - case 1: - this.ClientSendDataString = this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem); - this.EthernetWeightData(this.ClientSendDataString); - break; - case 2: - this.ClientSendDataString = this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem); - this.EthernetWeightData(this.ClientSendDataString); - break; - case 3: - if (this.SystemConfig1.IsPrintPerProductEnable == true) - { - this.ClientSendDataString = this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem); + case 1: + this.ClientSendDataString = this.Transfer_1_STD1(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem); this.EthernetWeightData(this.ClientSendDataString); - } - break; - case 4: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetWeightData(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case 5: - this.HMCOM1_Step = 1; - this.ClientSendDataString = this.SendChar(Define.E_CharValue.ENQ); - this.EthernetWeightData(this.ClientSendDataString); - break; - case 6: - this.ClientSendDataString = this.Transfer_6_OPT0(this.CurrentWeightData); - this.EthernetWeightData(this.ClientSendDataString); - break; - case 7: - this.ClientSendDatabyteArray = this.Transfer_7_imaje9410OPT2(this.CurrentWeightData); - this.EthernetWeightData(this.ClientSendDatabyteArray); - break; - case 8: - this.ClientSendDatabyteArray = this.Transfer_8_imaje9028OPT2(this.CurrentWeightData); - this.EthernetWeightData(this.ClientSendDatabyteArray); - break; - case 9: - this.ClientSendDataString = this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1); - this.EthernetWeightData(this.ClientSendDataString); - break; - case 10: - this.ClientSendDatabyteArray = this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem); - this.EthernetWeightData(this.ClientSendDatabyteArray); - break; - case 11: - this.ClientSendDatabyteArray = this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem); - this.EthernetWeightData(this.ClientSendDatabyteArray); - break; - case 12: - this.ClientSendDatabyteArray = this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem); - this.EthernetWeightData(this.ClientSendDatabyteArray); - break; - case 13: - this.ClientSendDataString = this.Transfer_13_Marking_VJ1510(this.CurrentWeightData); - this.EthernetWeightData(this.ClientSendDataString); - break; - case 17: - this.ClientSendDataString = this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem); - this.EthernetWeightData(this.ClientSendDataString); - break; - case 18: - this.EthernetWeightData(this.Transfer_18_HP200(this.CurrentWeightData, 1)); - this.EthernetWeightData(this.Transfer_18_HP200(this.CurrentWeightData, 2)); - break; - case 19: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.ClientSendDataString = this.Transfer_19_SmartJet(this.CurrentWeightData); + break; + case 2: + this.ClientSendDataString = this.Transfer_2_Remote(this.CurrentWeightData, this.CurrentProductItem); this.EthernetWeightData(this.ClientSendDataString); - } - break; - case 20: - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - Thread.Sleep(200); - this.EthernetWeightData(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 - } - else - { - this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경 - Thread.Sleep(200); - this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK - } - break; - case (int)Define.E_CommMode.f22_Modbus: // 22, Modbus TCP - if (this.SystemConfig2.ModbusTCPSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) - { - this.ClientSendDatabyteArray = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusTCPStartAddress); + break; + case 3: + if (this.SystemConfig1.IsPrintPerProductEnable == true) + { + this.ClientSendDataString = this.Transfer_3_Print(this.CurrentWeightData, this.CurrentProductItem); + this.EthernetWeightData(this.ClientSendDataString); + } + break; + case 4: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK + Thread.Sleep(200); + this.EthernetWeightData(this.WeightData9410_OPT1(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK + } + break; + case 5: + this.HMCOM1_Step = 1; + this.ClientSendDataString = this.SendChar(Define.E_CharValue.ENQ); + this.EthernetWeightData(this.ClientSendDataString); + break; + case 6: + this.ClientSendDataString = this.Transfer_6_OPT0(this.CurrentWeightData); + this.EthernetWeightData(this.ClientSendDataString); + break; + case 7: + this.ClientSendDatabyteArray = this.Transfer_7_imaje9410OPT2(this.CurrentWeightData); + this.EthernetWeightData(this.ClientSendDatabyteArray); + break; + case 8: + this.ClientSendDatabyteArray = this.Transfer_8_imaje9028OPT2(this.CurrentWeightData); + this.EthernetWeightData(this.ClientSendDatabyteArray); + break; + case 9: + this.ClientSendDataString = this.Transfer_9_Hitachi(this.CurrentWeightData, Define.E_SerialCOM.COM1); + this.EthernetWeightData(this.ClientSendDataString); + break; + case 10: + this.ClientSendDatabyteArray = this.Transfer_10_MACSA(this.CurrentWeightData, this.CurrentProductItem); + this.EthernetWeightData(this.ClientSendDatabyteArray); + break; + case 11: + this.ClientSendDatabyteArray = this.Transfer_11_Markoprint(this.CurrentWeightData, this.CurrentProductItem); + this.EthernetWeightData(this.ClientSendDatabyteArray); + break; + case 12: + this.ClientSendDatabyteArray = this.Transfer_12_alphaJET(this.CurrentWeightData, this.CurrentProductItem); + this.EthernetWeightData(this.ClientSendDatabyteArray); + break; + case 13: + this.ClientSendDataString = this.Transfer_13_Marking_VJ1510(this.CurrentWeightData); + this.EthernetWeightData(this.ClientSendDataString); + break; + case 17: + this.ClientSendDataString = this.Transfer_17_OPT3(this.CurrentWeightData, this.CurrentProductItem); + this.EthernetWeightData(this.ClientSendDataString); + break; + case 18: + this.EthernetWeightData(this.Transfer_18_HP200(this.CurrentWeightData, 1)); + this.EthernetWeightData(this.Transfer_18_HP200(this.CurrentWeightData, 2)); + break; + case 19: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.ClientSendDataString = this.Transfer_19_SmartJet(this.CurrentWeightData); + this.EthernetWeightData(this.ClientSendDataString); + } + break; + case 20: + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.EthernetWeightData(this.RoomChange9410(2)); // 2번방 변경 + Thread.Sleep(200); + this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK + Thread.Sleep(200); + this.EthernetWeightData(this.WeightData9410_OPT3(this.CurrentWeightData)); // 중량값 전송 + } + else + { + this.EthernetWeightData(this.RoomChange9410(1)); // 1번방 변경 + Thread.Sleep(200); + this.EthernetWeightData(this.SendChar(Define.E_CharValue.ACK)); // ACK + } + break; + case (int)Define.E_CommMode.f22_Modbus: // 22, Modbus TCP + if (this.SystemConfig2.ModbusTCPSelectFunction == (int)Define.E_ModbusFunction._16_WriteMultipleRegister) + { + this.ClientSendDatabyteArray = this.Modbus.MakeTCPSendAllData(this.Transfer_22_Modbus_Write(), this.SystemConfig2.ModbusTCPStartAddress); - this.EthernetWeightDataForModbus(this.ClientSendDatabyteArray); - } - break; - case (int)Define.E_CommMode.f23_STD2: - this.ClientSendDataString = this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem); - this.EthernetWeightData(this.ClientSendDataString); - break; - case (int)Define.E_CommMode.f24_MULTi_JET: + this.EthernetWeightDataForModbus(this.ClientSendDatabyteArray); + } + break; + case (int)Define.E_CommMode.f23_STD2: + this.ClientSendDataString = this.Transfer_23_STD2(this.SystemConfig1, this.CurrentWeightData, this.CurrentProductItem); + this.EthernetWeightData(this.ClientSendDataString); + break; + case (int)Define.E_CommMode.f24_MULTi_JET: this.EthernetWeightData(this.Transfer_24_MULTi_JET(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f26_LINX8830: - this.EthernetWeightData(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f27_MYJET: - this.EthernetWeightData(this.Transfer_27_MYJET(false, this.CurrentWeightData)); - break; - case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 - this.EthernetWeightData(this.Transfer_28_OPT4(false, this.CurrentWeightData)); - break; - default: - break; - } - #endregion - } - break; - default: - break; - } - #endregion - - #region 카운터출력 - - #region Counting Output 1 - temp = this.SystemConfig2.CountingOutput1Number; - - if (this.SystemConfig2.CountingOutput1Mode != 0 && temp != 0) - { - switch (this.SystemConfig2.CountingOutput1Mode) - { - case 1: // Pass - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); + break; + case (int)Define.E_CommMode.f26_LINX8830: + this.EthernetWeightData(this.Transfer_26_LINX8830(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f27_MYJET: + this.EthernetWeightData(this.Transfer_27_MYJET(false, this.CurrentWeightData)); + break; + case (int)Define.E_CommMode.f28_OPT4: // Tasco(타스코) PC 전송 + this.EthernetWeightData(this.Transfer_28_OPT4(false, this.CurrentWeightData)); + break; + default: + break; } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; - } - break; - case 2: // NG - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over - || this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; - } - break; - case 3: // Over - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; - } - break; - case 4: // Under - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput1Count++; - - if (this.CountingOutput1Count >= temp) - { - this.CountingOutput1Count = 0; - - if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23. 알람 조건이 충족하여 장비가 정지되었습니다 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput1Continuous == true) - this.CountingOutput1Count = 0; + #endregion } break; default: break; } - } - #endregion + #endregion - #region Counting Output 2 - temp = this.SystemConfig2.CountingOutput2Number; + #region 카운터출력 - if (this.SystemConfig2.CountingOutput2Mode != 0 && temp != 0) - { - switch (this.SystemConfig2.CountingOutput2Mode) + #region Counting Output 1 + temp = this.SystemConfig2.CountingOutput1Number; + + if (this.SystemConfig2.CountingOutput1Mode != 0 && temp != 0) { - case 1: // Pass - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) - { - this.CountingOutput2Count++; - - if (this.CountingOutput2Count >= temp) + switch (this.SystemConfig2.CountingOutput1Mode) + { + case 1: // Pass + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) { - this.CountingOutput2Count = 0; + this.CountingOutput1Count++; - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) + if (this.CountingOutput1Count >= temp) { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); + this.CountingOutput1Count = 0; + + if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) + this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); + if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) + { + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + // 메시지 23 + this.StartThreadMessage1(); + } + if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) + this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); } + else + { + if (this.SystemConfig2.IsCountingOutput1Continuous == true) + this.CountingOutput1Count = 0; + } + break; + case 2: // NG + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over + || this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) + { + this.CountingOutput1Count++; + + if (this.CountingOutput1Count >= temp) + { + this.CountingOutput1Count = 0; + + if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) + this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); + if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) + { + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + // 메시지 23 + this.StartThreadMessage1(); + } + if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) + this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); + } + } + else + { + if (this.SystemConfig2.IsCountingOutput1Continuous == true) + this.CountingOutput1Count = 0; + } + break; + case 3: // Over + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over) + { + this.CountingOutput1Count++; + + if (this.CountingOutput1Count >= temp) + { + this.CountingOutput1Count = 0; + + if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) + this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); + if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) + { + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + // 메시지 23 + this.StartThreadMessage1(); + } + if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) + this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); + } + } + else + { + if (this.SystemConfig2.IsCountingOutput1Continuous == true) + this.CountingOutput1Count = 0; + } + break; + case 4: // Under + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) + { + this.CountingOutput1Count++; + + if (this.CountingOutput1Count >= temp) + { + this.CountingOutput1Count = 0; + + if (this.SystemConfig2.IsCountingOutput1BuzzerOn == true) + this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); + if (this.SystemConfig2.IsCountingOutput1ConveyorStop == true) + { + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + // 메시지 23. 알람 조건이 충족하여 장비가 정지되었습니다 + this.StartThreadMessage1(); + } + if (this.SystemConfig2.IsCountingOutput1ExternalOutput == true) + this.TransferData(CommunicationCommand.CountingOutput1Pulse, CommunicationID.MainBoard); + } + } + else + { + if (this.SystemConfig2.IsCountingOutput1Continuous == true) + this.CountingOutput1Count = 0; + } + break; + default: + break; + } + } + #endregion + + #region Counting Output 2 + temp = this.SystemConfig2.CountingOutput2Number; + + if (this.SystemConfig2.CountingOutput2Mode != 0 && temp != 0) + { + switch (this.SystemConfig2.CountingOutput2Mode) + { + case 1: // Pass + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Pass) + { + this.CountingOutput2Count++; + + if (this.CountingOutput2Count >= temp) + { + this.CountingOutput2Count = 0; + + if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) + this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); + if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) + { + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + // 메시지 23 + this.StartThreadMessage1(); + } + if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) + this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); + } + } + else + { + if (this.SystemConfig2.IsCountingOutput2Continuous == true) + this.CountingOutput2Count = 0; + } + break; + case 2: // NG + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over + || this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) + { + this.CountingOutput2Count++; + + if (this.CountingOutput2Count >= temp) + { + this.CountingOutput2Count = 0; + + if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) + this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); + if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) + { + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + // 메시지 23 + this.StartThreadMessage1(); + } + if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) + this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); + } + } + else + { + if (this.SystemConfig2.IsCountingOutput2Continuous == true) + this.CountingOutput2Count = 0; + } + break; + case 3: // Over + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over) + { + this.CountingOutput2Count++; + + if (this.CountingOutput2Count >= temp) + { + this.CountingOutput2Count = 0; + + if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) + this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); + if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) + { + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + // 메시지 23 + this.StartThreadMessage1(); + } + if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) + this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); + } + } + else + { + if (this.SystemConfig2.IsCountingOutput2Continuous == true) + this.CountingOutput2Count = 0; + } + break; + case 4: // Under + if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) + { + this.CountingOutput2Count++; + + if (this.CountingOutput2Count >= temp) + { + this.CountingOutput2Count = 0; + + if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) + this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); + if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) + { + this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); + // 메시지 23 + this.StartThreadMessage1(); + } + if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) + this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); + } + } + else + { + if (this.SystemConfig2.IsCountingOutput2Continuous == true) + this.CountingOutput2Count = 0; + } + break; + default: + break; + } + } + #endregion + + this.ChildFormMainDisplay.MainDisplayWeightBigScreen.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count); + this.ChildFormMainDisplay.MainDisplayWeightSmall.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count); + #endregion + + // CurrentDisplay + switch (this.CurrentSystemStatus.CurrentDisplay) + { + case Define.E_DisplayStore.MainDisplay: + #region MainDisplay + if (this.SystemConfig1.IsBarcodeEnable == true) + { + this.CurrentBarcode.BarcodeDequeue(); + + if (this.ChildFormMainDisplay != null) + this.ChildFormMainDisplay.UpdateBarcodeDisplay(this.CurrentBarcode); + + if (this.CurrentBarcode.GetQueueCount > 0) + this.BarcodeProductChange(this.CurrentBarcode); + + if (this.ChildFormMainDisplay != null) + this.ChildFormMainDisplay.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData); + } + + if (this.ChildFormMainDisplay != null) + this.ChildFormMainDisplay.UpdateStartWeightDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData); + + if (this.SystemConfig1.DatabackupFormat == 1) + { + #region OPT1 - 종근당 옵션 + if (this.timeOut.Enabled == true) + this.timeOut.Enabled = false; + + //if (this.CollectionBufferWeightData.Count != 0) + //{ + // if (this.CurrentJudgmentResult.PreviousRejectData != Define.E_JudgmentResult.None) + // this.CollectionBufferWeightData[0].Status = this.CurrentJudgmentResult.PreviousRejectData.ToString(); + // else + // this.CollectionBufferWeightData[0].Status = Define.E_JudgmentResult.OM.ToString(); + // this.DataBackup1(this.CollectionBufferWeightData[0]); + // this.CollectionBufferWeightData.Clear(); + //} + + this.CollectionBufferWeightData.Add(new DataBackupOPT1()); + this.CollectionBufferWeightData[this.CollectionBufferWeightData.Count - 1].SetData( + this.CurrentProductItem, this.CurrentWeightData, this.SystemConfig1, DateTime.Now); + + if (this.CurrentJudgmentSetItem.Sorter2Mode == 3) + this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter2DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter2RunTime * 5) + 1000; + else + this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter1DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter1RunTime * 5) + 1000; + this.timeOut.Enabled = true; + #endregion } else { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; + #region STD1 + if (this.CurrentWeightData.JudgmentStatus != Define.E_JudgmentStatus.Empty) + this.TrackingInspectionData0(this.CurrentWeightData); + #endregion } - break; - case 2: // NG - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over - || this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput2Count++; - if (this.CountingOutput2Count >= temp) - { - this.CountingOutput2Count = 0; - - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; - } - break; - case 3: // Over - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Over) - { - this.CountingOutput2Count++; - - if (this.CountingOutput2Count >= temp) - { - this.CountingOutput2Count = 0; - - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; - } - break; - case 4: // Under - if (this.CurrentWeightData.JudgmentStatus == Define.E_JudgmentStatus.Under) - { - this.CountingOutput2Count++; - - if (this.CountingOutput2Count >= temp) - { - this.CountingOutput2Count = 0; - - if (this.SystemConfig2.IsCountingOutput2BuzzerOn == true) - this.TransferData(CommunicationCommand.BuzzerOn, CommunicationID.MainBoard); - if (this.SystemConfig2.IsCountingOutput2ConveyorStop == true) - { - this.TransferData(CommunicationCommand.Stop, CommunicationID.MainBoard); - // 메시지 23 - this.StartThreadMessage1(); - } - if (this.SystemConfig2.IsCountingOutput2ExternalOutput == true) - this.TransferData(CommunicationCommand.CountingOutput2Pulse, CommunicationID.MainBoard); - } - } - else - { - if (this.SystemConfig2.IsCountingOutput2Continuous == true) - this.CountingOutput2Count = 0; - } + // 표준분포 + this.CurrentWeightData.SetNormalDistribution(this.CurrentProductItem.CollectionNormalDistributionRange, this.CurrentWeightData.WeightString); + #endregion break; default: break; } } - #endregion - - this.ChildFormMainDisplay.MainDisplayWeightBigScreen.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count); - this.ChildFormMainDisplay.MainDisplayWeightSmall.UpdateAlarmLabelDisplay(this.CountingOutput1Count, this.CountingOutput2Count); - #endregion - - // CurrentDisplay - switch (this.CurrentSystemStatus.CurrentDisplay) - { - case Define.E_DisplayStore.MainDisplay: - #region MainDisplay - if (this.SystemConfig1.IsBarcodeEnable == true) - { - this.CurrentBarcode.BarcodeDequeue(); - - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateBarcodeDisplay(this.CurrentBarcode); - - if (this.CurrentBarcode.GetQueueCount > 0) - this.BarcodeProductChange(this.CurrentBarcode); - - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateCurrentProductDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData); - } - - if (this.ChildFormMainDisplay != null) - this.ChildFormMainDisplay.UpdateStartWeightDisplay(this.CurrentSystemStatus.Equipment, this.CurrentProductItem, this.CurrentWeightData); - - if (this.SystemConfig1.DatabackupFormat == 1) - { - #region OPT1 - 종근당 옵션 - if (this.timeOut.Enabled == true) - this.timeOut.Enabled = false; - - //if (this.CollectionBufferWeightData.Count != 0) - //{ - // if (this.CurrentJudgmentResult.PreviousRejectData != Define.E_JudgmentResult.None) - // this.CollectionBufferWeightData[0].Status = this.CurrentJudgmentResult.PreviousRejectData.ToString(); - // else - // this.CollectionBufferWeightData[0].Status = Define.E_JudgmentResult.OM.ToString(); - // this.DataBackup1(this.CollectionBufferWeightData[0]); - // this.CollectionBufferWeightData.Clear(); - //} - - this.CollectionBufferWeightData.Add(new DataBackupOPT1()); - this.CollectionBufferWeightData[this.CollectionBufferWeightData.Count - 1].SetData( - this.CurrentProductItem, this.CurrentWeightData, this.SystemConfig1, DateTime.Now); - - if (this.CurrentJudgmentSetItem.Sorter2Mode == 3) - this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter2DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter2RunTime * 5) + 1000; - else - this.timeOut.Interval = (this.CurrentJudgmentSetItem.Sorter1DelayTime * 2) + (this.CurrentJudgmentSetItem.Sorter1RunTime * 5) + 1000; - this.timeOut.Enabled = true; - #endregion - } - else - { - #region STD1 - if (this.CurrentWeightData.JudgmentStatus != Define.E_JudgmentStatus.Empty) - this.TrackingInspectionData0(this.CurrentWeightData); - #endregion - } - - // 표준분포 - this.CurrentWeightData.SetNormalDistribution(this.CurrentProductItem.CollectionNormalDistributionRange, this.CurrentWeightData.WeightString); - #endregion - break; - default: - break; - } break; default: break; @@ -6238,97 +6362,145 @@ namespace ITC81DB_0H.Forms #region Serial COM1 public void OpenSerialCOM1() { + int baudrate = 9600; + if (this.SystemConfig1.SerialCOM1Mode == 0 || this.SystemConfig1.SerialCOM1Mode == 16) return; - if (this.smartSerialPort1.IsOpen == true) - this.smartSerialPort1.Close(); + this.CloseSerialCOM1(); switch (this.SystemConfig1.SerialCOM1BaudRate) { case 0: this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps; + baudrate = 9600; break; case 1: this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._19200bps; + baudrate = 19200; break; case 2: this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._38400bps; + baudrate = 38400; break; case 3: + this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._57600bps; + baudrate = 57600; + break; + case 4: this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._115200bps; + baudrate = 115200; break; default: this.smartSerialPort1.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps; + baudrate = 9600; break; } - this.smartSerialPort1.Open(); + if (this.FlagSerialDll == false) + { + this.smartSerialPort1.Open(); + } + else + { + // Port : COM1 + SerialMgrComm.serialPortOpen("COM1:", baudrate, 0, 0, 8); + } } public void CloseSerialCOM1() { - this.smartSerialPort1.Close(); + if (this.FlagSerialDll == false) + this.smartSerialPort1.Close(); + else + SerialMgrComm.serialPortClose("COM1:"); } public bool CheckOpenCOM1() { - if (this.smartSerialPort1.IsOpen == true) - return true; + if (this.FlagSerialDll == false) + { + if (this.smartSerialPort1.IsOpen == true) + return true; + else + return false; + } else - return false; + return true; } public void TransferDirectSerialCOM1(string strTemp) { if (this.SystemConfig1.SerialCOM1Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1) { byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp); - this.smartSerialPort1.WriteNoneFrame(strByte); + + if (this.FlagSerialDll == false) + this.smartSerialPort1.WriteNoneFrame(strByte); + else + SerialMgrComm.serialPortMessageByte("COM1:", strByte, strByte.Length); } else - this.smartSerialPort1.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + { + if (this.FlagSerialDll == false) + this.smartSerialPort1.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + else + SerialMgrComm.serialPortMessageRaw("COM1:", strTemp); + } } public void TransferDirectSerialCOM1(byte[] buffer) { - this.smartSerialPort1.WriteNoneFrame(buffer); + if (this.FlagSerialDll == false) + this.smartSerialPort1.WriteNoneFrame(buffer); + else + SerialMgrComm.serialPortMessageByte("COM1:", buffer, buffer.Length); } public void TransferSerialCOM1(string strTemp) { - if (this.smartSerialPort1.IsOpen == true) + if (this.SystemConfig1.TransmissionDelayTimeCOM1 == 0) { - if (this.SystemConfig1.TransmissionDelayTimeCOM1 == 0) + if (this.SystemConfig1.SerialCOM1Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1) { - if (this.SystemConfig1.SerialCOM1Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1) - { - byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp); + byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp); + + if (this.FlagSerialDll == false) this.smartSerialPort1.WriteNoneFrame(strByte); - } else - this.smartSerialPort1.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + SerialMgrComm.serialPortMessageByte("COM1:", strByte, strByte.Length); } else { - this.QueueCOM1.Enqueue(strTemp); - this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM1); + if (this.FlagSerialDll == false) + this.smartSerialPort1.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + else + SerialMgrComm.serialPortMessageRaw("COM1:", strTemp); } } + else + { + this.QueueCOM1.Enqueue(strTemp); + this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM1); + } } public void TransferSerialCOM1(byte[] buffer) { - if (this.smartSerialPort1.IsOpen == true) + if (this.SystemConfig1.TransmissionDelayTimeCOM1 == 0) { - if (this.SystemConfig1.TransmissionDelayTimeCOM1 == 0) + if (this.FlagSerialDll == false) this.smartSerialPort1.WriteNoneFrame(buffer); else - { - this.QueueCOM1.Enqueue(buffer); - this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM1); - } + SerialMgrComm.serialPortMessageByte("COM1:", buffer, buffer.Length); + } + else + { + this.QueueCOM1.Enqueue(buffer); + this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM1); } } public void ChangeSerialCOM1FrameSeparateType(Define.E_SeparateType type) { + if (this.FlagSerialDll == true) + return; + // 통신 포트 설정 - if (this.smartSerialPort1.IsOpen == true) - this.smartSerialPort1.Close(); + this.CloseSerialCOM1(); if (type == Define.E_SeparateType.ETXONLY) { @@ -6363,114 +6535,170 @@ namespace ITC81DB_0H.Forms #region Serial COM3 public void OpenSerialCOM3() { + int baudrate = 9600; + if (this.SystemConfig1.SerialCOM3Mode == 0 || this.SystemConfig1.SerialCOM3Mode == 16) return; - if (this.smartSerialPort3.IsOpen == true) - this.smartSerialPort3.Close(); + this.CloseSerialCOM3(); switch (this.SystemConfig1.SerialCOM3BaudRate) { case 0: this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps; + baudrate = 9600; break; case 1: this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._19200bps; + baudrate = 19200; break; case 2: this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._38400bps; + baudrate = 38400; break; case 3: + this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._57600bps; + baudrate = 57600; + break; + case 4: this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._115200bps; + baudrate = 115200; break; default: this.smartSerialPort3.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps; + baudrate = 9600; break; } - this.smartSerialPort3.Open(); + if (this.FlagSerialDll == false) + { + this.smartSerialPort3.Open(); + } + else + { + // Port : COM3 + SerialMgrComm.serialPortOpen("COM3:", baudrate, 0, 0, 8); + } } public void CloseSerialCOM3() { - this.smartSerialPort3.Close(); + if (this.FlagSerialDll == false) + this.smartSerialPort3.Close(); + else + SerialMgrComm.serialPortClose("COM3:"); } public bool CheckOpenCOM3() { - if (this.smartSerialPort3.IsOpen == true) - return true; + if (this.FlagSerialDll == false) + { + if (this.smartSerialPort3.IsOpen == true) + return true; + else + return false; + } else - return false; + return true; } public void TransferDirectSerialCOM3(string strTemp) { if (this.SystemConfig1.SerialCOM3Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1) { byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp); - this.smartSerialPort3.WriteNoneFrame(strByte); + + if (this.FlagSerialDll == false) + this.smartSerialPort3.WriteNoneFrame(strByte); + else + SerialMgrComm.serialPortMessageByte("COM3:", strByte, strByte.Length); } else - this.smartSerialPort3.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + { + if (this.FlagSerialDll == false) + this.smartSerialPort3.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + else + SerialMgrComm.serialPortMessageRaw("COM3:", strTemp); + } } public void TransferDirectSerialCOM3(byte[] buffer) { - this.smartSerialPort3.WriteNoneFrame(buffer); + if (this.FlagSerialDll == false) + this.smartSerialPort3.WriteNoneFrame(buffer); + else + SerialMgrComm.serialPortMessageByte("COM3:", buffer, buffer.Length); } public void TransferDirectSerialCOM3RawData(string strTemp) { - this.smartSerialPort3.RawSerialPort.Write(strTemp); + if (this.FlagSerialDll == false) + this.smartSerialPort3.RawSerialPort.Write(strTemp); + else + SerialMgrComm.serialPortMessageRaw("COM3:", strTemp); } public void TransferDirectSerialCOM3RawData(byte[] buffer) { - this.smartSerialPort3.RawSerialPort.Write(buffer, 0, buffer.Length); + if (this.FlagSerialDll == false) + this.smartSerialPort3.RawSerialPort.Write(buffer, 0, buffer.Length); + else + SerialMgrComm.serialPortMessageByte("COM3:", buffer, buffer.Length); } public void TransferSerialCOM3(string strTemp) { - if (this.smartSerialPort3.IsOpen == true) + if (strTemp == "" || strTemp == null) + return; + + if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0) { - if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0) + if (this.SystemConfig1.SerialCOM3Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1) { - if (this.SystemConfig1.SerialCOM3Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1) - { - byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp); + byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp); + + if (this.FlagSerialDll == false) this.smartSerialPort3.WriteNoneFrame(strByte); - } else - this.smartSerialPort3.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + SerialMgrComm.serialPortMessageByte("COM3:", strByte, strByte.Length); } else { - this.QueueCOM3.Enqueue(strTemp); - this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM3); + if (this.FlagSerialDll == false) + this.smartSerialPort3.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + else + SerialMgrComm.serialPortMessageRaw("COM3:", strTemp); } } + else + { + this.QueueCOM3.Enqueue(strTemp); + this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM3); + } } public void TransferSerialCOM3(byte[] buffer) { - if (this.smartSerialPort3.IsOpen == true) + if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0) { - if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0) + if (this.FlagSerialDll == false) this.smartSerialPort3.WriteNoneFrame(buffer); else - { - this.QueueCOM3.Enqueue(buffer); - this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM3); - } + SerialMgrComm.serialPortMessageByte("COM3:", buffer, buffer.Length); + } + else + { + this.QueueCOM3.Enqueue(buffer); + this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM3); } } public void TransferSerialCOM3RawData(byte[] buffer) { - if (this.smartSerialPort3.IsOpen == true) + if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0) { - if (this.SystemConfig1.TransmissionDelayTimeCOM3 == 0) - { + if (this.FlagSerialDll == false) //RawSerialPort 기능을 사용하여 데이터를 전송 this.smartSerialPort3.RawSerialPort.Write(buffer, 0, buffer.Length); - } else - { - this.QueueCOM3.Enqueue(buffer); - this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM3); - } + SerialMgrComm.serialPortMessageByte("COM3:", buffer, buffer.Length); + + } + else + { + this.QueueCOM3.Enqueue(buffer); + this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM3); } } public void ReceiveSerialCOM3() @@ -6503,9 +6731,11 @@ namespace ITC81DB_0H.Forms public void ChangeSerialCOM3FrameSeparateType(Define.E_SeparateType type) { + if (this.FlagSerialDll == true) + return; + // 통신 포트 설정 - if (this.smartSerialPort3.IsOpen == true) - this.smartSerialPort3.Close(); + this.CloseSerialCOM3(); if (type == Define.E_SeparateType.ETXONLY) { @@ -6548,97 +6778,145 @@ namespace ITC81DB_0H.Forms #region Serial COM4 public void OpenSerialCOM4() { + int baudrate = 9600; + if (this.SystemConfig1.SerialCOM4Mode == 0 || this.SystemConfig1.SerialCOM4Mode == 16) return; - if (this.smartSerialPort4.IsOpen == true) - this.smartSerialPort4.Close(); + this.CloseSerialCOM4(); switch (this.SystemConfig1.SerialCOM4BaudRate) { case 0: this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps; + baudrate = 9600; break; case 1: this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._19200bps; + baudrate = 19200; break; case 2: this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._38400bps; + baudrate = 38400; break; case 3: + this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._57600bps; + baudrate = 57600; + break; + case 4: this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._115200bps; + baudrate = 115200; break; default: this.smartSerialPort4.Baud_Rate = SmartSerialPort.BAUDRATE._9600bps; + baudrate = 9600; break; } - this.smartSerialPort4.Open(); + if (this.FlagSerialDll == false) + { + this.smartSerialPort4.Open(); + } + else + { + // Port : COM4 + SerialMgrComm.serialPortOpen("COM4:", baudrate, 0, 0, 8); + } } public void CloseSerialCOM4() { - this.smartSerialPort4.Close(); + if (this.FlagSerialDll == false) + this.smartSerialPort4.Close(); + else + SerialMgrComm.serialPortClose("COM4:"); } public bool CheckOpenCOM4() { - if (this.smartSerialPort4.IsOpen == true) - return true; + if (this.FlagSerialDll == false) + { + if (this.smartSerialPort4.IsOpen == true) + return true; + else + return false; + } else - return false; + return true; } public void TransferDirectSerialCOM4(string strTemp) { if (this.SystemConfig1.SerialCOM4Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1) { byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp); - this.smartSerialPort4.WriteNoneFrame(strByte); + + if (this.FlagSerialDll == false) + this.smartSerialPort4.WriteNoneFrame(strByte); + else + SerialMgrComm.serialPortMessageByte("COM4:", strByte, strByte.Length); } else - this.smartSerialPort4.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + { + if (this.FlagSerialDll == false) + this.smartSerialPort4.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + else + SerialMgrComm.serialPortMessageRaw("COM4:", strTemp); + } } public void TransferDirectSerialCOM4(byte[] buffer) { - this.smartSerialPort4.WriteNoneFrame(buffer); + if (this.FlagSerialDll == false) + this.smartSerialPort4.WriteNoneFrame(buffer); + else + SerialMgrComm.serialPortMessageByte("COM4:", buffer, buffer.Length); } public void TransferSerialCOM4(string strTemp) { - if (this.smartSerialPort4.IsOpen == true) + if (this.SystemConfig1.TransmissionDelayTimeCOM4 == 0) { - if (this.SystemConfig1.TransmissionDelayTimeCOM4 == 0) + if (this.SystemConfig1.SerialCOM4Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1) { - if (this.SystemConfig1.SerialCOM4Mode == 3 && this.SystemConfig1.StatisticsPrintFormat == 1) - { - byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp); + byte[] strByte = Encoding.GetEncoding("ks_c_5601-1987").GetBytes(strTemp); + + if (this.FlagSerialDll == false) this.smartSerialPort4.WriteNoneFrame(strByte); - } else - this.smartSerialPort4.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + SerialMgrComm.serialPortMessageByte("COM4:", strByte, strByte.Length); } else { - this.QueueCOM4.Enqueue(strTemp); - this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM4); + if (this.FlagSerialDll == false) + this.smartSerialPort4.WriteNoneFrame(strTemp, SmartSerialPort.CODETYPES.ASCIICODE); + else + SerialMgrComm.serialPortMessageRaw("COM4:", strTemp); } } + else + { + this.QueueCOM4.Enqueue(strTemp); + this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM4); + } } public void TransferSerialCOM4(byte[] buffer) { - if (this.smartSerialPort4.IsOpen == true) + if (this.SystemConfig1.TransmissionDelayTimeCOM4 == 0) { - if (this.SystemConfig1.TransmissionDelayTimeCOM4 == 0) + if (this.FlagSerialDll == false) this.smartSerialPort4.WriteNoneFrame(buffer); else - { - this.QueueCOM4.Enqueue(buffer); - this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM4); - } + SerialMgrComm.serialPortMessageByte("COM4:", buffer, buffer.Length); + } + else + { + this.QueueCOM4.Enqueue(buffer); + this.CreateTimer(Define.E_MenuBottomConfiguration.SerialCOM4); } } public void ChangeSerialCOM4FrameSeparateType(Define.E_SeparateType type) { + if (this.FlagSerialDll == true) + return; + // 통신 포트 설정 - if (this.smartSerialPort4.IsOpen == true) - this.smartSerialPort4.Close(); + this.CloseSerialCOM4(); if (type == Define.E_SeparateType.ETXONLY) { @@ -11058,31 +11336,6 @@ namespace ITC81DB_0H.Forms UserManager.UserManager_AutoLogoutSetTimeout(this.SystemConfig2.UserAutomaticLogout, this.FlagAutomaticLogoutWarningTime); } - private bool UI_Invoke(ThreadStart invoker) - { - try - { - if (this.InvokeRequired) - { - if (this.IsDisposed) - return true; - - this.Invoke(invoker); - } - else - { - invoker(); - } - - return true; - - } - catch (Exception e) - { - return false; - } - - } /// /// Set User /// @@ -12307,7 +12560,12 @@ namespace ITC81DB_0H.Forms this.CreateForm(); // 메인 통신 OPEN - this.OpenSmartUartLink(); + this.OpenSmartSerialPort2(); + + // 통신 버퍼용 + this.smartThreadSerialPort2Read.Priority = ThreadPriority.Normal; + this.smartThreadSerialPort2Read.Start(); + //this.smartThreadSerialPort2OverRun.Start(); #region Communication if (this.SystemConfig1.SerialCOM1Mode != (int)Define.E_CommMode.f0_None) @@ -12399,6 +12657,60 @@ namespace ITC81DB_0H.Forms #endregion #region Event Handler + private void SerialReceiveData(string data) + { + string cmd = "", dataID = "", transferCNT = "", lane = ""; + + try + { + if (this.FlagSerialDll == false) + { + cmd = data.Substring(0, 3); + if (cmd == "SR0") + { + if (this.SizeCheck("S", data) == true && this.ChksumCheck(data) == true) + { + dataID = data.Substring(3, 1); + transferCNT = data.Substring(4, 1); + lane = data.Substring(5, 1); + + this.TransferDataRespone(CommunicationCommand.StartDataCMD, lane, dataID, transferCNT, ((int)Define.E_ResponseData.ACK).ToString()); + Application.DoEvents(); + } + } + } + + // 수신 버퍼 삭제 하고 테스트 + this.QueueCommunicationRecive.Enqueue(data); + //this.ReceiveData1(data); + + this.ChildFormMainDisplay.labelBufferCNT.BeginInvoke(new Action(() => + { + this.ChildFormMainDisplay.labelBufferCNT.Text = this.QueueCommunicationRecive.Count.ToString(); + })); + + // 통신 확인 + if (this.CommunicationCheckCount / 3 == 1) + { + if (this.ChildFormMainDisplay != null) + this.ChildFormMainDisplay.pictureBoxCommunicationStatus.Visible = true; + + this.CommunicationCheckCount = 0; + } + else + { + if (this.ChildFormMainDisplay != null) + this.ChildFormMainDisplay.pictureBoxCommunicationStatus.Visible = false; + + this.CommunicationCheckCount += 1; + } + } + catch + { + + } + } + private void smartSerialPort1_OnReadQueueEvent() { int ret = 0; @@ -12696,19 +13008,25 @@ namespace ITC81DB_0H.Forms } private void smartSerialPort2_OnReadQueueEvent() { - this.ReceiveData(); + string strTemp = ""; + byte[] readByte; - // 통신 확인 - if (this.CommunicationCheckCount / 3 == 1) + SmartSerialPort.FRAMEDATAREADSTATUS receiveDataState = SmartSerialPort.FRAMEDATAREADSTATUS.EMPTY; + + try { - this.ChildFormMainDisplay.pictureBoxCommunicationStatus.Visible = true; - this.CommunicationCheckCount = 0; + receiveDataState = this.smartSerialPort2.ReadQueue(out readByte); + strTemp = Encoding.Default.GetString(readByte, 0, readByte.Length); } - else + catch { - this.ChildFormMainDisplay.pictureBoxCommunicationStatus.Visible = false; - this.CommunicationCheckCount += 1; + return; } + + if ((receiveDataState == SmartSerialPort.FRAMEDATAREADSTATUS.EMPTY) || (receiveDataState == SmartSerialPort.FRAMEDATAREADSTATUS.FAILDATA)) + return; + + this.SerialReceiveData(strTemp); } private void smartSerialPort3_OnReadQueueEvent() { @@ -13926,6 +14244,29 @@ namespace ITC81DB_0H.Forms this.SetTrackingHistoryData(alarm, status); } + private void smartThreadSerialPort2Read_UIThreadFunction(ThreadArgs args) + { + if (this.QueueCommunicationRecive.Count != 0) + { + this.ReceiveData(this.QueueCommunicationRecive.Dequeue()); + + this.ChildFormMainDisplay.labelBufferCNT.BeginInvoke(new Action(() => + { + this.ChildFormMainDisplay.labelBufferCNT.Text = this.QueueCommunicationRecive.Count.ToString(); + })); + } + } + private void smartSerialSerialPort2_OnPortError(System.IO.Ports.SerialError eErrorState) + { + this.IndexOverRun++; + this.QueueOverRun.Enqueue(string.Format("{0}", this.IndexOverRun)); + } + private void smartThreadSerialPort2OverRun_UIThreadFunction(ThreadArgs args) + { + if (this.QueueOverRun.Count != 0) + this.ChildFormMainDisplay.UpdateDisplayOverRun(this.QueueOverRun.Dequeue()); + } + #region UserManagerEvent private void UserManager_UserListLogoutDataEvent(int status) { diff --git a/ITC81DB_0H/Forms/FormMain.resx b/ITC81DB_0H/Forms/FormMain.resx index 54e5cf4..8ba4fa4 100644 --- a/ITC81DB_0H/Forms/FormMain.resx +++ b/ITC81DB_0H/Forms/FormMain.resx @@ -165,6 +165,12 @@ 710, 57 + + 34, 95 + + + 264, 95 + WEBPAD @@ -172,6 +178,6 @@ False - 92 + 118 \ No newline at end of file diff --git a/ITC81DB_0H/Forms/FormMainDisplay.Designer.cs b/ITC81DB_0H/Forms/FormMainDisplay.Designer.cs index 8fe8907..e841121 100644 --- a/ITC81DB_0H/Forms/FormMainDisplay.Designer.cs +++ b/ITC81DB_0H/Forms/FormMainDisplay.Designer.cs @@ -66,6 +66,9 @@ this.labelUserID = new SmartX.SmartLabel(); this.labelUserLevel = new SmartX.SmartLabel(); this.labelAlarmWindow = new SmartX.SmartLabel(); + this.labelMissingCount = new SmartX.SmartLabel(); + this.labelBufferCNT = new SmartX.SmartLabel(); + this.labelOverrun = new SmartX.SmartLabel(); ((System.ComponentModel.ISupportInitialize)(this.smartForm1)).BeginInit(); this.panel1.SuspendLayout(); this.SuspendLayout(); @@ -118,7 +121,7 @@ // // buttonExit // - this.buttonExit.Location = new System.Drawing.Point(327, 0); + this.buttonExit.Location = new System.Drawing.Point(726, 457); this.buttonExit.Name = "buttonExit"; this.buttonExit.Size = new System.Drawing.Size(56, 20); this.buttonExit.TabIndex = 4; @@ -666,18 +669,19 @@ this.labelBarcode.ForeColor = System.Drawing.Color.White; this.labelBarcode.InitVisible = true; this.labelBarcode.LineSpacing = 0F; - this.labelBarcode.Location = new System.Drawing.Point(389, 0); + this.labelBarcode.Location = new System.Drawing.Point(79, 26); this.labelBarcode.Name = "labelBarcode"; - this.labelBarcode.Size = new System.Drawing.Size(132, 20); + this.labelBarcode.Size = new System.Drawing.Size(286, 30); this.labelBarcode.TabIndex = 547; + this.labelBarcode.Text = "2234567890"; this.labelBarcode.TextHAlign = SmartX.SmartLabel.TextHorAlign.Left; - this.labelBarcode.TextVAlign = SmartX.SmartLabel.TextVerAlign.Top; + this.labelBarcode.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; this.labelBarcode.Visible = false; this.labelBarcode.Wordwrap = false; // // buttonMemory // - this.buttonMemory.Location = new System.Drawing.Point(265, 0); + this.buttonMemory.Location = new System.Drawing.Point(726, 431); this.buttonMemory.Name = "buttonMemory"; this.buttonMemory.Size = new System.Drawing.Size(56, 20); this.buttonMemory.TabIndex = 547; @@ -864,12 +868,78 @@ this.labelAlarmWindow.Wordwrap = false; this.labelAlarmWindow.Click += new System.EventHandler(this.labelAlarmWindow_Click); // + // labelMissingCount + // + this.labelMissingCount.BackColor = System.Drawing.Color.Silver; + this.labelMissingCount.BackPictureBox = this.smartForm1; + this.labelMissingCount.BackPictureBox1 = null; + this.labelMissingCount.BackPictureBox2 = null; + this.labelMissingCount.BorderColor = System.Drawing.Color.Black; + this.labelMissingCount.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelMissingCount.ForeColor = System.Drawing.Color.Silver; + this.labelMissingCount.InitVisible = true; + this.labelMissingCount.LineSpacing = 0F; + this.labelMissingCount.Location = new System.Drawing.Point(471, 0); + this.labelMissingCount.Name = "labelMissingCount"; + this.labelMissingCount.Size = new System.Drawing.Size(50, 20); + this.labelMissingCount.TabIndex = 605; + this.labelMissingCount.Text = "0"; + this.labelMissingCount.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelMissingCount.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelMissingCount.Visible = false; + this.labelMissingCount.Wordwrap = false; + // + // labelBufferCNT + // + this.labelBufferCNT.BackColor = System.Drawing.Color.Silver; + this.labelBufferCNT.BackPictureBox = this.smartForm1; + this.labelBufferCNT.BackPictureBox1 = null; + this.labelBufferCNT.BackPictureBox2 = null; + this.labelBufferCNT.BorderColor = System.Drawing.Color.Black; + this.labelBufferCNT.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelBufferCNT.ForeColor = System.Drawing.Color.Silver; + this.labelBufferCNT.InitVisible = true; + this.labelBufferCNT.LineSpacing = 0F; + this.labelBufferCNT.Location = new System.Drawing.Point(415, 0); + this.labelBufferCNT.Name = "labelBufferCNT"; + this.labelBufferCNT.Size = new System.Drawing.Size(50, 20); + this.labelBufferCNT.TabIndex = 604; + this.labelBufferCNT.Text = "0"; + this.labelBufferCNT.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelBufferCNT.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelBufferCNT.Visible = false; + this.labelBufferCNT.Wordwrap = false; + // + // labelOverrun + // + this.labelOverrun.BackColor = System.Drawing.Color.Silver; + this.labelOverrun.BackPictureBox = this.smartForm1; + this.labelOverrun.BackPictureBox1 = null; + this.labelOverrun.BackPictureBox2 = null; + this.labelOverrun.BorderColor = System.Drawing.Color.Black; + this.labelOverrun.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.labelOverrun.ForeColor = System.Drawing.Color.Silver; + this.labelOverrun.InitVisible = true; + this.labelOverrun.LineSpacing = 0F; + this.labelOverrun.Location = new System.Drawing.Point(359, 0); + this.labelOverrun.Name = "labelOverrun"; + this.labelOverrun.Size = new System.Drawing.Size(50, 20); + this.labelOverrun.TabIndex = 603; + this.labelOverrun.Text = "0"; + this.labelOverrun.TextHAlign = SmartX.SmartLabel.TextHorAlign.Middle; + this.labelOverrun.TextVAlign = SmartX.SmartLabel.TextVerAlign.Middle; + this.labelOverrun.Visible = false; + this.labelOverrun.Wordwrap = false; + // // FormMainDisplay // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.AutoScroll = true; this.ClientSize = new System.Drawing.Size(800, 600); + this.Controls.Add(this.labelMissingCount); + this.Controls.Add(this.labelBufferCNT); + this.Controls.Add(this.labelOverrun); this.Controls.Add(this.labelAlarmWindow); this.Controls.Add(this.labelExpireOfPassword); this.Controls.Add(this.labelUserID); @@ -942,5 +1012,8 @@ private SmartX.SmartLabel labelUserID; private SmartX.SmartLabel labelUserLevel; private SmartX.SmartLabel labelAlarmWindow; + public SmartX.SmartLabel labelMissingCount; + public SmartX.SmartLabel labelBufferCNT; + public SmartX.SmartLabel labelOverrun; } } \ No newline at end of file diff --git a/ITC81DB_0H/Forms/FormMainDisplay.cs b/ITC81DB_0H/Forms/FormMainDisplay.cs index 2a3eb35..923216d 100644 --- a/ITC81DB_0H/Forms/FormMainDisplay.cs +++ b/ITC81DB_0H/Forms/FormMainDisplay.cs @@ -248,11 +248,31 @@ namespace ITC81DB_0H.Forms { if (visible == false) { - this.labelBarcode.Visible = false; + if (this.ParentForm.SystemConfig2.Barcode != 0) + this.labelBarcode.Visible = false; + //this.labelComRetry.Visible = false; + //this.labelComRetry3th.Visible = false; + this.labelOverrun.Visible = false; + this.labelBufferCNT.Visible = false; + this.labelMissingCount.Visible = false; + + //this.labelBARCD.Visible = false; } else { - this.labelBarcode.Visible = true; + if (this.ParentForm.SystemConfig2.Barcode != 0) + { + this.labelBarcode.Text = ""; + this.labelBarcode.Visible = true; + } + //this.labelComRetry.Visible = true; + //this.labelComRetry3th.Visible = true; + this.labelOverrun.Visible = true; + this.labelBufferCNT.Visible = true; + this.labelMissingCount.Visible = true; + + //this.labelBARCD.Text = ""; + //this.labelBARCD.Visible = true; } } @@ -386,6 +406,7 @@ namespace ITC81DB_0H.Forms } public void Clear() { + this.ParentForm.MissingCommIDCount = 0; this.ParentForm.ClearQueue(); this.ClearCurrentData(); @@ -1018,6 +1039,12 @@ namespace ITC81DB_0H.Forms { UserManager.UserManager_AutoLogoutTimeoutReset(); } + + public void UpdateDisplayOverRun(string value) + { + this.labelOverrun.Text = value; + } + private bool UI_Invoke(ThreadStart invoker) { try @@ -1802,10 +1829,7 @@ namespace ITC81DB_0H.Forms if (this.ParentForm.SystemConfig3.IsPart11 == true) this.Part11AutomaticLogoutReset(); - if (this.ParentForm.SystemConfig1.IsLogin == false) - { - this.ParentForm.ChildFormMenu.DisplayHiddenMenu(this.ParentForm.CurrentSystemStatus.CurrentDisplay, this.ParentForm.SystemConfig1); - } + this.ParentForm.ChildFormMenu.DisplayHiddenMenu(this.ParentForm.CurrentSystemStatus.CurrentDisplay, this.ParentForm.SystemConfig1); } private void buttonMenu_Click(object sender, EventArgs e) { @@ -1908,7 +1932,7 @@ namespace ITC81DB_0H.Forms private void buttonExit_Click(object sender, EventArgs e) { - this.ParentForm.CloseSmartUartLink(); + this.ParentForm.CloseSmartSerialPort2(); this.ParentForm.smartFileCommunicationLog.Close(); this.ParentForm.smartFileCheckLog.Close(); this.ParentForm.Close(); diff --git a/ITC81DB_0H/Forms/FormMainDisplay.resx b/ITC81DB_0H/Forms/FormMainDisplay.resx index 14c1692..bb2d576 100644 --- a/ITC81DB_0H/Forms/FormMainDisplay.resx +++ b/ITC81DB_0H/Forms/FormMainDisplay.resx @@ -1314,6 +1314,1140 @@ MRwOXS4XrjYDr9c7GAxQgM/W63U8Hsd1JkFbJhaLKYqCGnyg33umaBlqtGUoc5Th3el0qtVqOG1CkiS1 Wq1rLahl9Pt9If/XeSJqIpPJhMohyzJtH3xqZqFQaLlc5nI5HJsctdVwOIwDxhhjjDHGGGPsJhbLG7hZ LovvQ3RGAAAAAElFTkSuQmCC + + + + + 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 + vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L + Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA + bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z + llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW + ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s + xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 + eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw + YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR + XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm + WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl + xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 + dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 + V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za + Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v + Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb + PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ + 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h + /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr + XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS + fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ + tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOxAAADsQBlSsOGwAABClJREFUaEPtmksodGEY + x49xK2xIGRbkWkh20ywoWSgbZWdjYyFlRRYuuZSIXMpKSokNvmSjkGIWGjVTyliJRi5JEhYm98v37zzP + nM6Mc87G99XMe85vMb3P/7znjOd/3svzTiQLCwsLCwsLkSkvL5+bm7u8vPz8/Ly/v3e5XI2NjTabjS+b + h5iYmL6+PrgAPB7P4uLixsZGIBD4/v7e2dlJS0vjfiYBXiBzt9tdUlLCkiSlpKRMTk6SnpCQwKrwFBQU + vL29eb3epKQkllT09/fDkfb2do6FZ3x8HAk7HA6OQ4mLizs9Pb24uMCEYklssFicn59zoMXY2Bj8ysvL + 41hszs7Odnd3OdCioqJiZGQkJyeHY7HB0DC2w1xYdoQQZkdqamp+fn5GRgbHZoPsSE9PHxgYwCaCVZO4 + u7ubn59Hqcr9TALsuL6+vr29hQV+v396erqrq2t0dBQeUZ06NTUVHx/PvYUHdsCIq6ur+vp6loIUFxdv + bW3h6srKiinqDlTlr6+vJycnWVlZLIUSGxuLKQNHuru7WRIYHNXe39+NFwgcWHw+39PTk91uZ0lIUGh+ + fX0tLCxwrE9dXR0GSEdHB8dC0tTUhCSRKscyWDUHBweLioo4lklMTHx8fFxbW+NYSLCzwo6wzEtLSyF2 + dnZyHGR/f//g4IADIRkeHkbmhYWFHMuUlZVp2uH1eo+OjjgQkubmZmReW1vLsYymHTjmPzw8YNPlWEhy + c3OR+czMDMcyqNAhtrW1cSxTU1MDUfy91uVyvby8hP2WgRN9cnIyB3Lpsbe3h/IkOzubJVFxOBwfHx+H + h4c4ubEUCorRiYkJDA2U7SyJDaoJZHt8fFxZWclSkMzMzOXlZVzd3t420a/HLS0tKDqRtsfjGRoaam1t + 7enpWV1dfX5+hri0tKT5q7LIYAXFWfbm5gb5E1hT1tfXq6qquIcJsdls2G6cTieOdqYbERYWFsQfmd7e + Xo5/TXV1NT2T4ygC51TaIP7hXw9n6Zlhh+Ao4H/YIfLoQAfAgQo9nfh59acSieBP1LMDL9nn89HVQCDg + drspH7WOegxtv9+PCpXuAspkQQOXgLp/Q0MD94tA9OyATv/Wg0/kQ33QgE4lqVoH6pVYbQc1ADrTA3E7 + 94tA9OxACBEJ0MtUEpudnaUGDQclNLYD3aDTkReoh1JkoWcHvXlMEI6DCg17tFmVJHrnxnZgfkFXvkvd + ObIwtkMtkqJ8shrUje3At0CPejs2Nzc5Dio0FtR20FIioB1oK8AIiEgebXTDbKdutFj81EWzQw+8fKwg + yqDAKkBt6LCM2kAQOwCS1AR7ilIvALQpK4wImiBA0w50oCdEpR3GIAekR/kAZWfFromsNCeLGtyo3AvC + wqhHmSz4xPunNhp82YSoJxHsUIp3UyPasLewEBtJ+gszpFSZ4+UzBQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAIAAAABlV4SAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH + DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp + bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE + sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs + AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4 + JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR + 3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd + li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF + ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX + wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF + hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55 + 4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ + VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB + 5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC + qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE + j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I + 1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9 + rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG + fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp + B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ + yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC + YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln + yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v + vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp + vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L + Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA + bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z + llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW + ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s + xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 + eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw + YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR + XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm + WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl + xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 + dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 + V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za + Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v + Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb + PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ + 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h + /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr + XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS + fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ + tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOvAAADrwBlbxySQAABSNJREFUaEPtmGVPK1sU + QHGnUByCu1Pc3d1dSpBCgmuAoMGDhAZLIITAL70r6Xk3770LpS1T4CazPjQ9e6bTs8/2sZCRkZGRkZGR + kZExEYVC4e7u7ubmxqeLi4uDg4ONjY249rcQGRmZl5dXXFxcUFCQk5OTlpaWnJwcHR3t6+vr6Ogobvrh + JCYmjoyMHB0dnZ2dPTw8XF9f7+/vazSahoaG3NxclPHw8BC3/liioqLGxsZ6e3t1Sy8vL0yhVqsPDg5W + V1d7enrKy8sTEhKcnZ11N/wUrK2tCQO8JTw8nMPGDnV1deLaP3BPdnb2ysrK/Px8Z2dnSUmJn5+fuPa9 + ELJsPTY2Nj8/v729fXBwsL+/f25u7k8ddNja2hIqs7OzWIZ7cC0rKytx7esh23h7e6ekpLS0tOD9Ly8v + +H1NTU1bW5seHXTgYNhqfHy8ubk5IyPje9TAm8k/7Jjd393dYQF8SXeJXDQxMaFfB8CATU1NaILOBIyQ + fhlsV6VS8fePj4/E7v/Svy4vfagDcPxVVVXDw8NYEm8U0i9AqVSmp6fj0FqtFlMI6b8wXAews7NrbGwk + irCGj4+PkJoVXAgLLCwskPs9PT2F9L8YpQNQy0lTfX19FBCzBwYpBYtzZufn57QSQvoHxuoAoaGh+GR3 + d7fZPSowMLC+vv7m5oYqJkRvYYIOlpaWpaWlmAI1+C6kkmNvb08S3N3dxX2F6B1M0AECAgI6OjqI77Cw + MCGSnKCgIHI5mRRlhOgdTNMBR62srMRR+RQiaSF7ksI3NjZodYTofUzTASiXRAWFzyzuRKeJv56enuoJ + 5d+YrAM9C6amxr+X8T5FSEgIzkpNEGu9mKwDSbaiogId9OcME4mPj8fEtAZirReTdaCxLSoq4qSooUIk + IQQDx0NTLdZ6QQeyJL4n1sbAX9CZMwCKtYTQ9y8tLTFSirVe0IHGgRNlnhYiwyCU0YE/oo0XIgnh0YuL + i0lJSWKtF06ROa6rq4sph3mNQcfAkY3sxx+tra1xZEIkITx0ZmbGQDclq9CT7+zsUEympqZINXl5eTpl + nJycxE1v4erqiv6U0bi4OCGSEOKBMC0rKxNrw2AuJZsxGMHk5CQFnmNmf++94PD396fAoTnKCJGExMTE + 0FqCWBsJ+x4YGDg+Pt7b28PNaLqYk2jvaLaZhHT3EAxkP2rc+vq6TiIxnBCnSHr9sNHQA6mTiEKHk5MT + PI3WqLa2Fi9lpGY0pYzyfXNzk3lI/EBa2DouPjQ0xFEJ0SfgaVlZWRqNhhSEizLH8nC6GLLZ5eUl9VTc + JzmpqakYurW1VcJmhnzFA7EJ/fzFxcXt7e3q6qq4Zg7INhxYT0+PhI0A8VBdXc3WmYHovYkTMxpBBw6g + mxhpbIToEzBJEx7Ly8ujo6NC9AWwdVxW97KRdl9ITQKH5OzJvPrHWrOArdVqNTWYHEKeEVIjYfBnrCUp + EQYG1n6JoVqTUjjCzMzM39ndcHCh4OBgFNBqtR+OtWaE3U9PTzO/FxYW0kEY+EIF/1EoFNQ79L+/v6cH + ERe+CyZ3ukAMQjIh7VKk9EQIXofT8xPaoYWFBRT4hpeTb6JUKonvra0tSi++gXEiIiKo6GRhum6O3Nvb + m4yJ51AZGScw3ePjI60EcvGIHwKbRgfSy+HhIb0tPVVVVRXDQ3FxMdUXJVdWVnD95+dn7PalL1WNhfZB + pVJRyLe3t6m7T09Pr6+vV1dXdKxoyEwjSUmRkZGRkZGRkZGR+RuxsPgFQv503H3i2uAAAAAASUVORK5C + YII= + + + + + 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 + yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v + vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp + vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L + Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA + bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z + llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW + ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s + xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 + eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw + YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR + XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm + WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl + xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 + dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 + V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za + Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v + Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb + PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ + 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h + /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr + XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS + fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ + tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ + 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOvAAADrwBlbxySQAAAspJREFUaEPtmN9LIlEU + x6c0WyORyWjN/BE6LYSVq0LhD2xxUOtBWaKiH4QGUUSPvVQsugQ+GARZsKIPugX+n/tFzy4LzrCzD85O + 2/k8ec+cI/Ode+45916BYRiGYRiGYRiGeVNYrVZJkmRZnpiYIJMgWCyW+fn5hYWFD5pZW1tzOBwUrzN4 + 9fX19ZubG7vdTiZBcDqdJycnT09P37TRaDQ6nU4ymaR4nVHUAERRxFRoZ3Z2liL1R03Da4I1GAM1DWNj + Y+Pj4+/+BorUH0UN+B0MBkOh0EdthMPhjY0N1GKK1xlFDZOTk2dnZ+12+7s2np+fW60WqhPF6wyvaWPA + GoyBooaRkZGpqamZmZn3mvF4PCjHFK8zihqmp6dTqVQ+n/+sja2trdPT00gkQvE6o6gBDatQKJTL5a/a + uL29vby8hHKK1xle08aANegO1pzX6zWbzTTuoabBZDLNzc253W4a9zxhwT8M4vP5FhcX4UCuwwPH9mw2 + u7q6Ojo6SiYVDXDAm21ubh4fH5NJEJaXlw8PD+H5ZQBUsFqtlkgkyHV4oA0Vi8WdnZ2VlRUyKWlAg3O5 + XBBQr9d/98RxAvo/qRCPx+FArkNlaWmpVCqhJUmS1LcMakB7TqfT9/f3siz3LYYDM47ZQHNFcmP4S4PN + ZsNQFEU4VKvV3d3dnrshQa5nMhnIwFbC4XBYrVZsK9BlIQYyotHo1dXV+fk5eRsWi8UCAUdHR7lcDh8+ + mUzu7e1h34Yj5cXFRaVSgQO5Ghl89e3t7YODA5yDoQQLHaqwb7u7u+snFUB5xfFS440l1vQ/uCZDImEq + kFT7+/somvj8j4+PmA163LvawPw8PDzQjaQ6zWbz5eUlFApRpJ6ghaEDoFJdX183Gg2/308PfoJyif7V + u4z8A8hJitGfYDCI9tTtdmOxGJleI4FAAAlNA4ZhGIZhGIZh/lcE4QddP0uBmiLv5wAAAABJRU5ErkJg + gg== + + + + + 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 + gTjogMt7DsG6t73AAsncAAAAAElFTkSuQmCC + + + + + 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 + SUVORK5CYII= + + + + + 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 + WwpIAAAAAElFTkSuQmCC + + + + + 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 + JsijY40ZGgAAAABJRU5ErkJggg== + + + + + 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 + RU5ErkJggg== + + + + + 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 + nIcAAAAASUVORK5CYII= + + + + + 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 + AAAASUVORK5CYII= + + + + + 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 @@ -1807,1140 +2941,6 @@ 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 - RU5ErkJggg== - - - - - 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 - nIcAAAAASUVORK5CYII= - - - - - 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 - AAAASUVORK5CYII= - - - - - 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 - vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp - vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L - Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA - bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z - llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW - ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s - xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 - eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw - YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR - XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm - WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl - xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 - dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 - V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za - Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v - Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb - PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ - 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h - /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr - XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS - fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ - tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOvAAADrwBlbxySQAAAllJREFUaEPt199r6WEc - B3C/lh+Zny0lNibEzJJI0tZazWhtCGVTLKxw4YI7IZTW3Ci7ce8PPe/2fY6cM+fEKfty+ryunufzfOV5 - e35AQAghhBBCCCHbEovFWGt/PT09sdb+ogy7gTLsBsqwG/4hg1wuN5lMdrtdo9GwEr82zSCVSn0+XyKR - yGazDw8PCoWCDfBoowxCoRAf/+vr68vLCwLk8/lQKMTGeLRRBq1We3d3NxgMJBIJVgAxisUi/0uxfgYs - wtnZWavVikQiXOXi4uL5+TkYDHJd3qyfQafTRaPR4XB4cHDAVfR6/ePjY6FQEIvFXIUfa2bAIrhcrkaj - gRis9Ony8hLHw2azsT4vFhlwUVosFq79FUZvbm7e3t6USiUrfcJLcEHF43HW58UiAzb37e0tDivXXYZF - cDgc9Xo9k8mw0k94Hqe8UqmoVCpW+n6LDG63G1P0er1cd5larcYivL+/r5wobttcLsfnyV5kwPySyWQq - lXI6nVyFg/OKeM1mE6Os9CuZTHZ/f59Op4+Ojljpmy2f6fPz81KphLl6PJ7Dw0PMHrvIaDRifriOVm4z - zunpKb4okATn/vj42GAwmM1mNLB67ImtWs4A4XC40+lUq1XcP/hNEQgEsMEmkwkmxJ74A7/fj802Ho/x - 8m632+/3p9Ppx8cHG96q3zIAPnj8iGi327PZbD6f93q9k5MTNvZX+N7A0b+6urq+vsZta7VaRSIRG9uq - rxn2D2XYDZRhN1CG3fA/ZMAfANbaX+VyeTQaYTW2oVarsbchhBBCCCGEELKKQPADToylajreSSsAAAAA - SUVORK5CYII= - - - - - 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 - WwpIAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAIAAAABlV4SAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH - DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp - bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE - sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs - AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4 - JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR - 3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd - li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF - ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX - wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF - hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55 - 4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ - VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB - 5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC - qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE - j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I - 1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9 - rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG - fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp - B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ - yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC - YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln - yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v - vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp - vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L - Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA - bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z - llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW - ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s - xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 - eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw - YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR - XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm - WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl - xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 - dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 - V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za - Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v - Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb - PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ - 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h - /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr - XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS - fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ - tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOvAAADrwBlbxySQAAAexJREFUaEPt1kGHgkEc - BvCIiIiIiE5dI6JTdOrUNSI6RXSKrp0iOkVEp+gDRB8gog+wdOoUEbFERMQS7eOdf693a9fW4W1m7fM7 - zfxnpt6nqZk8REREREREbrlcLtL6u5jBDMxgBmYwwz/NkM1mV6vVcrnMZDJS0uvZDIlE4nA4YBWgEYvF - ZECjpzJ4vd7FYoElo9FoMpmgMRgMZEyjpzLUajXM32w2Pp8vGo1+WNCQYV0ez4Dn3m63mF+tVlVlPB6j - 2+12VVebxzOoTdjtdn6/X1VyuRwq+/3erujxYAb8EtbrNSY3m00pWXBAoVgsFqWvhZ2hVCrdPJ8TRjHz - dDqFw2EpWRqNBurT6VT6WtgZ3i2BQEB1nbAJuA0ws9frSekK83HCns/neDwupdezM+C4RLvf76uuU7lc - xhA2IRKJSMmh3W5jdDgcSv/17Ay4vPBxontz5AeDQRymqHc6HSl9hWDH4xFrC4WClF7MzgCtVgtdmM/n - +Xw+FArhwFF3GX67OFtl3p1KpaIWYhrWYk/eLPiayQxX4Y2lZbFjOOFRksmkzPhBvV7HfScLrvRkgFQq - pT5I9Uyz2ezXAAo2DX8HcQNCOp3G6+AwkDFX3Wf4e5jBDMxgBmYwAzOYARlcJW9DRERERERE3/F4PgHt - JsijY40ZGgAAAABJRU5ErkJggg== - - - - - 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 - gg== - - - - - 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 - gTjogMt7DsG6t73AAsncAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAIAAAABlV4SAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH - DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp - bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE - sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs - AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4 - JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR - 3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd - li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF - ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX - wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF - hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55 - 4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ - VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB - 5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC - qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE - j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I - 1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9 - rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG - fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp - B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ - yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC - YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln - yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v - vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp - vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L - Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA - bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z - llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW - ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s - xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 - eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw - YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR - XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm - WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl - xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 - dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 - V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za - Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v - Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb - PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ - 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h - /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr - XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS - fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ - tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOvAAADrwBlbxySQAAAgxJREFUaEPt2MGHAlEc - B/BHREREp4iITp2WTnPqFENERNdYOkWnTp2i/2DYa3SK6NQpusaeolOnThERERG7X/1+xqoZNYd9vXZ/ - n1Pz673d993X77UzSgghhBBCCCHEv5LL5b4uUqkUl5RKp9ObzYbqD9rtdpZl8XzNPDPYtk3FQBqNBs/X - zDMDYCvegshmszxTP78Mr0QymOHP9kOxWKRiIGadS9iE9XpN9Qdtt9t8Ps/zNZOeNoNkMINnhnA43G63 - P4LodruxWIzna+aZoVwuUzGQVqvF8zXzzJBIJPr9/mcQo9EIJzLP10x62gySQbtOp4NOvToB/TKgrYfD - Yb1e52ulcLs8m824hW9MJhMdPb3f77HW6XSK459LPhkikch8PkdxuVxySSl8CdBIPzrO1lqtRr/McRwu - eWUIhULj8RiV8/ls2zYVIR6PY1vefeCHR6NRHvqr8HGiFeNrmCq3GZCQKk+7H7hrMBjQEvGXw+VVhmaz - SZe9Xu8y3EhoBrQEVnk6nQqFws8MpVIJnx+8Rk4ebSwcTYvFAmvFzZf7r1GlUjkej3iBbkZP81CTJZNJ - ehpJhxVQgNVqhVOVxiAqLunduw6HA7aRJuqD219atwvbkslk+O1LBjfhI7ClPFMntwEAeW5v6hGDn73c - g43lOfrhAKUM1WqVS68Ip9PTHrsLIYQQQgghtFHqG8tlcxhXzGy7AAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAIAAAABlV4SAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAACH - DwAAjA8AAP1SAACBQAAAfXkAAOmLAAA85QAAGcxzPIV3AAAKOWlDQ1BQaG90b3Nob3AgSUNDIHByb2Zp - bGUAAEjHnZZ3VFTXFofPvXd6oc0wAlKG3rvAANJ7k15FYZgZYCgDDjM0sSGiAhFFRJoiSFDEgNFQJFZE - sRAUVLAHJAgoMRhFVCxvRtaLrqy89/Ly++Osb+2z97n77L3PWhcAkqcvl5cGSwGQyhPwgzyc6RGRUXTs - AIABHmCAKQBMVka6X7B7CBDJy82FniFyAl8EAfB6WLwCcNPQM4BOB/+fpFnpfIHomAARm7M5GSwRF4g4 - JUuQLrbPipgalyxmGCVmvihBEcuJOWGRDT77LLKjmNmpPLaIxTmns1PZYu4V8bZMIUfEiK+ICzO5nCwR - 3xKxRoowlSviN+LYVA4zAwAUSWwXcFiJIjYRMYkfEuQi4uUA4EgJX3HcVyzgZAvEl3JJS8/hcxMSBXQd - li7d1NqaQffkZKVwBALDACYrmcln013SUtOZvBwAFu/8WTLi2tJFRbY0tba0NDQzMv2qUP91829K3NtF - ehn4uWcQrf+L7a/80hoAYMyJarPziy2uCoDOLQDI3fti0zgAgKSobx3Xv7oPTTwviQJBuo2xcVZWlhGX - wzISF/QP/U+Hv6GvvmckPu6P8tBdOfFMYYqALq4bKy0lTcinZ6QzWRy64Z+H+B8H/nUeBkGceA6fwxNF - hImmjMtLELWbx+YKuGk8Opf3n5r4D8P+pMW5FonS+BFQY4yA1HUqQH7tBygKESDR+8Vd/6NvvvgwIH55 - 4SqTi3P/7zf9Z8Gl4iWDm/A5ziUohM4S8jMX98TPEqABAUgCKpAHykAd6ABDYAasgC1wBG7AG/iDEBAJ - VgMWSASpgA+yQB7YBApBMdgJ9oBqUAcaQTNoBcdBJzgFzoNL4Bq4AW6D+2AUTIBnYBa8BgsQBGEhMkSB - 5CEVSBPSh8wgBmQPuUG+UBAUCcVCCRAPEkJ50GaoGCqDqqF6qBn6HjoJnYeuQIPQXWgMmoZ+h97BCEyC - qbASrAUbwwzYCfaBQ+BVcAK8Bs6FC+AdcCXcAB+FO+Dz8DX4NjwKP4PnEIAQERqiihgiDMQF8UeikHiE - j6xHipAKpAFpRbqRPuQmMorMIG9RGBQFRUcZomxRnqhQFAu1BrUeVYKqRh1GdaB6UTdRY6hZ1Ec0Ga2I - 1kfboL3QEegEdBa6EF2BbkK3oy+ib6Mn0K8xGAwNo42xwnhiIjFJmLWYEsw+TBvmHGYQM46Zw2Kx8lh9 - rB3WH8vECrCF2CrsUexZ7BB2AvsGR8Sp4Mxw7rgoHA+Xj6vAHcGdwQ3hJnELeCm8Jt4G749n43PwpfhG - fDf+On4Cv0CQJmgT7AghhCTCJkIloZVwkfCA8JJIJKoRrYmBRC5xI7GSeIx4mThGfEuSIemRXEjRJCFp - B+kQ6RzpLuklmUzWIjuSo8gC8g5yM/kC+RH5jQRFwkjCS4ItsUGiRqJDYkjiuSReUlPSSXK1ZK5kheQJ - yeuSM1J4KS0pFymm1HqpGqmTUiNSc9IUaVNpf+lU6RLpI9JXpKdksDJaMm4ybJkCmYMyF2TGKQhFneJC - YVE2UxopFykTVAxVm+pFTaIWU7+jDlBnZWVkl8mGyWbL1sielh2lITQtmhcthVZKO04bpr1borTEaQln - yfYlrUuGlszLLZVzlOPIFcm1yd2WeydPl3eTT5bfJd8p/1ABpaCnEKiQpbBf4aLCzFLqUtulrKVFS48v - vacIK+opBimuVTyo2K84p6Ss5KGUrlSldEFpRpmm7KicpFyufEZ5WoWiYq/CVSlXOavylC5Ld6Kn0Cvp - vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L - Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA - bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z - llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW - ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s - xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 - eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw - YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR - XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm - WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl - xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 - dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 - V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za - Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v - Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb - PhziHRo9HHS4t9mqufmI4pHSFrhF2DJ9NProje9cv+tqNWytb6O1FR8Dx4THnn4f+/3wcZ/jPScYJ1p/ - 0Pyhtp3SXtQBdeR0zHYmdo52RXYNnvQ+2dNt293+o9GPh06pnqo5LXu69AzhTMGZT2dzz86dSz83cz7h - /HhPTM/9CxEXbvUG9g5c9Ll4+ZL7pQt9Tn1nL9tdPnXF5srJq4yrndcsr3X0W/S3/2TxU/uA5UDHdavr - XTesb3QPLh88M+QwdP6m681Lt7xuXbu94vbgcOjwnZHokdE77DtTd1PuvriXeW/h/sYH6AdFD6UeVjxS - fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+ - tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/ - 6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAAOvAAADrwBlbxySQAABSNJREFUaEPtmGVPK1sU - QHGnUByCu1Pc3d1dSpBCgmuAoMGDhAZLIITAL70r6Xk3770LpS1T4CazPjQ9e6bTs8/2sZCRkZGRkZGR - kZExEYVC4e7u7ubmxqeLi4uDg4ONjY249rcQGRmZl5dXXFxcUFCQk5OTlpaWnJwcHR3t6+vr6Ogobvrh - JCYmjoyMHB0dnZ2dPTw8XF9f7+/vazSahoaG3NxclPHw8BC3/liioqLGxsZ6e3t1Sy8vL0yhVqsPDg5W - V1d7enrKy8sTEhKcnZ11N/wUrK2tCQO8JTw8nMPGDnV1deLaP3BPdnb2ysrK/Px8Z2dnSUmJn5+fuPa9 - ELJsPTY2Nj8/v729fXBwsL+/f25u7k8ddNja2hIqs7OzWIZ7cC0rKytx7esh23h7e6ekpLS0tOD9Ly8v - +H1NTU1bW5seHXTgYNhqfHy8ubk5IyPje9TAm8k/7Jjd393dYQF8SXeJXDQxMaFfB8CATU1NaILOBIyQ - fhlsV6VS8fePj4/E7v/Svy4vfagDcPxVVVXDw8NYEm8U0i9AqVSmp6fj0FqtFlMI6b8wXAews7NrbGwk - irCGj4+PkJoVXAgLLCwskPs9PT2F9L8YpQNQy0lTfX19FBCzBwYpBYtzZufn57QSQvoHxuoAoaGh+GR3 - d7fZPSowMLC+vv7m5oYqJkRvYYIOlpaWpaWlmAI1+C6kkmNvb08S3N3dxX2F6B1M0AECAgI6OjqI77Cw - MCGSnKCgIHI5mRRlhOgdTNMBR62srMRR+RQiaSF7ksI3NjZodYTofUzTASiXRAWFzyzuRKeJv56enuoJ - 5d+YrAM9C6amxr+X8T5FSEgIzkpNEGu9mKwDSbaiogId9OcME4mPj8fEtAZirReTdaCxLSoq4qSooUIk - IQQDx0NTLdZ6QQeyJL4n1sbAX9CZMwCKtYTQ9y8tLTFSirVe0IHGgRNlnhYiwyCU0YE/oo0XIgnh0YuL - i0lJSWKtF06ROa6rq4sph3mNQcfAkY3sxx+tra1xZEIkITx0ZmbGQDclq9CT7+zsUEympqZINXl5eTpl - nJycxE1v4erqiv6U0bi4OCGSEOKBMC0rKxNrw2AuJZsxGMHk5CQFnmNmf++94PD396fAoTnKCJGExMTE - 0FqCWBsJ+x4YGDg+Pt7b28PNaLqYk2jvaLaZhHT3EAxkP2rc+vq6TiIxnBCnSHr9sNHQA6mTiEKHk5MT - PI3WqLa2Fi9lpGY0pYzyfXNzk3lI/EBa2DouPjQ0xFEJ0SfgaVlZWRqNhhSEizLH8nC6GLLZ5eUl9VTc - JzmpqakYurW1VcJmhnzFA7EJ/fzFxcXt7e3q6qq4Zg7INhxYT0+PhI0A8VBdXc3WmYHovYkTMxpBBw6g - mxhpbIToEzBJEx7Ly8ujo6NC9AWwdVxW97KRdl9ITQKH5OzJvPrHWrOArdVqNTWYHEKeEVIjYfBnrCUp - EQYG1n6JoVqTUjjCzMzM39ndcHCh4OBgFNBqtR+OtWaE3U9PTzO/FxYW0kEY+EIF/1EoFNQ79L+/v6cH - ERe+CyZ3ukAMQjIh7VKk9EQIXofT8xPaoYWFBRT4hpeTb6JUKonvra0tSi++gXEiIiKo6GRhum6O3Nvb - m4yJ51AZGScw3ePjI60EcvGIHwKbRgfSy+HhIb0tPVVVVRXDQ3FxMdUXJVdWVnD95+dn7PalL1WNhfZB - pVJRyLe3t6m7T09Pr6+vV1dXdKxoyEwjSUmRkZGRkZGRkZGR+RuxsPgFQv503H3i2uAAAAAASUVORK5C - YII= - - - - - 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 - vfRZVUVVT1Whar3qgOqCmrZaqFq+WpvaQ3WCOkM9Xr1cvUd9VkNFw08jT6NF454mXpOhmai5V7NPc15L - Wytca6tWp9aUtpy2l3audov2Ax2yjoPOGp0GnVu6GF2GbrLuPt0berCehV6iXo3edX1Y31Kfq79Pf9AA - bWBtwDNoMBgxJBk6GWYathiOGdGMfI3yjTqNnhtrGEcZ7zLuM/5oYmGSYtJoct9UxtTbNN+02/R3Mz0z - llmN2S1zsrm7+QbzLvMXy/SXcZbtX3bHgmLhZ7HVosfig6WVJd+y1XLaSsMq1qrWaoRBZQQwShiXrdHW - ztYbrE9Zv7WxtBHYHLf5zdbQNtn2iO3Ucu3lnOWNy8ft1OyYdvV2o/Z0+1j7A/ajDqoOTIcGh8eO6o5s - xybHSSddpySno07PnU2c+c7tzvMuNi7rXM65Iq4erkWuA24ybqFu1W6P3NXcE9xb3Gc9LDzWepzzRHv6 - eO7yHPFS8mJ5NXvNelt5r/Pu9SH5BPtU+zz21fPl+3b7wX7efrv9HqzQXMFb0ekP/L38d/s/DNAOWBPw - YyAmMCCwJvBJkGlQXlBfMCU4JvhI8OsQ55DSkPuhOqHC0J4wybDosOaw+XDX8LLw0QjjiHUR1yIVIrmR - XVHYqLCopqi5lW4r96yciLaILoweXqW9KnvVldUKq1NWn46RjGHGnIhFx4bHHol9z/RnNjDn4rziauNm - WS6svaxnbEd2OXuaY8cp40zG28WXxU8l2CXsTphOdEisSJzhunCruS+SPJPqkuaT/ZMPJX9KCU9pS8Wl - xqae5Mnwknm9acpp2WmD6frphemja2zW7Fkzy/fhN2VAGasyugRU0c9Uv1BHuEU4lmmfWZP5Jiss60S2 - dDYvuz9HL2d7zmSue+63a1FrWWt78lTzNuWNrXNaV78eWh+3vmeD+oaCDRMbPTYe3kTYlLzpp3yT/LL8 - V5vDN3cXKBVsLBjf4rGlpVCikF84stV2a9021DbutoHt5turtn8sYhddLTYprih+X8IqufqN6TeV33za - Eb9joNSydP9OzE7ezuFdDrsOl0mX5ZaN7/bb3VFOLy8qf7UnZs+VimUVdXsJe4V7Ryt9K7uqNKp2Vr2v - Tqy+XeNc01arWLu9dn4fe9/Qfsf9rXVKdcV17w5wD9yp96jvaNBqqDiIOZh58EljWGPft4xvm5sUmoqb - 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 diff --git a/ITC81DB_0H/ITC81DB_2H.csproj b/ITC81DB_0H/ITC81DB_2H.csproj index 5135fcc..6a2c103 100644 --- a/ITC81DB_0H/ITC81DB_2H.csproj +++ b/ITC81DB_0H/ITC81DB_2H.csproj @@ -779,6 +779,9 @@ Resources.resx True + + + diff --git a/ITC81DB_0H/SerialManager/SerialManager.Define.cs b/ITC81DB_0H/SerialManager/SerialManager.Define.cs new file mode 100644 index 0000000..6549cc3 --- /dev/null +++ b/ITC81DB_0H/SerialManager/SerialManager.Define.cs @@ -0,0 +1,69 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; +using System.Runtime.InteropServices; + +namespace ITC81DB_0H.SerialManager +{ + public partial class SerialMgrComm + { + private const string PathDll = "SD Card\\Run\\DllSerialMgr.dll"; + + public delegate void fnSerialVersionCB(StringBuilder pVersion); + public static fnSerialVersionCB fnSerialVersionCallback; + + public delegate void fnSerialMgrDebugCB(int level, StringBuilder pMessage); + public static fnSerialMgrDebugCB fnSerialMgrDebugCallback; + + public delegate void fnSerialMgrPortConnectCB(StringBuilder commPort, int status, int errDetail); + public static fnSerialMgrPortConnectCB fnSerialMgrPortConnectCallback; + + public delegate void fnSerialMgrRcvPacketCB(StringBuilder commPort, IntPtr pData, int length); + public static fnSerialMgrRcvPacketCB fnSerialMgrRcvPacketCallback; + + public delegate void fnSerialMgrRcvErrPacketCB(StringBuilder commPort, IntPtr pData, int length); + public static fnSerialMgrRcvErrPacketCB fnSerialMgrRcvErrPacketCallback; + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern void DLL_SerialMgr_Register_DebugCB(fnSerialMgrDebugCB func); + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern void DLL_SerialMgr_Register_ConnectCB(fnSerialMgrPortConnectCB func); + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern void DLL_SerialMgr_Register_VersionCB(fnSerialVersionCB func); + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern void DLL_SerialMgr_Register_RcvPacketCB(fnSerialMgrRcvPacketCB func); + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern void DLL_SerialMgr_Register_RcvErrPacketCB(fnSerialMgrRcvErrPacketCB func); + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern void DLL_SerialMgr_HelloWorld(); + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern void DLL_SerialMgr_Getversion(); + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern void DLL_SerialMgr_Activation(); + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern void DLL_SerialMgr_Deactivation(); + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern int DLL_SerialMgr_PortOpen(IntPtr commPort, int BaudRate, int StopBit, int Parity, int DataBit); + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern int DLL_SerialMgr_PortClose(IntPtr commPort); + + [DllImport(PathDll, CallingConvention = CallingConvention.Winapi)] + public static extern int DLL_SerialMgr_PortSendMsg(IntPtr commPort, IntPtr pData, int Length); + + } +} diff --git a/ITC81DB_0H/SerialManager/SerialManager.Structure.cs b/ITC81DB_0H/SerialManager/SerialManager.Structure.cs new file mode 100644 index 0000000..0e5a2ed --- /dev/null +++ b/ITC81DB_0H/SerialManager/SerialManager.Structure.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; + +namespace ITC81DB_0H.SerialManager +{ + public partial class SerialMgrComm + { + //fnSerialMgrDebugCB + public const int SERIALMGR_DBG_NORMAL = 0x0001; + public const int SERIALMGR_DBG_THREAD = 0x0002; + public const int SERIALMGR_DBG_LIST = 0x0004; + public const int SERIALMGR_DBG_PORT = 0x0008; + + + // fnSerialMgrConnectCB : status + public const int SERIAL_STATUS_DISCONNECT = 0x00; + public const int SERIAL_STATUS_CONNECT = 0x01; + public const int SERIAL_STATUS_ERROR = 0x02; + + public const int MAX_COMMPORT_SIZE = 10; + + // fnSerialMgrConnectCB : errDetail + public enum serial_error_detail_e + { + SERIAL_ERR_NONE = 0x00, + SERIAL_ERR_CREATE, + SERIAL_ERR_PARAMETER, + SERIAL_ERR_TIMEOUT, + SERIAL_ERR_WRITE, + SERIAL_ERR_READ, + SERIAL_ERR_MAX + }; + + + + } +} diff --git a/ITC81DB_0H/SerialManager/SerialManager.cs b/ITC81DB_0H/SerialManager/SerialManager.cs new file mode 100644 index 0000000..7d0e529 --- /dev/null +++ b/ITC81DB_0H/SerialManager/SerialManager.cs @@ -0,0 +1,274 @@ +#define CONSOLE_DBUGGING + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Collections; + +namespace ITC81DB_0H.SerialManager +{ + public partial class SerialMgrComm + { + public delegate void ObjectEventHandler(object data); + public static event ObjectEventHandler SerialPortMessageReceive; + public static event ObjectEventHandler SerialPortErrMessageReceive; + + public static void IntializeSerialManager() + { + //Console.Write("Initialize Serial Manager \n"); + + // Register Callback + fnSerialMgrDebugCallback = serialDebugCallback; + DLL_SerialMgr_Register_DebugCB(fnSerialMgrDebugCallback); + + fnSerialMgrPortConnectCallback = serialPortConnectCallback; + DLL_SerialMgr_Register_ConnectCB(fnSerialMgrPortConnectCallback); + + fnSerialVersionCallback = serialVersionCallback; + DLL_SerialMgr_Register_VersionCB(fnSerialVersionCallback); + + fnSerialMgrRcvPacketCallback = serialRcvPacketMsgCallback; + DLL_SerialMgr_Register_RcvPacketCB(fnSerialMgrRcvPacketCallback); + + fnSerialMgrRcvErrPacketCallback = serialRcvErrPacketMsgCallback; + DLL_SerialMgr_Register_RcvErrPacketCB(fnSerialMgrRcvErrPacketCallback); + + // test + //DLL_SerialMgr_HelloWorld(); + + // get the lib version + DLL_SerialMgr_Getversion(); + + // activate the dll thread + DLL_SerialMgr_Activation(); + + } + + #region DLL_CALLBACK + private static void serialVersionCallback(StringBuilder versionInfo) + { + try + { + //Console.Write("\n-------------------------------\n"); + //Console.Write("lib version = " + versionInfo + "\n"); + //Console.Write("-------------------------------\n"); + } + catch (Exception e) + { + throw (e); + } + } + + private static void serialPortConnectCallback(StringBuilder commPort, int status, int errDetail) + { + try + { + //Console.Write(commPort + ": status = " + status.ToString() +" , detail = " + errDetail.ToString() + "\n"); + } + catch (Exception e) + { + throw (e); + } + } + + private static void serialDebugCallback(int type, StringBuilder pMessage) + { + try + { + //Console.Write(pMessage); + } + catch (Exception e) + { + throw (e); + } + } + + // https://stackoverflow.com/questions/22938756/how-to-marshal-c-array-to-c-sharp-via-intptr + public static void serialRcvPacketMsgCallback(StringBuilder commPort, IntPtr pData, int length) + { + try + { + if (commPort.Length == 0) + return; + + if ( (pData == IntPtr.Zero) || (length == 0) ) + return; + + byte[] data = new byte[length]; + Marshal.Copy(pData, data, 0, (int)length); + + string sdata = Encoding.Default.GetString(data, 0, data.Length); + + if (SerialPortMessageReceive != null) + SerialPortMessageReceive(sdata); + +#if TEST_CB + String commPortStr = commPort.ToString(); + + serialPortMessageByte(commPortStr, data, length); +#endif + + + //Console.Write("comm port : " + commPort + ", length = " + length.ToString() + "\n"); +#if TEST_DEBUG + // https://stackoverflow.com/questions/1342922/console-writeline-as-hexadecimal + int index = 0; + foreach (byte temp in data) + { + Console.Write(temp.ToString("X2") + " "); + index++; + + if (index % 16 == 0) Console.Write("\n"); + } + + Console.Write("\n"); +#endif + + //data = null; + + //GC.Collect(); + //GC.WaitForPendingFinalizers(); + } + catch (Exception e) + { + throw (e); + } + } + + public static void serialRcvErrPacketMsgCallback(StringBuilder commPort, IntPtr pData, int length) + { + try + { + if (commPort.Length == 0) + return; + + if ((pData == IntPtr.Zero) || (length == 0)) + return; + + byte[] data = new byte[length]; + Marshal.Copy(pData, data, 0, (int)length); + + string sdata = Encoding.Default.GetString(data, 0, data.Length); + + if (SerialPortErrMessageReceive != null) + SerialPortErrMessageReceive(sdata); + + //String commPortStr = commPort.ToString(); + //serialPortMessageByte(commPortStr, data, length); + + //Console.Write("Err : comm port : " + commPort + ", length = " + length.ToString() + "\n"); + +#if (TEST_DEBUG1) + // https://stackoverflow.com/questions/1342922/console-writeline-as-hexadecimal + int index = 0; + foreach (byte temp in data) + { + Console.Write(temp.ToString("X2") + " "); + index++; + + if (index == 5) break; + + if (index % 16 == 0) Console.Write("\n"); + } + + Console.Write("\n"); +#endif + + // https://dhshin94.tistory.com/135 + //data = null; + + //GC.Collect(); + //GC.WaitForPendingFinalizers(); + + } + catch (Exception e) + { + throw (e); + } + } + + #endregion // DLL_CALLBACK + + #region DLL_COMMAND + + public static void serialPortOpen(String commPort, int BaudRate, int stopBit, int parity, int dataBit) + { + IntPtr pCommPort = Marshal.StringToBSTR(commPort.ToString()); + + DLL_SerialMgr_PortOpen(pCommPort, BaudRate, stopBit, parity, dataBit); + } + + public static void serialPortClose(String commPort) + { + IntPtr pCommPort = Marshal.StringToBSTR(commPort.ToString()); + + DLL_SerialMgr_PortClose(pCommPort); + } + + + public static void serialPortMessageByte(String commport, byte[] data, int length) + { + IntPtr pCommPort = Marshal.StringToBSTR(commport.ToString()); + + IntPtr ptr = Marshal.AllocHGlobal(length); + Marshal.Copy(data, 0, ptr, length); + + DLL_SerialMgr_PortSendMsg(pCommPort, ptr, length); + + //string sdata = Encoding.Default.GetString(data, 0, data.Length); + + Marshal.FreeHGlobal(ptr); + + // if (SerialPortMessageReceive != null) + // SerialPortMessageReceive(sdata); + } + + + //https://stackoverflow.com/questions/13418795/convert-byte-array-to-structure-in-the-compact-framework + public static void serialPortMessage(String commPort, String Message) + { + IntPtr pCommPort = Marshal.StringToBSTR(commPort.ToString()); + + StringBuilder sb = new StringBuilder(); + sb.Append((char)0x02); + sb.Append(Message); + sb.Append((char)0x03); + + Message = sb.ToString(); + + byte[] buffer = Encoding.ASCII.GetBytes(Message); + int count = Encoding.ASCII.GetByteCount(Message); + //byte[] buffer = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + //int count = 10; + + IntPtr ptr = Marshal.AllocHGlobal(count); + Marshal.Copy(buffer, 0, ptr, count); + + DLL_SerialMgr_PortSendMsg(pCommPort, ptr, count); + + Marshal.FreeHGlobal(ptr); + } + + public static void serialPortMessageRaw(String commPort, String Message) + { + IntPtr pCommPort = Marshal.StringToBSTR(commPort.ToString()); + + byte[] buffer = Encoding.ASCII.GetBytes(Message); + int count = Encoding.ASCII.GetByteCount(Message); + //byte[] buffer = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + //int count = 10; + + IntPtr ptr = Marshal.AllocHGlobal(count); + Marshal.Copy(buffer, 0, ptr, count); + + DLL_SerialMgr_PortSendMsg(pCommPort, ptr, count); + + Marshal.FreeHGlobal(ptr); + } + #endregion + + } +} diff --git a/ITC81DB_0H/Version.txt b/ITC81DB_0H/Version.txt index f7d972c..dc62297 100644 --- a/ITC81DB_0H/Version.txt +++ b/ITC81DB_0H/Version.txt @@ -12,6 +12,11 @@ ⺻ м 跮 */ +@ Ver 3.2.0 by CJY + - 2023.11.08 + - Ver 3.1.2 Modify + - ߰ + @ Ver 3.1.2 by CJY - 2023.10.31 - Ver 3.1.1 Modify diff --git a/ITC81DB_0H/bin/Release/DllSerialMgr.dll b/ITC81DB_0H/bin/Release/DllSerialMgr.dll new file mode 100644 index 0000000..9d5cc08 Binary files /dev/null and b/ITC81DB_0H/bin/Release/DllSerialMgr.dll differ diff --git a/ITC81DB_0H/bin/Release/ITC81DB_2H.exe b/ITC81DB_0H/bin/Release/ITC81DB_2H.exe index 528593c..54a9595 100644 Binary files a/ITC81DB_0H/bin/Release/ITC81DB_2H.exe and b/ITC81DB_0H/bin/Release/ITC81DB_2H.exe differ diff --git a/ITC81DB_0H/obj/Release/ITC81DB_2H.exe b/ITC81DB_0H/obj/Release/ITC81DB_2H.exe index 528593c..54a9595 100644 Binary files a/ITC81DB_0H/obj/Release/ITC81DB_2H.exe and b/ITC81DB_0H/obj/Release/ITC81DB_2H.exe differ