##// END OF EJS Templates
First beam is loaded by default after sending the beam file to the control modules.
First beam is loaded by default after sending the beam file to the control modules.

File last commit:

r165:166
r231:232
Show More
library.py
208 lines | 5.9 KiB | text/x-python | PythonLexer
#import tftpy
import socket
class UDPComm:
__HEADER = "ABS"
def __init__(self, ipSource, ipDestino, portDestino, asServer=False):
self.ipSource = ipSource
self.ipDestino = ipDestino
self.portDestino = portDestino
self.addr = (ipDestino,portDestino)
self.answer = "none" #test
self.mode = "none"
self.openSocket(asServer)
def openSocket(self, asServer):
#self.socket_c = socket.socket(AF_INET,SOCK_DGRAM)
self.socket_c = socket.socket(socket.AF_INET, socket.SOCK_DGRAM,0)
# self.socket_c.connect((self.ipDestino, self.portDestino))
if asServer:
self.configAsServer()
self.mode = "server"
else:
self.configAsClient()
self.mode = "client"
def configAsClient(self):
#Configurar broadcast
self.socket_c.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
def configAsServer(self):
self.socket_c.bind(self.addr)
print "\nServer initialized"
def waitData(self, nbytes = 16384):
print "\nWaiting some data"
trama_rx, self.answer = self.socket_c.recvfrom(nbytes)
print "\nThis socket has received some data from:"
print self.answer
ipSource, ipDestino, cmd, data = self.__getTrama(trama_rx)
return ipSource, ipDestino, cmd, data
def sendData(self, cmd, data):
if self.portDestino == 7000:
trama_tx = self.__HEADER + ":" + str(self.ipSource) + ":" + str(self.ipDestino) + ":" + str(cmd) + ":" + str(data) + ":"
else:
trama_tx = data
if self.mode == "client":
destiny = self.addr
else:
destiny = self.answer
# Send messages
if(self.socket_c.sendto(trama_tx, destiny)):
print "Sending message:[" + trama_tx + "] to " + str(destiny)
def __getTrama(self, trama):
FrameList = trama.split(':')
header = FrameList[0]
ipSource = FrameList[1]
ipDestino = FrameList[2]
cmd = FrameList[3]
data = FrameList[4]
trash = FrameList[5]
return ipSource, ipDestino, cmd, data
class TCPComm:
__HEADER = "JRO"
__TYPE = "ABS"
def __init__(self, ipSource, ipDestino, portDestino, asServer=False):
self.ipSource = ipSource
self.ipDestino = ipDestino
self.portDestino = portDestino
self.addr = (ipDestino,portDestino)
self.sc = "none"
self.answer = "none" #test
self.mode = "none"
self.len = 0
self.crc = 0
self.openSocket(asServer)
def openSocket(self, asServer):
#self.socket_c = socket.socket(AF_INET,SOCK_DGRAM)
# self.socket_c = socket.socket()
# self.socket_c.connect((self.ipDestino, self.portDestino))
if asServer:
self.socket_c = socket.socket()
# self.configAsServer()
self.socket_c.bind(self.addr)
self.mode = "server"
else:
# self.configAsClient()
self.mode = "client" #Socket is opened at the sendData function
# def configAsClient(self):
#Buscar broadcast TCP
# self.socket_c.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
# self.socket_c.connect(self.addr)
# pass
# def configAsServer(self):
#
# self.socket_c.bind(self.addr)
def waitData(self, nbytes = 1024):
print "\nWaiting some client."
if self.mode == "client":
# Short data through ethernet
trama_rx = self.socket_c.recv(nbytes)
else:
self.socket_c.listen(1)
sc, addr = self.socket_c.accept()
self.sc = sc
self.answer = addr
# Big data through ethernet
trama_rx = ""
while True:
tmp = self.sc.recv(nbytes)
trama_rx = trama_rx + tmp
if trama_rx[-4:] == "quit":
break
print "\nThis socket has received some data."
ipSource, ipDestino, cmd, data = self.__getTrama(trama_rx)
return ipSource, ipDestino, cmd, data
def sendData(self, cmd, data, id):
trama_tx = self.__HEADER + ":" + self.__TYPE + ":" + str(self.ipSource) + ":" + str(self.ipDestino) + ":" + str(self.len) + ":" + str(cmd) + ":" + str(data) + ":" + str(self.crc)
if self.portDestino == 7000:
trama_tx = trama_tx + ":" + "quit"
# Send messages
if self.mode == "client":
host = "192.168.1." + str(id)
self.socket_c.connect((host, self.portDestino))
self.socket_c.send(trama_tx)
else:
self.sc.send(trama_tx)
print "Sending message:[" + trama_tx + "]"
def __getTrama(self, trama):
FrameList = trama.split(':')
header = FrameList[0]
TypeOfInstrument = FrameList[1]
ipSource = FrameList[2]
ipDestino = FrameList[3]
len = FrameList[4]
cmd = FrameList[5]
data = FrameList[6]
crc = FrameList[7]
trash = FrameList[8]
return ipSource, ipDestino, cmd, data
def close_socket(self):
self.socket_c.close()
def open_socket(self):
self.socket_c = socket.socket()
#class FTPComm:
#
# ftp_servidor = 'ftp.servidor.com'
# ftp_usuario = 'miusuario'
# ftp_clave = 'miclave'
# ftp_raiz = '/public_html'
#
# def __init__(self):
#
# self.client = tftpy.TftpClient(self.ftp_servidor, '69')
#
#
# def sendFile(self, filename):
#
# self.client.upload(filename)
#
#if __name__ == '__main__':
#
# obj = FTPComm()