##// END OF EJS Templates
- Eliminando error por duplicidad con el nombre del paquete: abscontrol y la aplicacion web con django. El nuevo nombre aplicado es bin.
- Eliminando error por duplicidad con el nombre del paquete: abscontrol y la aplicacion web con django. El nuevo nombre aplicado es bin.

File last commit:

r165:166
r165:166
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()