public void ReadDataDisplay(object sender, ReadDataEventAgrs e) { string[] datas = e.Data.Split('|'); if (datas.Length < 5) { return; } MainForm mf = this.MdiParent as MainForm; var popList = mf.popList; if (popList.Count > 0) { foreach (var pop in popList) { int resultQty = int.Parse(datas[3]); int badQty = int.Parse(datas[4]); if (pop.TaskID.Replace("task", "").TrimStart('0') == datas[1]) { resultQty = pop.ResultQty += resultQty; badQty = pop.BadQty += badQty; this.Invoke((MethodInvoker)(() => { dataGridView1.DataSource = null; dataGridView1.DataSource = popList; })); //if (pop.Qty <= pop.ResultQty) //{ // this.Invoke((MethodInvoker)(() => mf.Stop(pop.Worker, pop.Frm, pop.Task_proc_id))); //} } if (!string.IsNullOrEmpty(taskID) && taskID.Replace("task", "").TrimStart('0') == datas[1]) { this.Invoke((MethodInvoker)(() => { label10.Text = (pop.Qty - resultQty).ToString(); label14.Text = resultQty.ToString(); label15.Text = badQty.ToString(); })); } } } }
private void ReadDataDisplay(object sender, ReadDataEventAgrs e) { KEEP_ARRIVE_COUNT = 0; if (LogVisible) { if (ListBox1.Items.Count > 50) { this.Invoke((MethodInvoker)(() => ListBox1.Items.Clear())); } this.Invoke((MethodInvoker)(() => ListBox1.Items.Add(e.Data.Trim()))); this.Invoke((MethodInvoker)(() => ListBox1.SelectedIndex = ListBox1.Items.Count - 1)); } txtReadATL.Invoke((MethodInvoker) delegate { txtReadATL.Text = e.Data.Trim(); }); if (ReadData != null) { ReadData(null, e); } }
/// <summary> /// 수신된 데이터를 찍어주고, DB에 전송한다. /// </summary> private void DoingSchedule() { string lsRecvData; int liCnt; string lsTmpData; string[] laData; try { if (t_client == null || !t_client.client.Connected) { return; } if (t_client.client.Available > 0) { byte[] rcvTemp = new byte[t_client.client.Available]; recvData.Read(rcvTemp, 0, rcvTemp.Length); string readData = UTF7Encoding.UTF7.GetString(rcvTemp); this.Log.WriteInfo($"[RECV] : {readData}"); RECV_TMP_DATA += readData; liCnt = RECV_TMP_DATA.IndexOf(STX); if (liCnt >= 0) { lsRecvData = RECV_TMP_DATA.Substring(liCnt); if (lsRecvData.Substring(0, 1) == STX) { while (true) { liCnt = lsRecvData.IndexOf(ETX); if (liCnt >= 0) { lsTmpData = lsRecvData.Substring(0, liCnt); } else { break; } // ========= 도착한 데이타 처리 =================== //lsTmpData = STX|Date|TaskID|ProductID|Qty|BadQty|ETX //lsTmpData = STX|x|ETX laData = lsTmpData.Split('|'); if (laData.Length < 7) { break; } if (ReadData != null) { ReadDataEventAgrs args = new ReadDataEventAgrs(); args.Data = $"[{laData[1]}] |{laData[2]}|{laData[3]}|{laData[4]}|{laData[5]}"; ReadData(null, args); } switch (laData[1]) { case "X": case "x": //KeepArrive 수신 처리 //KEEP_ARRIVE_COUNT = 0; break; case "RESET": case "reset": break; default: IF_SetValue($"[{laData[1]}] |{laData[2]}|{laData[3]}|{laData[4]}|{laData[5]}"); break; } lsRecvData = lsRecvData.Substring(liCnt + 1); liCnt = lsRecvData.IndexOf(STX); if (liCnt >= 0) { lsRecvData = lsRecvData.Substring(liCnt); RECV_TMP_DATA = lsRecvData; } else { if (lsRecvData.Length > 0) { lsRecvData = lsRecvData.Substring(0); RECV_TMP_DATA = lsRecvData; } } if (string.IsNullOrEmpty(lsRecvData.Trim())) { RECV_TMP_DATA = string.Empty; break; } } } } } } catch (Exception err) { Log.WriteError($"[RECV중 오류]:{err.Message}"); if (err.Message.Contains("Connection Error") || err.Message.Contains("개체")) { throw new Exception(err.Message); } } finally { Thread.Sleep(100); } }