mirror of
https://github.com/UGA-Innovation-Factory/UR10-Sentry.git
synced 2026-02-09 02:17:01 +00:00
robot looks at you
This commit is contained in:
69
Communication/SocketConnection.py
Normal file
69
Communication/SocketConnection.py
Normal file
@@ -0,0 +1,69 @@
|
||||
import socket
|
||||
|
||||
|
||||
class SocketConnection:
|
||||
"""
|
||||
Defines a simple interface for connecting to a socket
|
||||
"""
|
||||
def __init__(self, host, port):
|
||||
"""
|
||||
:param host: The IP to connect with
|
||||
:param port: Port to connect with
|
||||
"""
|
||||
self.host = host
|
||||
self.port = port
|
||||
self.opened = False
|
||||
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
||||
def connect(self):
|
||||
"""
|
||||
Opens a socket connection with the robot for communication.
|
||||
:return:
|
||||
"""
|
||||
if self.opened:
|
||||
self.disconnect()
|
||||
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
self.s.settimeout(1)
|
||||
|
||||
try:
|
||||
self.s.connect((self.host, self.port))
|
||||
self.opened = True
|
||||
except OSError as error:
|
||||
print("Connecting OS error: {0}".format(error))
|
||||
return
|
||||
return self.s
|
||||
|
||||
def send(self, message):
|
||||
"""
|
||||
Send data over the socket connection
|
||||
:param message: The data to send
|
||||
:return:
|
||||
"""
|
||||
total_send = 0
|
||||
while total_send < len(message):
|
||||
send = self.s.send(message[total_send:])
|
||||
if send == 0:
|
||||
raise RuntimeError("socket connection broken")
|
||||
total_send = total_send + send
|
||||
self.s.send(message)
|
||||
|
||||
def receive(self):
|
||||
"""
|
||||
Recieve data over the socket connection
|
||||
:return:
|
||||
"""
|
||||
response = self.s.recv(1024)
|
||||
if len(response) == 0:
|
||||
raise RuntimeError("socket connection broken")
|
||||
return response
|
||||
|
||||
def disconnect(self):
|
||||
"""
|
||||
Closes the socket connection
|
||||
:return:
|
||||
"""
|
||||
try:
|
||||
self.s.close()
|
||||
except OSError as error:
|
||||
print("Disconnecting OS error: {0}".format(error))
|
||||
return
|
||||
Reference in New Issue
Block a user