robot looks at you

This commit is contained in:
2024-07-19 14:35:10 -04:00
parent 19bd8a2f6f
commit 482d05f252
12 changed files with 1311 additions and 0 deletions

View 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