public string TcpSetupResponse(SetupEventArgs e) { e.ParseReturnData(); string responseString; if (e.UseJson) { responseString = Newtonsoft.Json.JsonConvert.SerializeObject(e.Response); } else { var sb = new StringBuilder(); sb.Append(e.Response.Component1.AccessId.Trim()); sb.Append(","); sb.Append(e.Response.Component1.ModelNumber.Trim());; sb.Append(","); sb.Append(e.Response.Component2.AccessId.Trim()); sb.Append(","); sb.Append(e.Response.Component2.ModelNumber.Trim()); sb.Append(","); sb.Append(e.Response.Component3.AccessId.Trim()); sb.Append(","); sb.Append(e.Response.Component3.ModelNumber.Trim()); sb.Append(","); sb.Append(e.Response.Component4.AccessId.Trim()); sb.Append(","); sb.Append(e.Response.Component4.ModelNumber.Trim()); sb.Append(","); sb.Append(e.Response.Component5.AccessId.Trim()); sb.Append(","); sb.Append(e.Response.Component5.ModelNumber.Trim()); sb.Append(","); sb.Append(e.Response.Component6.AccessId.Trim()); sb.Append(","); sb.Append(e.Response.Component6.ModelNumber.Trim()); sb.Append(","); sb.Append(e.Response.Quantity.Trim()); sb.Append(","); sb.Append(e.Response.Acknowledge.Trim()); sb.Append(","); sb.Append(e.Response.ErrorCode.Trim()); sb.Append(","); sb.Append(string.Join(",", e.Response.PlcModelSetup)); responseString = sb.ToString(); } var stream = e.Client.GetStream(); var outData = Encoding.ASCII.GetBytes(responseString); stream.Write(outData, 0, outData.Length); return("GOOD"); }
public void EipPlcModelSetupResponse(string ipAddress, SetupEventArgs e) { var retArr = e.PlcModelSetup; //for (var i = 0; i < e.Response.PlcModelSetup.Length; i++) //{ // short.TryParse(e.Response.PlcModelSetup[i], out retArr[i]); //} var s = new PlcWriter(); s.LogixResponse(ipAddress, retArr, "N241[0]"); }
public string SetupResponse(SetupEventArgs e) { switch (e.listenerType) { case ListenerType.TCP: return(TcpSetupResponse(e)); case ListenerType.EIP: return(EipSetupResponse(e)); case ListenerType.PCCC: return(PcccSetupResponse(e)); default: return(""); } }
public void SetupResponse(SetupEventArgs e) { switch (e.listenerType) { case ListenerType.TCP: TcpSetupResponse(e); break; case ListenerType.EIP: EipSetupResponse(e); break; case ListenerType.PCCC: PcccSetupResponse(e); break; default: break; } }
private static void L_SetupReceived(object sender, OESListener.SetupEventArgs e) { OESListener.Logger.Log("setup response"); e.Response.Component1.AccessId = "1"; e.Response.Component1.ModelNumber = "B0884400-00"; e.Response.Acknowledge = "1"; e.Response.ErrorCode = "1"; e.ResponseArray[65] = 1925; e.ResponseArray[66] = 0; if (e.CellId == "K09001") { e.PlcModelSetup = new short[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 } } ; else { e.PlcModelSetup = new short[] { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 11, 12, 13, 14, 15, 16, 17, 18 } }; var resp = new OESListener.ListenerResponse(); resp.SetupResponse(e); }
public void PcccPlcModelSetupResponse(string ipAddress, SetupEventArgs e) { var retArr = e.PlcModelSetup; //for (var i = 0; i < e.Response.PlcModelSetup.Length; i++) //{ // short.TryParse(e.Response.PlcModelSetup[i], out retArr[i]); //} var s = new PlcWriter(); if (e.UsePlcFive) { s.PlcResponse(e.SenderIp, retArr, "N241:0"); } else if (e.UsePlcMicrologix) { s.MicroLogixResponse(e.SenderIp, retArr, "N241:0"); } else { s.SlcResponse(e.SenderIp, retArr, "N241:0"); } }
protected void ParseSetupTransaction(string senderIp, short[] dataArray, string tagName, bool usePlcFive = false, bool useMicroLogix = false) { var e = new SetupEventArgs(senderIp); e.InTagName = tagName; if (e.InTagName.Contains(":")) { e.listenerType = ListenerType.PCCC; } else { e.listenerType = ListenerType.EIP; } e.UsePlcFive = usePlcFive; e.UsePlcMicrologix = useMicroLogix; var bytes = new List <byte>(); for (int i = 0; i < 5; i++) { var b1 = (byte)((dataArray[i] & 0xff00) >> 8); var b2 = (byte)(dataArray[i] & 0x00ff); if (b1 != 0) { bytes.Add(b1); } if (b2 != 0) { bytes.Add(b2); } } e.CellId = Encoding.Default.GetString(bytes.ToArray()); if (dataArray[18] == 5 || dataArray[18] == 6 || dataArray[18] == 17 || dataArray[18] == 18) { bytes = new List <byte>(); for (int i = 5; i < 12; i++) { var b1 = (byte)((dataArray[i] & 0xff00) >> 8); var b2 = (byte)(dataArray[i] & 0x00ff); if (b1 != 0) { bytes.Add(b1); } if (b2 != 0) { bytes.Add(b2); } } e.Component = Encoding.Default.GetString(bytes.ToArray()); e.AccessId = dataArray[16]; } e.ProcessIndicator = dataArray[18]; bytes = new List <byte>(); for (int i = 22; i < 30; i++) { var b1 = (byte)((dataArray[i] & 0xff00) >> 8); var b2 = (byte)(dataArray[i] & 0x00ff); if (b1 != 0) { bytes.Add(b1); } if (b2 != 0) { bytes.Add(b2); } } e.ModelNumber = Encoding.Default.GetString(bytes.ToArray()); bytes = new List <byte>(); for (int i = 30; i < 32; i++) { var b1 = (byte)((dataArray[i] & 0xff00) >> 8); var b2 = (byte)(dataArray[i] & 0x00ff); if (b1 != 0) { bytes.Add(b1); } if (b2 != 0) { bytes.Add(b2); } } e.OpNumber = Encoding.Default.GetString(bytes.ToArray()); OnSetupReceived(e); }
protected virtual void OnSetupReceived(SetupEventArgs e) { SetupReceived?.Invoke(this, e); }
public void EipSetupResponse(SetupEventArgs e) { e.ParseReturnData(); e.OutTagName = "N238[0]"; var retArr = new short[71]; if (!string.IsNullOrEmpty(e.Response.Component1.AccessId)) { Int16.TryParse(e.Response.Component1.AccessId, out retArr[0]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component1.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 1, componentModelArr.Length); } if (!string.IsNullOrEmpty(e.Response.Component2.AccessId)) { Int16.TryParse(e.Response.Component2.AccessId, out retArr[11]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component2.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 12, componentModelArr.Length); } if (!string.IsNullOrEmpty(e.Response.Component3.AccessId)) { Int16.TryParse(e.Response.Component3.AccessId, out retArr[22]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component3.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 23, componentModelArr.Length); } if (!string.IsNullOrEmpty(e.Response.Component4.AccessId)) { Int16.TryParse(e.Response.Component4.AccessId, out retArr[33]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component4.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 34, componentModelArr.Length); } if (!string.IsNullOrEmpty(e.Response.Component5.AccessId)) { Int16.TryParse(e.Response.Component5.AccessId, out retArr[44]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component5.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 45, componentModelArr.Length); } if (!string.IsNullOrEmpty(e.Response.Component6.AccessId)) { Int16.TryParse(e.Response.Component6.AccessId, out retArr[55]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component6.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 56, componentModelArr.Length); } // add quantity if (!Int32.TryParse(e.Response.Quantity, out int result)) { result = 0; } if (result > 9999) { var small = result - 10000; var big = (result - small) * 0.0001; retArr[66] = (short)big; retArr[65] = (short)small; } else { retArr[65] = (byte)result; } Int16.TryParse(e.Response.Acknowledge, out retArr[67]); Int16.TryParse(e.Response.ErrorCode, out retArr[68]); var s = new PlcWriter(); s.LogixResponse(e.SenderIp, retArr, e.OutTagName); if (e.ProcessIndicator == 4) { EipPlcModelSetupResponse(e.SenderIp, e); } }
private void TcpListener_SetupReceived(object sender, SetupEventArgs e) { OnSetupReceived(e); }
public string PcccSetupResponse(SetupEventArgs e) { e.ParseReturnData(); e.OutTagName = "N238:0"; var retArr = new short[71]; if (!string.IsNullOrEmpty(e.Response.Component1.AccessId)) { Int16.TryParse(e.Response.Component1.AccessId, out retArr[0]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component1.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 1, componentModelArr.Length); } if (!string.IsNullOrEmpty(e.Response.Component2.AccessId)) { Int16.TryParse(e.Response.Component2.AccessId, out retArr[11]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component2.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 12, componentModelArr.Length); } if (!string.IsNullOrEmpty(e.Response.Component3.AccessId)) { Int16.TryParse(e.Response.Component3.AccessId, out retArr[22]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component3.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 23, componentModelArr.Length); } if (!string.IsNullOrEmpty(e.Response.Component4.AccessId)) { Int16.TryParse(e.Response.Component4.AccessId, out retArr[33]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component4.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 34, componentModelArr.Length); } if (!string.IsNullOrEmpty(e.Response.Component5.AccessId)) { Int16.TryParse(e.Response.Component5.AccessId, out retArr[44]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component5.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 45, componentModelArr.Length); } if (!string.IsNullOrEmpty(e.Response.Component6.AccessId)) { Int16.TryParse(e.Response.Component6.AccessId, out retArr[55]); var componentModelArr = Util.StringToAbIntArray(e.Response.Component6.ModelNumber); Array.Copy(componentModelArr, 0, retArr, 56, componentModelArr.Length); } // add quantity if (!Int32.TryParse(e.Response.Quantity, out int result)) { result = 0; } if (result > 9999) { var small = result - 10000; var big = (result - small) * 0.0001; retArr[66] = (short)big; retArr[65] = (short)small; } else { retArr[65] = (short)result; } Int16.TryParse(e.Response.Acknowledge, out retArr[67]); Int16.TryParse(e.Response.ErrorCode, out retArr[68]); var s = new PlcWriter(); var status = ""; if (e.UsePlcFive) { status = s.PlcResponse(e.SenderIp, retArr, e.OutTagName); } else if (e.UsePlcMicrologix) { status = s.MicroLogixResponse(e.SenderIp, retArr, e.OutTagName); } else { status = s.SlcResponse(e.SenderIp, retArr, e.OutTagName); } if (e.ProcessIndicator == 4) { var pushDownStatus = PcccPlcModelSetupResponse(e.SenderIp, e); if (pushDownStatus != "GOOD") { status = string.Format("PLC Model Download - {0}", pushDownStatus); } } return(status); }
private void HandleMessage(TcpClient client) { //var senderIP = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); var bytes = new byte[1024]; var stream = client.GetStream(); int i; try { while ((i = stream.Read(bytes, 0, bytes.Length)) != 0 && client != null) { var receivedBytes = new byte[i]; Buffer.BlockCopy(bytes, 0, receivedBytes, 0, i); var inString = Encoding.Default.GetString(receivedBytes).Trim(); //check if incoming string is valid json if (inString.StartsWith("{") && inString.EndsWith("}")) { if (Logger.Enabled) { Logger.Log(string.Format("json data received from : {0}", ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString())); } ReceiveData jsonData; try { jsonData = Newtonsoft.Json.JsonConvert.DeserializeObject <ReceiveData>(inString); switch (jsonData.Command) { case "PROD": var p = new ProductionEventArgs(client); p.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); p.CellId = jsonData.CellId; p.ItemId = jsonData.ItemId; p.ProcessIndicator = jsonData.RequestCode; p.SuccessIndicator = jsonData.Status; p.FaultCode = jsonData.FailureCode; p.StatusCode = jsonData.Status; p.GeneratedBarcode = (string.IsNullOrEmpty(jsonData.GeneratedBarcode)) ? "" : (jsonData.GeneratedBarcode.Length == 2) ? jsonData.GeneratedBarcode : ""; var cellIdArray = Util.StringToAbIntArray(p.CellId); var itemIdArray = Util.StringToAbIntArray(p.ItemId); var generatedBarcodeArray = Util.StringToAbIntArray(p.GeneratedBarcode); //Array.Copy(cellIdArray, 0, p.ResponseArray, 0, cellIdArray.Length); //Array.Copy(itemIdArray, 0, p.ResponseArray, 5, itemIdArray.Length); //Array.Copy(generatedBarcodeArray, 0, p.ResponseArray, 11, generatedBarcodeArray.Length); short[] sArr = new short[28]; var pointer = 0; for (var di = 0; di < jsonData.ProcessHistoryValues.Length; di++) { var s1 = jsonData.ProcessHistoryValues[di]; if (s1.Contains(".")) { double.TryParse(s1, out double dResult); var temp1 = Math.Truncate(dResult); var temp2 = dResult - temp1; var temp3 = temp2 * 100; var myArr = s1.Split('.'); //short.TryParse(myArr[0], out short prodShort); sArr[pointer] = Convert.ToInt16(temp1); pointer++; //short.TryParse(myArr[1], out short prodShort1); sArr[pointer] = Convert.ToInt16(temp3); pointer++; } else { short.TryParse(s1, out short prodShort); sArr[pointer] = prodShort; pointer++; sArr[pointer] = 0; pointer++; } } p.P_Val_1 = sArr[0]; p.P_Val_2 = sArr[1]; p.P_Val_3 = sArr[2]; p.P_Val_4 = sArr[3]; p.P_Val_5 = sArr[4]; p.P_Val_6 = sArr[5]; p.P_Val_7 = sArr[6]; p.P_Val_8 = sArr[7]; p.P_Val_9 = sArr[8]; p.P_Val_10 = sArr[9]; p.P_Val_11 = sArr[10]; p.P_Val_12 = sArr[11]; p.P_Val_13 = sArr[12]; p.P_Val_14 = sArr[13]; p.P_Val_15 = sArr[14]; p.P_Val_16 = sArr[15]; p.P_Val_17 = sArr[16]; p.P_Val_18 = sArr[17]; p.P_Val_19 = sArr[18]; p.P_Val_20 = sArr[19]; p.P_Val_21 = sArr[20]; p.P_Val_22 = sArr[21]; p.P_Val_23 = sArr[22]; p.P_Val_24 = sArr[23]; p.P_Val_25 = sArr[24]; p.P_Val_26 = sArr[25]; p.P_Val_27 = sArr[26]; p.P_Val_28 = sArr[27]; p.In_Word_0 = (cellIdArray.Length > 0) ? cellIdArray[0] : Convert.ToInt16(0); p.In_Word_1 = (cellIdArray.Length > 1) ? cellIdArray[1] : Convert.ToInt16(0); p.In_Word_2 = (cellIdArray.Length > 2) ? cellIdArray[2] : Convert.ToInt16(0); p.In_Word_3 = (cellIdArray.Length > 3) ? cellIdArray[3] : Convert.ToInt16(0); p.In_Word_4 = (cellIdArray.Length > 4) ? cellIdArray[4] : Convert.ToInt16(0); p.In_Word_5 = (itemIdArray.Length > 0) ? itemIdArray[0] : Convert.ToInt16(0); p.In_Word_6 = (itemIdArray.Length > 1) ? itemIdArray[1] : Convert.ToInt16(0); p.In_Word_7 = (itemIdArray.Length > 2) ? itemIdArray[2] : Convert.ToInt16(0); p.In_Word_8 = (itemIdArray.Length > 3) ? itemIdArray[3] : Convert.ToInt16(0); p.In_Word_9 = (itemIdArray.Length > 4) ? itemIdArray[4] : Convert.ToInt16(0); p.In_Word_10 = (itemIdArray.Length > 5) ? itemIdArray[5] : Convert.ToInt16(0); p.In_Word_11 = (generatedBarcodeArray.Length > 0) ? generatedBarcodeArray[0] : Convert.ToInt16(0); p.UseJson = true; p.listenerType = ListenerType.TCP; OnProductionReceived(p); break; case "SETUP": if (jsonData.RequestCode == 4 || jsonData.RequestCode == 16) { var s = new SetupEventArgs(client); s.SenderIp = client.Client.RemoteEndPoint.ToString(); s.CellId = jsonData.CellId; s.ProcessIndicator = jsonData.RequestCode; s.ModelNumber = jsonData.ModelNumber; s.OpNumber = jsonData.OpNumber; s.UseJson = true; s.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); OnSetupReceived(s); } if (jsonData.RequestCode == 5 || jsonData.RequestCode == 17 || jsonData.RequestCode == 6 || jsonData.RequestCode == 18) { var s = new SetupEventArgs(client); s.CellId = jsonData.CellId; s.Component = jsonData.Component; s.AccessId = jsonData.AccessId; s.ProcessIndicator = jsonData.RequestCode; s.ModelNumber = jsonData.ModelNumber; s.OpNumber = jsonData.OpNumber; s.UseJson = true; s.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); OnSetupReceived(s); } break; case "LOGIN": LoginEventArgs l; switch (jsonData.RequestCode) { case 2: case 3: l = new LoginEventArgs(client); l.CellId = jsonData.CellId; l.OperatorID = jsonData.OperatorID; l.ProcessIndicator = jsonData.RequestCode; l.UseJson = true; l.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); OnLoginReceived(l); break; case 17: l = new LoginEventArgs(client); l.CellId = jsonData.CellId; l.ProcessIndicator = jsonData.RequestCode; l.UseJson = true; l.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); OnLoginReceived(l); break; default: //handle wrong data size if (Logger.Enabled) { Logger.Log("invalid data size"); } break; } break; case "SERIAL": var sr = new SerialRequestEventArgs(client); sr.CellId = jsonData.CellId; sr.ProcessIndicator = jsonData.RequestCode; sr.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); OnSerialRequestReceived(sr); break; case "FINALPRINT": var lp = new LabelPrintEventArgs(client); lp.CellId = jsonData.CellId; lp.ItemId = jsonData.ItemId; lp.AlphaCode = lp.ItemId.Substring(0, 2); lp.Weight = jsonData.Weight; lp.RevLevel = jsonData.RevLevel; lp.PrinterIpAddress = jsonData.PrinterIpAddress; lp.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); OnFinalLabelPrintReceived(lp); break; case "INTERIMPRINT": break; default: break; } } catch (Exception) { if (Logger.Enabled) { Logger.Log("could not parse json data"); } } } else { if (Logger.Enabled) { Logger.Log("string received"); } try { //expected format //command,cell id, item id, en id, process ind, success ind, faultCode, var data = Encoding.Default.GetString(receivedBytes).Trim().Split(','); switch (data[0]) { case "PROD": var dArr = new string[14]; if (data.Length > 7) { var copLen = (data.Length > 20) ? 14 : data.Length - 7; dArr = new string[copLen]; Array.Copy(data, 7, dArr, 0, copLen); } short result = 0; var p = new ProductionEventArgs(client); p.CellId = data[1]; p.ItemId = data[2]; p.GeneratedBarcode = (data[3].Length == 2) ? data[3] : ""; short.TryParse(data[4], out result); p.ProcessIndicator = result; short.TryParse(data[5], out result); p.SuccessIndicator = result; short.TryParse(data[6], out result); p.FaultCode = result; p.StatusCode = 0; p.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); var cellIdArray = Util.StringToAbIntArray(p.CellId); var itemIdArray = Util.StringToAbIntArray(p.ItemId); var generatedBarcodeArray = Util.StringToAbIntArray(p.GeneratedBarcode); //Array.Copy(cellIdArray, 0, p.ResponseArray, 0, cellIdArray.Length); //Array.Copy(itemIdArray, 0, p.ResponseArray, 5, itemIdArray.Length); //Array.Copy(generatedBarcodeArray, 0, p.ResponseArray, 11, generatedBarcodeArray.Length); short[] sArr = new short[28]; var pointer = 0; for (var di = 0; di < dArr.Length; di++) { var s1 = dArr[di]; if (s1.Contains(".")) { double.TryParse(s1, out double dResult); var temp1 = Math.Truncate(dResult); var temp2 = dResult - temp1; var temp3 = temp2 * 100; var myArr = s1.Split('.'); //short.TryParse(myArr[0], out short prodShort); sArr[pointer] = Convert.ToInt16(temp1); pointer++; //short.TryParse(myArr[1], out short prodShort1); sArr[pointer] = Convert.ToInt16(temp3); pointer++; } else { short.TryParse(s1, out short prodShort); sArr[pointer] = prodShort; pointer++; sArr[pointer] = 0; pointer++; } } p.P_Val_1 = sArr[0]; p.P_Val_2 = sArr[1]; p.P_Val_3 = sArr[2]; p.P_Val_4 = sArr[3]; p.P_Val_5 = sArr[4]; p.P_Val_6 = sArr[5]; p.P_Val_7 = sArr[6]; p.P_Val_8 = sArr[7]; p.P_Val_9 = sArr[8]; p.P_Val_10 = sArr[9]; p.P_Val_11 = sArr[10]; p.P_Val_12 = sArr[11]; p.P_Val_13 = sArr[12]; p.P_Val_14 = sArr[13]; p.P_Val_15 = sArr[14]; p.P_Val_16 = sArr[15]; p.P_Val_17 = sArr[16]; p.P_Val_18 = sArr[17]; p.P_Val_19 = sArr[18]; p.P_Val_20 = sArr[19]; p.P_Val_21 = sArr[20]; p.P_Val_22 = sArr[21]; p.P_Val_23 = sArr[22]; p.P_Val_24 = sArr[23]; p.P_Val_25 = sArr[24]; p.P_Val_26 = sArr[25]; p.P_Val_27 = sArr[26]; p.P_Val_28 = sArr[27]; p.In_Word_0 = (cellIdArray.Length > 0) ? cellIdArray[0] : Convert.ToInt16(0); p.In_Word_1 = (cellIdArray.Length > 1) ? cellIdArray[1] : Convert.ToInt16(0); p.In_Word_2 = (cellIdArray.Length > 2) ? cellIdArray[2] : Convert.ToInt16(0); p.In_Word_3 = (cellIdArray.Length > 3) ? cellIdArray[3] : Convert.ToInt16(0); p.In_Word_4 = (cellIdArray.Length > 4) ? cellIdArray[4] : Convert.ToInt16(0); p.In_Word_5 = (itemIdArray.Length > 0) ? itemIdArray[0] : Convert.ToInt16(0); p.In_Word_6 = (itemIdArray.Length > 1) ? itemIdArray[1] : Convert.ToInt16(0); p.In_Word_7 = (itemIdArray.Length > 2) ? itemIdArray[2] : Convert.ToInt16(0); p.In_Word_8 = (itemIdArray.Length > 3) ? itemIdArray[3] : Convert.ToInt16(0); p.In_Word_9 = (itemIdArray.Length > 4) ? itemIdArray[4] : Convert.ToInt16(0); p.In_Word_10 = (itemIdArray.Length > 5) ? itemIdArray[5] : Convert.ToInt16(0); p.In_Word_11 = (generatedBarcodeArray.Length > 0) ? generatedBarcodeArray[0] : Convert.ToInt16(0); p.UseJson = false; OnProductionReceived(p); break; case "SETUP": if (data.Length == 5) { var s = new SetupEventArgs(client); s.CellId = data[1]; short.TryParse(data[2], out short setupShort); s.ProcessIndicator = setupShort; s.ModelNumber = data[3]; s.OpNumber = data[4]; s.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); OnSetupReceived(s); } if (data.Length == 7) { var s = new SetupEventArgs(client); s.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); s.CellId = data[1]; s.Component = data[2]; short.TryParse(data[3], out short setupShort); s.AccessId = setupShort; short.TryParse(data[4], out short setupShort1); s.ProcessIndicator = setupShort1; s.ModelNumber = data[5]; s.OpNumber = data[6]; OnSetupReceived(s); } // get error for wrong length break; case "LOGIN": LoginEventArgs l; switch (data.Length) { case 4: l = new LoginEventArgs(client); l.CellId = data[1]; l.OperatorID = data[2]; short.TryParse(data[3], out short loginResult); l.ProcessIndicator = loginResult; l.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); OnLoginReceived(l); break; case 3: l = new LoginEventArgs(client); l.CellId = data[1]; short.TryParse(data[2], out short loginResult1); l.ProcessIndicator = loginResult1; l.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); OnLoginReceived(l); break; default: if (Logger.Enabled) { Logger.Log("invalid data size"); } break; } break; case "SERIAL": var sr = new SerialRequestEventArgs(client); sr.CellId = data[1]; short.TryParse(data[2], out short res1); sr.ProcessIndicator = res1; sr.SenderIp = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString(); OnSerialRequestReceived(sr); break; default: if (Logger.Enabled) { Logger.Log("invalid format"); } break; } } catch (Exception) { throw; } } } } catch { if (Logger.Enabled) { Logger.Log("connection error"); } } if (client.Connected) { client.GetStream().Close(); } client.Close(); stream.Flush(); }
private void ParseSetupTransaction(TcpClient client, short[] dataArray, string tagName) { var e = new SetupEventArgs(client); e.InTagName = tagName; var bytes = new List <byte>(); for (int i = 0; i < 5; i++) { var b1 = (byte)((dataArray[i] & 0xff00) >> 8); var b2 = (byte)(dataArray[i] & 0x00ff); if (b1 != 0) { bytes.Add(b1); } if (b2 != 0) { bytes.Add(b2); } } e.CellId = Encoding.Default.GetString(bytes.ToArray()); if (dataArray[18] == 5 || dataArray[18] == 6 || dataArray[18] == 17 || dataArray[18] == 18) { bytes = new List <byte>(); for (int i = 5; i < 12; i++) { var b1 = (byte)((dataArray[i] & 0xff00) >> 8); var b2 = (byte)(dataArray[i] & 0x00ff); if (b1 != 0) { bytes.Add(b1); } if (b2 != 0) { bytes.Add(b2); } } e.Component = Encoding.Default.GetString(bytes.ToArray()); e.AccessId = dataArray[16].ToString(); } e.Request = dataArray[18].ToString(); bytes = new List <byte>(); for (int i = 22; i < 30; i++) { var b1 = (byte)((dataArray[i] & 0xff00) >> 8); var b2 = (byte)(dataArray[i] & 0x00ff); if (b1 != 0) { bytes.Add(b1); } if (b2 != 0) { bytes.Add(b2); } } e.ModelNumber = Encoding.Default.GetString(bytes.ToArray()); bytes = new List <byte>(); for (int i = 30; i < 32; i++) { var b1 = (byte)((dataArray[i] & 0xff00) >> 8); var b2 = (byte)(dataArray[i] & 0x00ff); if (b1 != 0) { bytes.Add(b1); } if (b2 != 0) { bytes.Add(b2); } } e.OpNumber = Encoding.Default.GetString(bytes.ToArray()); if (e.InTagName.Contains(":")) { e.listenerType = ListenerType.PCCC; } else { e.listenerType = ListenerType.EIP; } OnSetupReceived(e); }