##// 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
library2.py
164 lines | 5.0 KiB | text/x-python | PythonLexer
r92 import socket
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.asServer = False
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.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, nbytes = 1024):
print "\nWaiting some client."
if self.asServer == False:
# 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 waitServer(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)
ipSource, ipDestino, cmd, data = self.__getTrama(trama_rx)
return ipSource, ipDestino, cmd, data
def waitClient(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)
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.asServer == False:
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 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 SendAsServer(self, trama_tx):
self.sc.send(trama_tx)
print "Sending message:[" + trama_tx + "] to: " + str(self.answer)
def SendAsClient(self, ipDestino, trama_tx):
self.socket_c.connect((ipDestino, self.portDestino))
self.socket_c.send(trama_tx)
print "Sending message:[" + trama_tx + "] to: " + ipDestino
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()