|
|
# imports needed for the file convertion
|
|
|
import os
|
|
|
import sys
|
|
|
import time
|
|
|
import numpy as np
|
|
|
|
|
|
import library
|
|
|
|
|
|
class ABSClient:
|
|
|
|
|
|
def __init__(self,ipSource="localhost", ipDestino="192.168.1.255", portDestino=7000):
|
|
|
|
|
|
self.ipSource = ipSource
|
|
|
self.ipDestino = ipDestino
|
|
|
self.portDestino = portDestino
|
|
|
|
|
|
self.createObjects()
|
|
|
|
|
|
def createObjects(self):
|
|
|
|
|
|
self.commObj = library.UDPComm(self.ipSource, self.ipDestino, self.portDestino)
|
|
|
|
|
|
def sendFile(self, filename):
|
|
|
|
|
|
#From matriz to control module format
|
|
|
self.FuncionMaestra_GeneraFormatoControlCentral(filename)
|
|
|
FileName = "FormatoControlCentral.txt"
|
|
|
F_Obj = open(FileName,"r")
|
|
|
FileList = F_Obj.readlines()
|
|
|
F_Obj.close()
|
|
|
FileStr = "".join(FileList)
|
|
|
data = FileStr
|
|
|
|
|
|
self.commObj.sendTxRxCommand(cmd="SNDF", data=data)
|
|
|
|
|
|
def changeBeam(self, newBeam):
|
|
|
|
|
|
self.commObj.sendTxRxCommand(cmd="CHGB", data=newBeam)
|
|
|
|
|
|
def getStatus(self):
|
|
|
|
|
|
self.commObj.sendTxRxCommand(cmd="ANST", data="ABS")
|
|
|
|
|
|
##########
|
|
|
|
|
|
def FuncionMaestra_GeneraFormatoControlCentral(self,archivo):
|
|
|
""" Funcion que genera un archivo para el control central"""
|
|
|
|
|
|
# CarpetaDeTrabajo='/home/redes/ABS_Control_2012_09_24/Control_Module_v1_Client_09_24/'
|
|
|
CarpetaDeTrabajo = os.getcwd() + '/'
|
|
|
#print CarpetaDeTrabajo
|
|
|
#CarpetaDeTrabajo='/home/redes/workspace/ABS_Client_v2/Debug/'
|
|
|
|
|
|
def lst2string(lst):
|
|
|
string=''
|
|
|
for i in lst:
|
|
|
string=string+i
|
|
|
return string
|
|
|
|
|
|
def string2lst(string):
|
|
|
lst = []
|
|
|
for i in string:
|
|
|
lst.append(i)
|
|
|
return lst
|
|
|
|
|
|
|
|
|
def file1(string, type):
|
|
|
lst = string2lst(archivo)
|
|
|
fin = -1
|
|
|
t = len(lst)
|
|
|
for i in np.arange(-1,-t,-1):
|
|
|
if lst[i]=='/':
|
|
|
fin=i
|
|
|
break
|
|
|
if type == '2':
|
|
|
nombre2 = lst[fin+1:]
|
|
|
nombre2[-1]='1'
|
|
|
nombre2 = lst2string(nombre2)
|
|
|
return nombre2
|
|
|
|
|
|
|
|
|
def EliminaSaltoDeLinea(cadena):
|
|
|
i = 0
|
|
|
for elemento in cadena:
|
|
|
if elemento =='\n' or elemento =='\r':
|
|
|
pass
|
|
|
else:
|
|
|
i=i+1
|
|
|
return cadena [:i]
|
|
|
|
|
|
def NumeroDeExperimentos(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(numero):
|
|
|
if numero%2==0: return 'par'
|
|
|
elif numero%2==1: return 'impar'
|
|
|
|
|
|
def EvaluaCadena(cadena):
|
|
|
if len(cadena)>35:
|
|
|
if cadena[-1]=='$':
|
|
|
return cadena[-35:-2]
|
|
|
elif cadena[-1]==']':
|
|
|
return cadena[-34:-1]
|
|
|
else:
|
|
|
return None
|
|
|
|
|
|
def GuardaEnLista(path):
|
|
|
fichero=open(path,'r')
|
|
|
lista=[]
|
|
|
for cadena in fichero:
|
|
|
cadena = EliminaSaltoDeLinea(cadena)
|
|
|
cadena = EvaluaCadena(cadena)
|
|
|
if cadena != None:
|
|
|
lista.append(cadena)
|
|
|
fichero.close()
|
|
|
return lista
|
|
|
|
|
|
def CreaFicherosPrevios():
|
|
|
vector = GuardaEnLista(archivo)
|
|
|
for i in range(1,NumeroDeExperimentos(archivo)+1):
|
|
|
fichero =open(CarpetaDeTrabajo+str(i)+'.txt','w')
|
|
|
for j in range(0,16):
|
|
|
fichero.write(vector[j+16*(i-1)]+'\n')
|
|
|
fichero.close()
|
|
|
|
|
|
def CapturaValoresEnArchivo(path,polarizacion='up'):
|
|
|
fichero =open(path,'r')
|
|
|
cnt=0
|
|
|
lstup=[]
|
|
|
lstdw=[]
|
|
|
for cadena in fichero:
|
|
|
cnt=cnt+1
|
|
|
if cnt==5:
|
|
|
su01=cadena[17:20]
|
|
|
su02=cadena[21:24]
|
|
|
su03=cadena[25:28]
|
|
|
su04=cadena[29:32]
|
|
|
if cnt==6:
|
|
|
su05=cadena[17:20]
|
|
|
su06=cadena[21:24]
|
|
|
su07=cadena[25:28]
|
|
|
su08=cadena[29:32]
|
|
|
if cnt==7:
|
|
|
su09=cadena[17:20]
|
|
|
su10=cadena[21:24]
|
|
|
su11=cadena[25:28]
|
|
|
su12=cadena[29:32]
|
|
|
if cnt==8:
|
|
|
su13=cadena[17:20]
|
|
|
su14=cadena[21:24]
|
|
|
su15=cadena[25:28]
|
|
|
su16=cadena[29:32]
|
|
|
if cnt==13:
|
|
|
sd01=cadena[17:20]
|
|
|
sd02=cadena[21:24]
|
|
|
sd03=cadena[25:28]
|
|
|
sd04=cadena[29:32]
|
|
|
if cnt==14:
|
|
|
sd05=cadena[17:20]
|
|
|
sd06=cadena[21:24]
|
|
|
sd07=cadena[25:28]
|
|
|
sd08=cadena[29:32]
|
|
|
if cnt==15:
|
|
|
sd09=cadena[17:20]
|
|
|
sd10=cadena[21:24]
|
|
|
sd11=cadena[25:28]
|
|
|
sd12=cadena[29:32]
|
|
|
if cnt==16:
|
|
|
sd13=cadena[17:20]
|
|
|
sd14=cadena[21:24]
|
|
|
sd15=cadena[25:28]
|
|
|
sd16=cadena[29:32]
|
|
|
lstup=[su01,su02,su03,su04,su05,su06,su07,su08,su09,su10,su11,su12,su13,su14,su15,su16]
|
|
|
lstdw=[sd01,sd02,sd03,sd04,sd05,sd06,sd07,sd08,sd09,sd10,sd11,sd12,sd13,sd14,sd15,sd16]
|
|
|
if polarizacion=='up':
|
|
|
return lstup
|
|
|
elif polarizacion=='dw':
|
|
|
return lstdw
|
|
|
fichero.close()
|
|
|
|
|
|
def CreaFormatoFinal():
|
|
|
ne=NumeroDeExperimentos(archivo)
|
|
|
|
|
|
#nombre01 = file1(archivo,'1')
|
|
|
nombre02 = file1(archivo,'2')
|
|
|
fichero=open(CarpetaDeTrabajo+'FormatoControlCentral.txt','w')
|
|
|
fichero.write(nombre02+'\n')
|
|
|
fichero.write(str(ne)+'\n')
|
|
|
for i in range(1,17):
|
|
|
|
|
|
if i<10:
|
|
|
nmod = '0'+str(i)
|
|
|
else: nmod = str(i)
|
|
|
|
|
|
|
|
|
fichero.write('S'+nmod+'\n')
|
|
|
for j in range(1,ne+1):
|
|
|
ruta=CarpetaDeTrabajo+str(j)+'.txt'
|
|
|
lu=CapturaValoresEnArchivo(ruta,polarizacion='up')
|
|
|
ld=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():
|
|
|
ne=NumeroDeExperimentos(archivo)
|
|
|
for i in range(1,ne+1):
|
|
|
os.remove(CarpetaDeTrabajo+str(i)+'.txt')
|
|
|
|
|
|
CreaFicherosPrevios()
|
|
|
CreaFormatoFinal()
|
|
|
EliminaArchivosEnLaCarpeta()
|
|
|
|
|
|
##########
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
|
filename = "experimento1.abs"
|
|
|
|
|
|
absObj = ABSClient()
|
|
|
#absObj.sendFile(filename)
|
|
|
#absObj.changeBeam("6")
|
|
|
#absObj.changeBeam("2")
|
|
|
absObj.changeBeam("7")
|