##// 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
server.py
280 lines | 9.0 KiB | text/x-python | PythonLexer
Modificaciones a scripts python de cliente y servidor UDP
r27 import os
murco
-Se organizó la estructura de directorios....
r19 import library
Implementacion funcion generacion de estado de modulos de control hacia control central
r43 import time
murco
-Se organizó la estructura de directorios....
r19
class ABSServer:
r59 def __init__(self,ipSource="localhost", ipDestino="192.168.1.117", portDestino=7000, ipDestino2="192.168.1.255", portDestino2=5500, ftpPortDestino=None):
murco
-Se organizó la estructura de directorios....
r19
self.ipSource = ipSource
self.ipDestino = ipDestino
self.portDestino = portDestino
self.ipDestino2 = ipDestino2
self.portDestino2 = portDestino2
self.ftpPortDestino = ftpPortDestino
r46 self.experiment_name = "default"
self.tx_buffer = "default"
murco
-Se organizó la estructura de directorios....
r19
self.createObjects()
def createObjects(self):
Actualizacion del directorio
r25
murco
-Se organizó la estructura de directorios....
r19 asServer = True
self.commServerObj = library.UDPComm(self.ipSource, self.ipDestino, self.portDestino, asServer)
self.commClientObj = library.UDPComm(self.ipSource, self.ipDestino2, self.portDestino2)
Modificaciones a scripts python de cliente y servidor UDP
r27 #self.ftpCommObj = library.FTPComm(self.ipSource, self.ipDestino, self.ftpPortDestino)
r46
def waitRequest(self):
ipSource, ipDestino, cmd, self.datarx = self.commServerObj.waitData()
datarpta = "OK"
if cmd == "SNDF":
self.sendFile2Modules()
r59 pass
r46
if cmd == "CHGB":
self.changeBeam()
if cmd == "ANST":
r54 self.getStatus(mode=3)
r46 datarpta = self.tx_buffer
r54 self.commServerObj.sendData(cmd=cmd, data=datarpta)
r46
r54 def checkModule(self, address):
cmd = "ping -c 1 -w 1 192.168.1."+ str(address) + " >> /dev/null"
status = os.system(cmd)
if status == 256:
return False
return True
r51
r46 def __writeReport(self, enaModules):
status_array = ["Status of modules\n"]
status_array.append("----------------\n")
for address in range(1,65):
if address in enaModules:
# status_array.append("192.168.1." + str(base + i + 1) + " [1 1]\n")
status_array.append("192.168.1." + str(address) + " [1 1]\n")
else:
status_array.append("192.168.1." + str(address) + " [0 0]\n")
f = open("module_status.txt","w")
f.writelines(status_array)
f.close()
def checkAntenna(self):
"""
Direccion de los modulos de las antenas:
Norte : 01-16
Este : 17-32
Oeste: : 33-48
Sur : 49-64
"""
enaModules = []
for address in range(1,65):
if self.checkModule(address):
enaModules.append(address)
self.__writeReport(enaModules)
return enaModules
def sendFile2Modules(self):
#Needed for the loop
rx_frame_list = self.datarx.split('\n',2)
r55 self.experiment_name = rx_frame_list[0]
r46 experiment_number = rx_frame_list[1]
str_control_modules = rx_frame_list[2]
lst_control_modules = str_control_modules.split("------\n")
enaModules = self.checkAntenna()
for address in range(1,65):
if address not in enaModules:
continue
r55 self.__writeModuleFile(self.experiment_name, lst_control_modules[address-1])
r46
r55 cmd = "tftp -m binary 192.168.1."+ str(address) +" 69 -c put " + self.experiment_name
r46 print cmd
os.system(cmd)
self.__loadFile()
r54
def __writeModuleFile(self, filename, str):
fobj = open(filename,"w")
fobj.write(filename + "\n")
fobj.write("------\n")
fobj.write(str)
fobj.write("------\n")
fobj.close()
def __readModuleFile(self, filename):
fobj1 = open(filename,"r")
file_list_1 = fobj1.readlines()
fobj1.close()
content_str = ''.join(file_list_1[2:-1])
r46
r54 return content_str
def __loadFile(self):
#Working with the UDP socket
self.commClientObj.sendData("none", "CARGA:" + self.experiment_name + ":")
self.commClientObj.sendData("none", "CAMBIA:0:")
murco
-Se organizó la estructura de directorios....
r19 def changeBeam(self):
Modificaciones a scripts python de cliente y servidor UDP
r27 #rpta = self.commClientObj.sendTxRxCommand(cmd='CAMBIA', data="0")
r57 self.commClientObj.sendData("none", "CAMBIA:" + self.datarx + ":")
r54
def getStatus(self,mode):
if mode == 1:
self.__getStsMode1()
elif mode == 2:
self.__getStsMode2()
else:
self.__getStsMode3()
murco
-Se organizó la estructura de directorios....
r19
r46 def __getStsMode1(self):
Modificaciones a scripts python de cliente y servidor UDP
r27 #rpta = self.commClientObj.sendTxRxCommand(cmd='CHEQUEO', data="0")
r54 self.commClientObj.sendData("CHEQUEO:" + self.datarx + ":")
Implementacion funcion generacion de estado de modulos de control hacia control central
r43 seconds = int (self.datarx)
# Give 5 seconds to the control modules
time.sleep(seconds)
# Checking the module connection
module_list = self.connection_status(10)
#Generating the complete report
module = 1
number_of_modules = 16
filename1 = "Verificacion"
filename2 = "report.txt"
fobj2 = open(filename2,"w")
fobj2.write("Verification_file\n")
fobj2.write("-----------------\n")
fobj2.close()
while module <= number_of_modules:
if module_list[module -1] == "1":
#Preparing and doing the tftp command
cmd = "tftp -m binary 192.168.1."+ str(base + module) +" 69 -c get " + filename1
print cmd
os.system(cmd)
# Getting data from the control module file
fobj1 = open(filename1,"r")
file_list_1 = fobj1.readlines()
fobj1.close()
content = file_list_1[2:-1]
#
fobj2 = open(filename2,"a")
if base == 10:
fobj2.write("S" + str(module) + "\n")
else:
fobj2.write("N" + str(module) + "\n")
fobj2.writelines(content)
fobj2.write("------\n")
fobj2.close()
module = module + 1
r46
def __getStsMode2(self):
Implementacion funcion generacion de estado de modulos de control hacia control central
r43
r46 #rpta = self.commClientObj.sendTxRxCommand(cmd='CHEQUEO', data="0")
r54 self.commClientObj.sendData("CHEQUEO:" + self.datarx + ":")
r46 seconds = int (self.datarx)
# Give 5 seconds to the control modules
time.sleep(seconds)
# Checking the module connection
r51 enaModules = self.checkAntenna()
r46 #Generating the complete report
filename1 = "Verificacion"
line1 = "Verification_file\n"
line2 = "-----------------\n"
report_list = [line1, line2]
r51
for address in range(1,65):
if address not in enaModules:
continue
#Preparing and doing the tftp command
cmd = "tftp -m binary 192.168.1."+ str(address) +" 69 -c get " + filename1
print cmd
os.system(cmd)
#Sub_header
report_list.append("ABS_" + str(address) + "\n")
# Content
fobj1 = open(filename1,"r")
file_list_1 = fobj1.readlines()
fobj1.close()
content = ''.join(file_list_1[2:-1])
report_list.append(content)
#Ending
report_list.append("------\n")
r46 #print "\nFinalizado"
r54 self.tx_buffer = ''.join(report_list)
def __AddingHeader(self,content_list, title):
line1 = title + "\n"
line2 = "-----------------\n"
header_list = [line1, line2]
verification_list = header_list + content_list
# Arming the frame
self.tx_buffer = ''.join(verification_list)
def __getModuleFile(self, filename):
enaModules = self.checkAntenna()
content_list = []
for address in range(1,65):
if address not in enaModules:
continue
#Preparing and doing the tftp command
cmd = "tftp -m binary 192.168.1."+ str(address) +" 69 -c get " + filename
print cmd
os.system(cmd)
#Sub_header
content_list.append("ABS_" + str(address) + "\n")
# From module file to list
content_str = self.__readModuleFile(filename)
content_list.append(content_str)
content_list.append("------\n")
self.__AddingHeader(content_list, title = "Verification_file")
r46 def __getStsMode3(self):
Implementacion funcion generacion de estado de modulos de control hacia control central
r43
r57 self.commClientObj.sendData("none", "CHEQUEO:" + self.datarx + ":")
r46 seconds = int (self.datarx)
# Give 5 seconds to the control modules
time.sleep(seconds)
r54 self.__getModuleFile(filename = "Verificacion")
r46
Actualizacion del directorio
r25
if __name__ == '__main__':
absObj = ABSServer()
Correciones en la función de envío de archivos hacia los módulos de control
r42 while 1:
r51 absObj.waitRequest()