public string ProductionResponse(ProductionEventArgs e) { switch (e.listenerType) { case ListenerType.TCP: return(TcpProductionResponse(e)); case ListenerType.EIP: return(EipProductionResponse(e)); case ListenerType.PCCC: return(PcccProductionResponse(e)); default: return(""); } }
public void PcccProductionResponse(ProductionEventArgs e) { var retArr = new short[50]; if (e.InTagName == "N197:0") { e.OutTagName = "N198:0"; } else if (e.InTagName == "N207:0") { e.OutTagName = "N208:0"; } else if (e.InTagName == "N217:0") { e.OutTagName = "N218:0"; } else { e.OutTagName = e.InTagName; } var cellArr = Util.StringToAbIntArray(e.CellId); Array.Copy(cellArr, 0, retArr, 0, cellArr.Length); var itemArr = Util.StringToAbIntArray(e.ItemId); Array.Copy(itemArr, 0, retArr, 5, itemArr.Length); Array.Copy(e.ResponseArray, 18, retArr, 18, 32); var s = new PlcWriter(); if (e.UsePlcFive) { s.PlcResponse(e.SenderIp, retArr, e.OutTagName); } else if (e.UsePlcMicrologix) { s.MicroLogixResponse(e.SenderIp, retArr, e.OutTagName); } else { s.SlcResponse(e.SenderIp, retArr, e.OutTagName); } }
public string TcpProductionResponse(ProductionEventArgs e) { string responseString; if (e.UseJson) { e.ProcessIndicator = e.ResponseArray[18]; e.SuccessIndicator = e.ResponseArray[19]; e.FaultCode = e.ResponseArray[20]; e.StatusCode = e.ResponseArray[21]; var tempList = new List <string>(); for (var i = 22; i < e.ResponseArray.Length; i++) { tempList.Add(e.ResponseArray[i].ToString()); } e.ProcessHistoryValues = tempList.ToArray(); responseString = Newtonsoft.Json.JsonConvert.SerializeObject(e); } else { var sb = new StringBuilder(); sb.Append(e.CellId + ","); sb.Append(e.ItemId + ","); sb.Append(e.GeneratedBarcode); for (var i = 18; i < e.ResponseArray.Length; i++) { sb.Append(","); sb.Append(e.ResponseArray[i].ToString()); } responseString = sb.ToString(); } var stream = e.Client.GetStream(); var outData = Encoding.ASCII.GetBytes(responseString); if (Logger.Enabled) { Logger.Log(string.Format("Sending: {0}", responseString)); } stream.Write(outData, 0, outData.Length); return("GOOD"); }
private static void L_ProductionReceived(object sender, OESListener.ProductionEventArgs e) { //if (Logger.LogToConsole) //{ // Logger.Log(e.CellId); // Logger.Log(e.ItemId); // Logger.Log(e.GeneratedBarcode); // Logger.Log(e.StatusCode.ToString()); // Logger.Log(e.FaultCode.ToString()); //} e.ResponseArray[18] = e.ProcessIndicator; e.ResponseArray[19] = e.SuccessIndicator; e.ResponseArray[20] = e.FaultCode; e.ResponseArray[21] = 1; e.ResponseArray[22] = e.P_Val_1; e.ResponseArray[23] = e.P_Val_2; e.ResponseArray[24] = e.P_Val_3; e.ResponseArray[25] = e.P_Val_4; e.ResponseArray[26] = e.P_Val_5; e.ResponseArray[27] = e.P_Val_6; e.ResponseArray[28] = e.P_Val_7; e.ResponseArray[29] = e.P_Val_8; e.ResponseArray[30] = e.P_Val_9; e.ResponseArray[31] = e.P_Val_10; e.ResponseArray[32] = e.P_Val_11; e.ResponseArray[33] = e.P_Val_12; e.ResponseArray[34] = e.P_Val_13; e.ResponseArray[35] = e.P_Val_14; e.ResponseArray[36] = e.P_Val_15; e.ResponseArray[37] = e.P_Val_16; e.ResponseArray[38] = e.P_Val_17; e.ResponseArray[39] = e.P_Val_18; e.ResponseArray[40] = e.P_Val_19; e.ResponseArray[41] = e.P_Val_20; e.ResponseArray[42] = e.P_Val_21; e.ResponseArray[43] = e.P_Val_22; var resp = new OESListener.ListenerResponse(); resp.ProductionResponse(e); }
public string EipProductionResponse(ProductionEventArgs e) { var retArr = new short[50]; if (e.InTagName == "N197[0]") { e.OutTagName = "N198[0]"; } else if (e.InTagName == "N207[0]") { e.OutTagName = "N208[0]"; } else if (e.InTagName == "N217[0]") { e.OutTagName = "N218[0]"; } else { e.OutTagName = e.InTagName; } var cellArr = Util.StringToAbIntArray(e.CellId); Array.Copy(cellArr, 0, retArr, 0, cellArr.Length); var itemArr = Util.StringToAbIntArray(e.ItemId); Array.Copy(itemArr, 0, retArr, 5, itemArr.Length); Array.Copy(e.ResponseArray, 18, retArr, 18, 32); var s = new PlcWriter(); var status = s.LogixResponse(e.SenderIp, retArr, e.OutTagName); if (Logger.Enabled) { Logger.Log("listener complete"); } return(status); }
public void ProductionResponse(ProductionEventArgs e) { switch (e.listenerType) { case ListenerType.TCP: TcpProductionResponse(e); break; case ListenerType.EIP: EipProductionResponse(e); break; case ListenerType.PCCC: PcccProductionResponse(e); break; default: break; } }
protected virtual void OnProductionReceived(ProductionEventArgs e) { ProductionReceived?.Invoke(this, e); }
protected void ParseProductionTransaction(string senderIp, short[] dataArray, string tagName, bool usePlcFive = false, bool useMicroLogix = false) { var e = new ProductionEventArgs(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()); bytes = new List <byte>(); for (var i = 5; i < 11; 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.ItemId = Encoding.Default.GetString(bytes.ToArray()); bytes = new List <byte>(); //{ // (byte)((dataArray[11] & 0xff00) >> 8), // (byte)(dataArray[11] & 0x00ff) //}; for (var i = 11; 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.GeneratedBarcode = Encoding.Default.GetString(bytes.ToArray()); e.In_Word_0 = dataArray[0]; e.In_Word_1 = dataArray[1]; e.In_Word_2 = dataArray[2]; e.In_Word_3 = dataArray[3]; e.In_Word_4 = dataArray[4]; e.In_Word_5 = dataArray[5]; e.In_Word_6 = dataArray[6]; e.In_Word_7 = dataArray[7]; e.In_Word_8 = dataArray[8]; e.In_Word_9 = dataArray[9]; e.In_Word_10 = dataArray[10]; e.In_Word_11 = dataArray[11]; e.ProcessIndicator = dataArray[18]; e.SuccessIndicator = dataArray[19]; e.FaultCode = dataArray[20]; e.P_Val_1 = dataArray[22]; e.P_Val_2 = dataArray[23]; e.P_Val_3 = dataArray[24]; e.P_Val_4 = dataArray[25]; e.P_Val_5 = dataArray[26]; e.P_Val_6 = dataArray[27]; e.P_Val_7 = dataArray[28]; e.P_Val_8 = dataArray[29]; e.P_Val_9 = dataArray[30]; e.P_Val_10 = dataArray[31]; e.P_Val_11 = dataArray[32]; e.P_Val_12 = dataArray[33]; e.P_Val_13 = dataArray[34]; e.P_Val_14 = dataArray[35]; e.P_Val_15 = dataArray[36]; e.P_Val_16 = dataArray[37]; e.P_Val_17 = dataArray[38]; e.P_Val_18 = dataArray[39]; e.P_Val_19 = dataArray[40]; e.P_Val_20 = dataArray[41]; e.P_Val_21 = dataArray[42]; e.P_Val_22 = dataArray[43]; e.P_Val_23 = dataArray[44]; e.P_Val_24 = dataArray[45]; e.P_Val_25 = dataArray[46]; e.P_Val_26 = dataArray[47]; e.P_Val_27 = dataArray[48]; e.P_Val_28 = dataArray[49]; OnProductionReceived(e); }
public void EipProductionResponse(ProductionEventArgs e) { var retArr = new short[50]; if (e.InTagName == "N197[0]") { e.OutTagName = "N198[0]"; } else if (e.InTagName == "N207[0]") { e.OutTagName = "N208[0]"; } else if (e.InTagName == "N217[0]") { e.OutTagName = "N218[0]"; } else { e.OutTagName = e.InTagName; } var cellArr = Util.StringToAbIntArray(e.CellId); Array.Copy(cellArr, 0, retArr, 0, cellArr.Length); var itemArr = Util.StringToAbIntArray(e.ItemId); Array.Copy(itemArr, 0, retArr, 5, itemArr.Length); Array.Copy(e.ResponseArray, 18, retArr, 18, 32); //retArr[18] = Convert.ToInt16(e.ProcessIndicator); //retArr[19] = Convert.ToInt16(e.SuccessIndicator); //retArr[20] = 0; //retArr[21] = Convert.ToInt16(e.FaultCode); //retArr[22] = e.P_Val_1; //retArr[23] = e.P_Val_2; //retArr[24] = e.P_Val_3; //retArr[25] = e.P_Val_4; //retArr[26] = e.P_Val_5; //retArr[27] = e.P_Val_6; //retArr[28] = e.P_Val_7; //retArr[29] = e.P_Val_8; //retArr[30] = e.P_Val_9; //retArr[31] = e.P_Val_10; //retArr[32] = e.P_Val_11; //retArr[33] = e.P_Val_12; //retArr[34] = e.P_Val_13; //retArr[35] = e.P_Val_14; //retArr[36] = e.P_Val_15; //retArr[37] = e.P_Val_16; //retArr[38] = e.P_Val_17; //retArr[39] = e.P_Val_18; //retArr[40] = e.P_Val_19; //retArr[41] = e.P_Val_20; //retArr[42] = e.P_Val_21; //retArr[43] = e.P_Val_22; //retArr[44] = e.P_Val_23; //retArr[45] = e.P_Val_24; //retArr[46] = e.P_Val_25; //retArr[47] = e.P_Val_26; //retArr[48] = e.P_Val_27; //retArr[49] = e.P_Val_28; var s = new PlcWriter(); s.LogixResponse(e.SenderIp, retArr, e.OutTagName); if (Logger.Enabled) { Logger.Log("listener complete"); } }
public void TcpProductionResponse(ProductionEventArgs e) { string responseString; if (e.UseJson) { e.ProcessIndicator = e.ResponseArray[18]; e.SuccessIndicator = e.ResponseArray[19]; e.FaultCode = e.ResponseArray[20]; e.StatusCode = e.ResponseArray[21]; var tempList = new List <string>(); for (var i = 22; i < e.ResponseArray.Length; i++) { tempList.Add(e.ResponseArray[i].ToString()); } e.ProcessHistoryValues = tempList.ToArray(); responseString = Newtonsoft.Json.JsonConvert.SerializeObject(e); } else { var sb = new StringBuilder(); sb.Append(e.CellId); sb.Append(","); sb.Append(e.ItemId); sb.Append(","); sb.Append(e.GeneratedBarcode); sb.Append(","); //sb.Append(e.ProcessIndicator); //sb.Append(e.ResponseArray[18].ToString()); //sb.Append(","); ////sb.Append(e.SuccessIndicator); //sb.Append(e.ResponseArray[19].ToString()); //sb.Append(","); ////sb.Append(e.FaultCode); //sb.Append(e.ResponseArray[20].ToString()); //sb.Append(","); ////sb.Append(e.StatusCode); //sb.Append(e.ResponseArray[21].ToString()); for (var i = 18; i < e.ResponseArray.Length; i++) { sb.Append(","); sb.Append(e.ResponseArray[i].ToString()); } //foreach (var item in e.ProcessHistoryValues) //{ // sb.Append(","); // sb.Append(item); //} //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[24] + (e.ResponseArray[25] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[26] + (e.ResponseArray[27] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[28] + (e.ResponseArray[29] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[30] + (e.ResponseArray[31] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[32] + (e.ResponseArray[33] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[34] + (e.ResponseArray[35] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[36] + (e.ResponseArray[37] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[38] + (e.ResponseArray[39] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[40] + (e.ResponseArray[41] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[42] + (e.ResponseArray[43] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[44] + (e.ResponseArray[45] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[46] + (e.ResponseArray[47] * .01)))); //sb.Append(","); //sb.Append(string.Format("{0}", (e.ResponseArray[48] + (e.ResponseArray[49] * .01)))); responseString = sb.ToString(); } var stream = e.Client.GetStream(); var outData = Encoding.ASCII.GetBytes(responseString); stream.Write(outData, 0, outData.Length); }
private void TcpListener_ProductionReceived(object sender, ProductionEventArgs e) { OnProductionReceived(e); }
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 ParseProductionTransaction(TcpClient client, short[] dataArray, string tagName) { var e = new ProductionEventArgs(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()); bytes = new List <byte>(); for (var i = 5; i < 11; 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.ItemId = Encoding.Default.GetString(bytes.ToArray()); bytes = new List <byte> { (byte)((dataArray[11] & 0xff00) >> 8), (byte)(dataArray[11] & 0x00ff) }; e.GeneratedBarcode = Encoding.Default.GetString(bytes.ToArray()); e.Request = dataArray[18].ToString(); e.Status = dataArray[19].ToString(); e.FailureCode = dataArray[20].ToString(); for (var i = 22; i < dataArray.Length; i++) { if (i % 2 == 0) { e.ProcessHistoryValues.Add((dataArray[i] + (dataArray[i + 1] * .01)).ToString()); } } if (e.InTagName.Contains(":")) { e.listenerType = ListenerType.PCCC; } else { e.listenerType = ListenerType.EIP; } OnProductionReceived(e); }