Skip to content

Commit b98cd24

Browse files
TPC Communications upgrade
Added TPC Capability to send out to a client.
1 parent d787238 commit b98cd24

File tree

4 files changed

+359
-13
lines changed

4 files changed

+359
-13
lines changed

Box_wall_test.unity

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10219,6 +10219,58 @@ MonoBehaviour:
1021910219
distance: 9
1022010220
additive_ratio: 0.25
1022110221
debug_vector: {x: 0, y: 0, z: 0}
10222+
--- !u!1 &951389536
10223+
GameObject:
10224+
m_ObjectHideFlags: 0
10225+
m_PrefabParentObject: {fileID: 0}
10226+
m_PrefabInternal: {fileID: 0}
10227+
serializedVersion: 5
10228+
m_Component:
10229+
- component: {fileID: 951389538}
10230+
- component: {fileID: 951389537}
10231+
- component: {fileID: 951389539}
10232+
m_Layer: 0
10233+
m_Name: TCP_Server
10234+
m_TagString: Untagged
10235+
m_Icon: {fileID: 0}
10236+
m_NavMeshLayer: 0
10237+
m_StaticEditorFlags: 0
10238+
m_IsActive: 1
10239+
--- !u!114 &951389537
10240+
MonoBehaviour:
10241+
m_ObjectHideFlags: 0
10242+
m_PrefabParentObject: {fileID: 0}
10243+
m_PrefabInternal: {fileID: 0}
10244+
m_GameObject: {fileID: 951389536}
10245+
m_Enabled: 0
10246+
m_EditorHideFlags: 0
10247+
m_Script: {fileID: 11500000, guid: 110bb5f1aee36d24dbb3a15c4f7d7389, type: 3}
10248+
m_Name:
10249+
m_EditorClassIdentifier:
10250+
--- !u!4 &951389538
10251+
Transform:
10252+
m_ObjectHideFlags: 0
10253+
m_PrefabParentObject: {fileID: 0}
10254+
m_PrefabInternal: {fileID: 0}
10255+
m_GameObject: {fileID: 951389536}
10256+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
10257+
m_LocalPosition: {x: 5.724185, y: 11.04316, z: -8.652451}
10258+
m_LocalScale: {x: 1, y: 1, z: 1}
10259+
m_Children: []
10260+
m_Father: {fileID: 0}
10261+
m_RootOrder: 8
10262+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
10263+
--- !u!114 &951389539
10264+
MonoBehaviour:
10265+
m_ObjectHideFlags: 0
10266+
m_PrefabParentObject: {fileID: 0}
10267+
m_PrefabInternal: {fileID: 0}
10268+
m_GameObject: {fileID: 951389536}
10269+
m_Enabled: 1
10270+
m_EditorHideFlags: 0
10271+
m_Script: {fileID: 11500000, guid: f313b8aea7aea7e4cb8fc083dcdd9b96, type: 3}
10272+
m_Name:
10273+
m_EditorClassIdentifier:
1022210274
--- !u!1 &959521295
1022310275
GameObject:
1022410276
m_ObjectHideFlags: 0

Utillity Scripts/TCPTestServer.cs

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
//Code Adopt from https://gist.github.com/danielbierwirth/0636650b005834204cb19ef5ae6ccedb
2+
3+
using System;
4+
using System.Collections;
5+
using System.Collections.Generic;
6+
using System.Net;
7+
using System.Net.Sockets;
8+
using System.Text;
9+
using System.Threading;
10+
using UnityEngine;
11+
12+
public class TCPTestServer : MonoBehaviour
13+
{
14+
#region private members
15+
/// <summary>
16+
/// TCPListener to listen for incomming TCP connection
17+
/// requests.
18+
/// </summary>
19+
private TcpListener tcpListener;
20+
/// <summary>
21+
/// Background thread for TcpServer workload.
22+
/// </summary>
23+
private Thread tcpListenerThread;
24+
/// <summary>
25+
/// Create handle to connected tcp client.
26+
/// </summary>
27+
private TcpClient connectedTcpClient;
28+
#endregion
29+
public string IPC_comms_message = "null_msg";
30+
public string IPC_output = "null";
31+
32+
// Use this for initialization
33+
void Start()
34+
{
35+
// Start TcpServer background thread
36+
tcpListenerThread = new Thread(new ThreadStart(ListenForIncommingRequests));
37+
tcpListenerThread.IsBackground = true;
38+
tcpListenerThread.Start();
39+
}
40+
41+
// Update is called once per frame
42+
void Update()
43+
{
44+
//if (Input.GetKeyDown(KeyCode.Space))
45+
//{
46+
SendMessage(IPC_comms_message);
47+
//}
48+
}
49+
50+
/// <summary>
51+
/// Runs in background TcpServerThread; Handles incomming TcpClient requests
52+
/// </summary>
53+
private void ListenForIncommingRequests()
54+
{
55+
try
56+
{
57+
// Create listener on localhost port 8052.
58+
tcpListener = new TcpListener(IPAddress.Parse("127.0.0.1"), 27015);
59+
tcpListener.Start();
60+
Debug.Log("Server is listening");
61+
Byte[] bytes = new Byte[1024];
62+
while (true)
63+
{
64+
connectedTcpClient = tcpListener.AcceptTcpClient();
65+
{
66+
// Get a stream object for reading
67+
using (NetworkStream stream = connectedTcpClient.GetStream())
68+
{
69+
int length;
70+
// Read incomming stream into byte arrary.
71+
while ((length = stream.Read(bytes, 0, bytes.Length)) != 0)
72+
{
73+
var incommingData = new byte[length];
74+
Array.Copy(bytes, 0, incommingData, 0, length);
75+
// Convert byte array to string message.
76+
string clientMessage = Encoding.ASCII.GetString(incommingData);
77+
Debug.Log("client message received as: " + clientMessage);
78+
IPC_output = clientMessage;
79+
}
80+
}
81+
}
82+
}
83+
}
84+
catch (SocketException socketException)
85+
{
86+
Debug.Log("SocketException " + socketException.ToString());
87+
}
88+
}
89+
/// <summary>
90+
/// Send message to client using socket connection.
91+
/// </summary>
92+
private void SendMessage(string serverMessage)
93+
{
94+
if (connectedTcpClient == null)
95+
{
96+
return;
97+
}
98+
99+
try
100+
{
101+
102+
// Get a stream object for writing.
103+
NetworkStream stream = connectedTcpClient.GetStream();
104+
if (stream.CanWrite)
105+
{
106+
//Debug.Log("Hi, I'm a robot!");
107+
//string serverMessage = "This is a message from your server.";
108+
// Convert string message to byte array.
109+
byte[] serverMessageAsByteArray = Encoding.ASCII.GetBytes(serverMessage);
110+
// Write byte array to socketConnection stream.
111+
stream.Write(serverMessageAsByteArray, 0, serverMessageAsByteArray.Length);
112+
Debug.Log("Server sent his message - should be received by client");
113+
}
114+
///Debug.Log("Hi, I'm a job!");
115+
}
116+
catch (SocketException socketException)
117+
{
118+
Debug.Log("Socket exception: " + socketException);
119+
}
120+
}
121+
}

Utillity Scripts/TCPTestServer.cs.meta

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 173 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,176 @@
1-
using System.Collections;
1+
///////////////////////////////////////////////////////////////////////////////
2+
//
3+
// Original System: UR5_transmission_service.cs
4+
// Subsystem: Human-Robot Interaction
5+
// Workfile: Standalone
6+
// Revision: 1.0 - 6/28/2018
7+
// Author: Esteban Segarra
8+
//
9+
// Description
10+
// ===========
11+
// Server and client for Unity Project will be utilized for the following:
12+
// -Transmitting data for manus and Vive Position
13+
// -Checking manus is active
14+
// -Transmitting the positional data of the UR5 robot
15+
//
16+
///////////////////////////////////////////////////////////////////////////////
17+
using System.Collections;
218
using System.Collections.Generic;
319
using UnityEngine;
20+
using System;
21+
using System.Collections.Generic;
22+
using System.Linq;
23+
using System.Text;
24+
using System.Net;
25+
using System.Net.Sockets;
26+
27+
namespace Web_Socket_for_Manus
28+
{
29+
public class UR5_transmission_serivce : MonoBehaviour
30+
{
31+
const string DEFAULT_SERVER = "localhost";
32+
const int DEFAULT_PORT = 27015;
33+
34+
//Server socket stuff
35+
System.Net.Sockets.Socket serverSocket;
36+
System.Net.Sockets.SocketInformation serverSocketInfo;
37+
38+
//Client socket stuff
39+
System.Net.Sockets.Socket clientSocket;
40+
System.Net.Sockets.SocketInformation clientSocketInfo;
41+
42+
43+
44+
public string Startup()
45+
{
46+
// The chat server always starts up on the localhost, using the default port
47+
IPHostEntry hostInfo = Dns.GetHostByName(DEFAULT_SERVER);
48+
IPAddress serverAddr = hostInfo.AddressList[0];
49+
var serverEndPoint = new IPEndPoint(serverAddr, DEFAULT_PORT);
50+
51+
// Create a listener socket and bind it to the endpoint
52+
serverSocket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);
53+
serverSocket.Bind(serverEndPoint);
54+
55+
return serverSocket.LocalEndPoint.ToString();
56+
}
57+
58+
public string Listen()
59+
{
60+
int backlog = 0;
61+
try
62+
{
63+
serverSocket.Listen(backlog);
64+
return "Server listening";
65+
}
66+
catch (Exception ex)
67+
{
68+
return "Failed to listen" + ex.ToString();
69+
}
70+
}
71+
72+
73+
public bool SendData(string textdata)
74+
{
75+
if (string.IsNullOrEmpty(textdata))
76+
{
77+
return false;
78+
}
79+
80+
if (textdata.Trim().ToLower() == "exit")
81+
{
82+
return true;
83+
}
84+
85+
// The chat client always starts up on the localhost, using the default port
86+
IPHostEntry hostInfo = Dns.GetHostByName(DEFAULT_SERVER);
87+
IPAddress serverAddr = hostInfo.AddressList[0];
88+
var clientEndPoint = new IPEndPoint(serverAddr, DEFAULT_PORT);
89+
90+
// Create a client socket and connect it to the endpoint
91+
clientSocket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp);
92+
clientSocket.Connect(clientEndPoint);
93+
94+
byte[] byData = System.Text.Encoding.ASCII.GetBytes(textdata);
95+
clientSocket.Send(byData);
96+
clientSocket.Close();
97+
98+
return false;
99+
}
100+
101+
public string ReceiveData()
102+
{
103+
System.Net.Sockets.Socket receiveSocket;
104+
byte[] buffer = new byte[256];
105+
106+
receiveSocket = serverSocket.Accept();
107+
108+
var bytesrecd = receiveSocket.Receive(buffer);
109+
110+
receiveSocket.Close();
111+
112+
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
113+
114+
return encoding.GetString(buffer);
115+
}
116+
117+
118+
Program prog;
119+
120+
void Start() {
121+
prog = new Program();
122+
prog.start_up();
123+
}
124+
125+
void Update()
126+
{
127+
prog.Main();
128+
}
129+
}
130+
131+
class Program
132+
{
133+
string serverInfo;
134+
135+
public void start_up()
136+
{
137+
serverInfo = server.Startup();
138+
Console.WriteLine("Server started at:" + serverInfo);
139+
Debug.Log("Server started at:" + serverInfo);
140+
}
141+
142+
143+
public void listen_me()
144+
{
145+
serverInfo = server.Listen();
146+
Console.WriteLine(serverInfo);
147+
148+
}
149+
150+
static UR5_transmission_serivce server = new UR5_transmission_serivce();
151+
public void Main()
152+
{
153+
//string remoteServerName = server.ParseArgs(args);
154+
155+
156+
157+
listen_me();
158+
159+
160+
161+
//string datatosend = Console.ReadLine();
162+
string datatosend = "I am spam \n";
163+
server.SendData(datatosend);
164+
165+
serverInfo = server.ReceiveData();
166+
Console.WriteLine(serverInfo);
167+
168+
Debug.Log(serverInfo);
169+
170+
Console.ReadLine();
171+
//exit
172+
}
173+
}
174+
4175

5-
public class UR5_transmission_serivce : MonoBehaviour {
6-
7-
// Use this for initialization
8-
void Start () {
9-
10-
}
11-
12-
// Update is called once per frame
13-
void Update () {
14-
15-
}
16-
}
176+
}

0 commit comments

Comments
 (0)