##// 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
library3.py
537 lines | 17.2 KiB | text/x-python | PythonLexer
# Needed for the FilesStuff class
import os
import numpy as np
# Needed for the TCPComm class
import socket
class TCPComm:
__HEADER = "JRO"
__TYPE = "ABS"
def __init__(self, ipSource, iDSource, ipDestino, iDDestino, portDestino, asServer=False):
self.ipSource = ipSource
self.iDSource = iDSource
self.ipDestino = ipDestino
self.iDDestino = iDDestino
self.portDestino = portDestino
self.addr = (ipDestino,portDestino)
self.sc = "none"
self.answer = "none" #test
self.asServer = False
self.len = "000000"
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.asServer = True
else:
# self.configAsClient()
self.asServer = False #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):
if self.asServer == True:
trama_rx, l = self.waitAsServer()
else:
trama_rx, l = self.waitAsClient()
ipSource, ipDestino, cmd, data = self.__getTrama(trama_rx, l)
return ipSource, ipDestino, cmd, data
def waitAsClient2(self, nbytes = 1024):
print "\nWaiting the server."
# Short data through ethernet
trama_rx = self.socket_c.recv(nbytes)
print "\nThis socket has received this data: " + str(trama_rx)
return trama_rx
def waitAsServer2(self, nbytes = 1024):
print "\nWaiting some client."
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 from: " + str(self.answer)
return trama_rx
def waitAsServer(self, nbytes = 1024):
print "\nWaiting some client."
self.socket_c.listen(1)
sc, addr = self.socket_c.accept()
self.sc = sc
self.answer = addr
# Big data through ethernet
cnt = 0;
first = 0;
trama_rx = ""
while True:
tmp = self.sc.recv(nbytes)
trama_rx = trama_rx + tmp
cnt = len(trama_rx)
if first == 0:
first = 1
lng = int(trama_rx[20:26])
frm_lng= lng + 31 # 31 bytes are fixed and added to the data size to get the frame size
if cnt == frm_lng:
break
print "\nThis socket has received some data from: " + str(self.answer)
return trama_rx, lng
def waitAsClient(self, nbytes = 1024):
print "\nWaiting the server."
# Short data through ethernet
try:
trama_rx = self.socket_c.recv(nbytes)
lng = int(trama_rx[20:26])
except:
print "Waiting error"
trama_rx = "Error"
lng = 0
else:
print "\nThis socket has received this data: " + str(trama_rx)
return trama_rx, lng
def sendData2(self, cmd, data, ipDestino):
trama_tx = self.__HEADER + ":" + self.__TYPE + ":" + str(self.ipSource) + ":" + str(ipDestino) + \
":" + str(self.len) + ":" + str(cmd) + ":" + str(data) + ":" + str(self.crc) + ":" + "quit"
if self.asServer == True:
self.SendAsServer(trama_tx)
else:
self.SendAsClient(ipDestino, trama_tx)
def sendData(self, cmd, data, ipDestino):
trama_tx = self.__HEADER + self.__TYPE + self.iDSource + \
self.iDDestino + self.len + str(cmd) + str(data) + self.crc
self.len = self.int2str(len(data))
trama_tx = self.__HEADER + self.__TYPE + self.iDSource + \
self.iDDestino + self.len + str(cmd) + str(data) + self.crc
if self.asServer == True:
self.SendAsServer(trama_tx)
else:
self.SendAsClient(ipDestino, trama_tx)
def SendAsServer(self, trama_tx):
self.sc.send(trama_tx)
print "Sending message:[" + trama_tx + "] to: " + str(self.answer)
def SendAsClient(self, ipDestino, trama_tx):
try:
self.socket_c.connect((ipDestino, self.portDestino))
except:
print "Connection error with:" + ipDestino
else:
self.socket_c.send(trama_tx)
print "Sending message:[" + trama_tx + "] to: " + ipDestino
def __getTrama2(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 __getTrama(self, trama, l):
header = trama[0:3]
TypeOfInstrument = trama[3:6]
ipSource = trama[6:13]
ipDestino = trama[13:20]
len = trama[20:26]
cmd = trama[26:30]
data = trama[30:30+int(l)]
crc = trama[30+ int(l):]
return ipSource, ipDestino, cmd, data
def close_socket(self):
self.socket_c.close()
def open_socket(self):
self.socket_c = socket.socket()
def int2str(self, n):
str_n = str(n)
l_n = len(str_n)
if l_n == 1:
str_n = "00000" + str_n
elif l_n == 2:
str_n = "0000" + str_n
elif l_n == 3:
str_n = "000" + str_n
elif l_n == 4:
str_n = "00" + str_n
elif l_n == 5:
str_n = "0" + str_n
return str_n
class FilesStuff():
def lst2string(self, lst):
string=''
for i in lst:
string=string+i
return string
def string2lst(self, string):
lst = []
for i in string:
lst.append(i)
return lst
def file1(self, filename, type):
lst = self.string2lst(filename)
fin = -1
t = len(lst)
for i in np.arange(-1,-t,-1):
if lst[i]=='/':
fin=i
break
if type == '1':
nombre2 = lst[fin+1:]
nombre2[-1]='s'
nombre2 = self.lst2string(nombre2)
return nombre2
if type == '2':
nombre2 = lst[fin+1:]
nombre2[-1]='1'
nombre2 = self.lst2string(nombre2)
return nombre2
def EliminaSaltoDeLinea(self,cadena):
i = 0
for elemento in cadena:
if elemento =='\n' or elemento =='\r':
pass
else:
i=i+1
return cadena [:i]
def NumeroDeExperimentos(self, path):
fichero1=open(path,'r')
cont=0
for cadena in fichero1:
cont=cont+1
if cont==3:
nexp=''
pos=0
for elemento in cadena:
pos=pos+1
if elemento=='=':
nexp=int(cadena[pos:])
return nexp
fichero1.close()
def Paridad(self, numero):
if numero%2==0: return 'par'
elif numero%2==1: return 'impar'
def EvaluaCadena(self,cadena):
if len(cadena)>35:
if cadena[-1]=='$':
return cadena[-35:-2]
elif cadena[-1]==']':
return cadena[-34:-1]
else:
return None
def GuardaEnLista(self,path):
fichero=open(path,'r')
lista=[]
for cadena in fichero:
cadena = self.EliminaSaltoDeLinea(cadena)
cadena = self.EvaluaCadena(cadena)
if cadena != None:
lista.append(cadena)
fichero.close()
return lista
def CreaFicherosPrevios(self, path, archivo):
vector = self.GuardaEnLista(archivo)
for i in range(1,self.NumeroDeExperimentos(archivo)+1):
fichero =open(path + str(i)+ '.txt','w')
for j in range(0,16):
fichero.write(vector[j+16*(i-1)]+'\n')
fichero.close()
def CapturaValoresEnArchivo(self, path, polarizacion='up'):
fichero =open(path,'r')
cnt=0
lstup=[]
lstdw=[]
for cadena in fichero:
cnt=cnt+1
if cnt==1:
nu01=cadena[1:4]
nu02=cadena[5:8]
nu03=cadena[9:12]
nu04=cadena[13:16]
eu01=cadena[17:20]
eu02=cadena[21:24]
eu03=cadena[25:28]
eu04=cadena[29:32]
if cnt==2:
nu05=cadena[1:4]
nu06=cadena[5:8]
nu07=cadena[9:12]
nu08=cadena[13:16]
eu05=cadena[17:20]
eu06=cadena[21:24]
eu07=cadena[25:28]
eu08=cadena[29:32]
if cnt==3:
nu09=cadena[1:4]
nu10=cadena[5:8]
nu11=cadena[9:12]
nu12=cadena[13:16]
eu09=cadena[17:20]
eu10=cadena[21:24]
eu11=cadena[25:28]
eu12=cadena[29:32]
if cnt==4:
nu13=cadena[1:4]
nu14=cadena[5:8]
nu15=cadena[9:12]
nu16=cadena[13:16]
eu13=cadena[17:20]
eu14=cadena[21:24]
eu15=cadena[25:28]
eu16=cadena[29:32]
if cnt==5:
wu01=cadena[1:4]
wu02=cadena[5:8]
wu03=cadena[9:12]
wu04=cadena[13:16]
su01=cadena[17:20]
su02=cadena[21:24]
su03=cadena[25:28]
su04=cadena[29:32]
if cnt==6:
wu05=cadena[1:4]
wu06=cadena[5:8]
wu07=cadena[9:12]
wu08=cadena[13:16]
su05=cadena[17:20]
su06=cadena[21:24]
su07=cadena[25:28]
su08=cadena[29:32]
if cnt==7:
wu09=cadena[1:4]
wu10=cadena[5:8]
wu11=cadena[9:12]
wu12=cadena[13:16]
su09=cadena[17:20]
su10=cadena[21:24]
su11=cadena[25:28]
su12=cadena[29:32]
if cnt==8:
wu13=cadena[1:4]
wu14=cadena[5:8]
wu15=cadena[9:12]
wu16=cadena[13:16]
su13=cadena[17:20]
su14=cadena[21:24]
su15=cadena[25:28]
su16=cadena[29:32]
if cnt==9:
nd01=cadena[1:4]
nd02=cadena[5:8]
nd03=cadena[9:12]
nd04=cadena[13:16]
ed01=cadena[17:20]
ed02=cadena[21:24]
ed03=cadena[25:28]
ed04=cadena[29:32]
if cnt==10:
nd05=cadena[1:4]
nd06=cadena[5:8]
nd07=cadena[9:12]
nd08=cadena[13:16]
ed05=cadena[17:20]
ed06=cadena[21:24]
ed07=cadena[25:28]
ed08=cadena[29:32]
if cnt==11:
nd09=cadena[1:4]
nd10=cadena[5:8]
nd11=cadena[9:12]
nd12=cadena[13:16]
ed09=cadena[17:20]
ed10=cadena[21:24]
ed11=cadena[25:28]
ed12=cadena[29:32]
if cnt==12:
nd13=cadena[1:4]
nd14=cadena[5:8]
nd15=cadena[9:12]
nd16=cadena[13:16]
ed13=cadena[17:20]
ed14=cadena[21:24]
ed15=cadena[25:28]
ed16=cadena[29:32]
if cnt==13:
wd01=cadena[1:4]
wd02=cadena[5:8]
wd03=cadena[9:12]
wd04=cadena[13:16]
sd01=cadena[17:20]
sd02=cadena[21:24]
sd03=cadena[25:28]
sd04=cadena[29:32]
if cnt==14:
wd05=cadena[1:4]
wd06=cadena[5:8]
wd07=cadena[9:12]
wd08=cadena[13:16]
sd05=cadena[17:20]
sd06=cadena[21:24]
sd07=cadena[25:28]
sd08=cadena[29:32]
if cnt==15:
wd09=cadena[1:4]
wd10=cadena[5:8]
wd11=cadena[9:12]
wd12=cadena[13:16]
sd09=cadena[17:20]
sd10=cadena[21:24]
sd11=cadena[25:28]
sd12=cadena[29:32]
if cnt==16:
wd13=cadena[1:4]
wd14=cadena[5:8]
wd15=cadena[9:12]
wd16=cadena[13:16]
sd13=cadena[17:20]
sd14=cadena[21:24]
sd15=cadena[25:28]
sd16=cadena[29:32]
blck_1_up = [nu01,nu02,nu03,nu04,eu01,eu02,eu03,eu04,nu05,nu06,nu07,nu08,eu05,eu06,eu07,eu08]
blck_1_dw = [nd01,nd02,nd03,nd04,ed01,ed02,ed03,ed04,nd05,nd06,nd07,nd08,ed05,ed06,ed07,ed08]
blck_2_up = [nu09,nu10,nu11,nu12,eu09,eu10,eu11,eu12,nu13,nu14,nu15,nu16,eu13,eu14,eu15,eu16]
blck_2_dw = [nd09,nd10,nd11,nd12,ed09,ed10,ed11,ed12,nd13,nd14,nd15,nd16,ed13,ed14,ed15,ed16]
blck_3_up = [wu01,wu02,wu03,wu04,su01,su02,su03,su04,wu05,wu06,wu07,wu08,su05,su06,su07,su08]
blck_3_dw = [wd01,wd02,wd03,wd04,sd01,sd02,sd03,sd04,wd05,wd06,wd07,wd08,sd05,sd06,sd07,sd08]
blck_4_up = [wu09,wu10,wu11,wu12,su09,su10,su11,su12,wu13,wu14,wu15,wu16,su13,su14,su15,su16]
blck_4_dw = [wd09,wd10,wd11,wd12,sd09,sd10,sd11,sd12,wd13,wd14,wd15,wd16,sd13,sd14,sd15,sd16]
lstup = blck_1_up + blck_2_up + blck_3_up + blck_4_up
lstdw = blck_1_dw + blck_2_dw + blck_3_dw + blck_4_dw
if polarizacion=='up':
return lstup
elif polarizacion=='dw':
return lstdw
fichero.close()
def CreaFormatoFinal(self, path, filename):
ne=self.NumeroDeExperimentos(filename)
#nombre01 = file1(archivo,'1')
nombre02 = self.file1(filename,'2')
fichero=open(path + 'CentralControlFormat.txt','w')
fichero.write(nombre02+'\n')
fichero.write(str(ne)+'\n')
for i in range(1,65):
if i<10:
nmod = '0'+str(i)
else: nmod = str(i)
fichero.write("ABS_" + nmod+'\n')
for j in range(1,ne+1):
ruta=path+str(j)+'.txt'
lu=self.CapturaValoresEnArchivo(ruta,polarizacion='up')
ld=self.CapturaValoresEnArchivo(ruta,polarizacion='dw')
part1=''
part2=''
if lu[i-1]=='1.0': part1='000'
if lu[i-1]=='2.0': part1='001'
if lu[i-1]=='3.0': part1='010'
if lu[i-1]=='0.0': part1='011'
if lu[i-1]=='0.5': part1='100'
if lu[i-1]=='1.5': part1='101'
if lu[i-1]=='2.5': part1='110'
if lu[i-1]=='3.5': part1='111'
if ld[i-1]=='1.0': part2='000'
if ld[i-1]=='2.0': part2='001'
if ld[i-1]=='3.0': part2='010'
if ld[i-1]=='0.0': part2='011'
if ld[i-1]=='0.5': part2='100'
if ld[i-1]=='1.5': part2='101'
if ld[i-1]=='2.5': part2='110'
if ld[i-1]=='3.5': part2='111'
fichero.write(part1+part2+'\n')
fichero.write('------'+'\n')
fichero.close()
def EliminaArchivosEnLaCarpeta(self, path, filename):
ne=self.NumeroDeExperimentos(filename)
for i in range(1,ne+1):
os.remove(path + str(i)+'.txt')
def toCentralControlFormat(self, filename):
""" Funcion que genera un archivo para el control central"""
path = os.getcwd() + '/'
self.CreaFicherosPrevios(path, filename)
self.CreaFormatoFinal(path, filename)
self.EliminaArchivosEnLaCarpeta(path, filename)