private static byte[] AddPayloadHeader(CrossCommand crossCommand, byte[] payload) { //Debug.WriteLine("### Command sending: " + crossCommand); var payloadLength = payload.Length; var header = new List <byte> { SYNC_MASK, SYNC_MASK, (byte)crossCommand, (byte)(payloadLength >> 16), (byte)((payloadLength >> 8) & 0x00ff), (byte)(payloadLength & 0x0000ff) }; var fullPayload = header.Concat(payload).ToArray(); //if (crossCommand != CrossCommand.CapturedImage && // crossCommand != CrossCommand.PreviewFrame) //{ // Debug.WriteLine("### PAYLOAD SENT: " + string.Join(",", fullPayload)); //} return(fullPayload); }
public static int Main(String[] args) { Console.Title = Robot + "CrossCommServer"; CrossCommand crossServer = new CrossCommand(); Object Cross = new Object(); Console.WriteLine("initialization"); crossServer.Init(Cross); Console.WriteLine("trying to connect to CrossComm"); crossServer.ConnectToCross(connectionName, connectionMode); bool done = false; while (crossServer.CrossIsConnected) { Console.WriteLine("Create TCP listener..."); TcpListener listener = new TcpListener(ipKUKA_PC, portNum); listener.Start(); byte[] byteReceived = new byte[1024]; int i_bytesReceived; while (!done) { Console.Write("Waiting for connection..."); TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("Connection accepted."); NetworkStream ns_ReadWriteVariables = client.GetStream(); try { StringReceived = ""; numOfStringsReceived = 0; i_bytesReceived = ns_ReadWriteVariables.Read(byteReceived, 0, byteReceived.Length); StringReceived = Encoding.ASCII.GetString(byteReceived, 0, i_bytesReceived); Console.WriteLine("String Received: " + StringReceived); if (StringReceived != "") { a_StringReceived = StringReceived.Split(','); firstString = a_StringReceived[0]; VariableToWriteRead = a_StringReceived[1]; ValueToWrite = a_StringReceived[2]; numOfStringsReceived = Convert.ToInt32(a_StringReceived[3]); Console.WriteLine(a_StringReceived[0] + a_StringReceived[1] + a_StringReceived[2] + a_StringReceived[3]); Console.WriteLine("Number Of variables: " + numOfStringsReceived.ToString()); // Writing to the KRC1 if (firstString == "write") { if (VariableToWriteRead == "empty" || ValueToWrite == "empty") { continue; } else if ((!(VariableToWriteRead == "empty")) && (!(ValueToWrite == "empty"))) { // KOD ZA PISANJE U KUKU crossServer.SetVar(VariableToWriteRead, ValueToWrite); } Console.WriteLine("WRITING..." + " " + DateTime.Now.TimeOfDay.ToString()); Console.WriteLine(VariableToWriteRead + " " + ValueToWrite + " " + DateTime.Now.TimeOfDay.ToString()); } // Reading from the KRC1 if (firstString == "read") { String[] a_readVariables = new String[numOfStringsReceived]; String[] a_readValues = new String[numOfStringsReceived]; String[] a_readVarValues_ToSendBackToClient = new String[numOfStringsReceived]; String readValues = ""; Console.WriteLine("READING... " + " " + DateTime.Now.TimeOfDay.ToString()); if (VariableToWriteRead == "empty") { continue; } else if (!(VariableToWriteRead == "empty")) { //citanje sa KUKE crossServer.ShowVar(VariableToWriteRead, ref ValueReadFromKUKA); } //Sending back values which have been read a_readVarValues_ToSendBackToClient[0] = "readFromServer,"; a_readVarValues_ToSendBackToClient[1] = VariableToWriteRead + ","; a_readVarValues_ToSendBackToClient[2] = ValueReadFromKUKA + ","; a_readVarValues_ToSendBackToClient[3] = numOfStringsReceived.ToString() + ","; Console.WriteLine(VariableToWriteRead + " " + ValueReadFromKUKA + " " + DateTime.Now.TimeOfDay.ToString()); foreach (String s in a_readVarValues_ToSendBackToClient) { readValues += s; } Console.WriteLine("Sending back read values... " + DateTime.Now.TimeOfDay.ToString()); byte[] byteReadValues = Encoding.ASCII.GetBytes(readValues); try { ns_ReadWriteVariables.Write(byteReadValues, 0, byteReadValues.Length); ns_ReadWriteVariables.Close(); client.Close(); } catch (Exception e) { Console.WriteLine(e.ToString()); } } StringReceived = ""; numOfStringsReceived = 0; } } catch (Exception e) { Console.WriteLine(e.ToString()); Console.ReadLine(); } } listener.Stop(); } return(0); }