diff --git a/apache/apache_radarsys.conf b/apache/apache_radarsys.conf index a0928fc..91e9ea8 100644 --- a/apache/apache_radarsys.conf +++ b/apache/apache_radarsys.conf @@ -11,4 +11,4 @@ Alias /static/ /var/www/html/static/ Require all granted #Allow from all - \ No newline at end of file + diff --git a/apps/abs/urls.py b/apps/abs/urls.py index 7e9b14f..4824c3c 100644 --- a/apps/abs/urls.py +++ b/apps/abs/urls.py @@ -3,8 +3,4 @@ from django.conf.urls import url urlpatterns = ( url(r'^(?P-?\d+)/$', 'apps.main.views.dev_conf', name='url_abs_conf'), url(r'^(?P-?\d+)/edit/$', 'apps.main.views.dev_conf_edit', name='url_edit_abs_conf'), - url(r'^(?P-?\d+)/write/$', 'apps.main.views.dev_conf_write', name='url_write_abs_conf'), - url(r'^(?P-?\d+)/read/$', 'apps.main.views.dev_conf_read', name='url_read_abs_conf'), - url(r'^(?P-?\d+)/import/$', 'apps.main.views.dev_conf_import', name='url_import_abs_conf'), - url(r'^(?P-?\d+)/export/$', 'apps.main.views.dev_conf_export', name='url_export_abs_conf'), -) \ No newline at end of file +) diff --git a/apps/cgs/forms.py b/apps/cgs/forms.py index 8385de0..22a63d2 100644 --- a/apps/cgs/forms.py +++ b/apps/cgs/forms.py @@ -3,32 +3,32 @@ from apps.main.models import Device from .models import CGSConfiguration class CGSConfigurationForm(forms.ModelForm): - + def __init__(self, *args, **kwargs): #request = kwargs.pop('request') super(CGSConfigurationForm, self).__init__(*args, **kwargs) instance = getattr(self, 'instance', None) - + if instance and instance.pk: - + devices = Device.objects.filter(device_type__name='cgs') - + if instance.experiment: self.fields['experiment'].widget.attrs['disabled'] = 'disabled' - + self.fields['device'].widget.choices = [(device.id, device) for device in devices] def clean(self): return -# +# class Meta: model = CGSConfiguration exclude = ('type', 'parameters', 'status') #fields = ('experiment', 'device', 'freq0', 'freq1', 'freq2', 'freq3') - - + + class UploadFileForm(forms.Form): title = forms.CharField(label='Extension Type', widget=forms.TextInput(attrs={'readonly':'readonly'})) - file = forms.FileField() \ No newline at end of file + file = forms.FileField() diff --git a/apps/jars/models.py b/apps/jars/models.py index dbd8a96..2f5fb4c 100644 --- a/apps/jars/models.py +++ b/apps/jars/models.py @@ -245,6 +245,11 @@ class JARSConfiguration(Configuration): return self.device.status + def start_device(self): + + self.write_device() + + def echo(self): answer = api.echo(self.device.ip_address,self.device.port_address,'(=') diff --git a/apps/rc/forms.py b/apps/rc/forms.py index 4500db2..285e992 100644 --- a/apps/rc/forms.py +++ b/apps/rc/forms.py @@ -1,5 +1,4 @@ import os -import ast import json from django import forms @@ -321,8 +320,7 @@ class RCLineEditForm(forms.ModelForm): widget=forms.Select(attrs={'name':'%s|%s|%s' % (count, line.id, label)}), help_text=help_text) - else: - + else: self.fields[label] = forms.CharField(initial=value, help_text=help_text) if label in ('code', ): @@ -337,9 +335,9 @@ class RCLineEditForm(forms.ModelForm): elif params[label]['widget']=='dc': self.fields[label].widget = KmUnitDcWidget(attrs={'line':line, 'km2unit':km2unit, 'name':'%s|%s|%s' % (count, line.id, label)}) elif params[label]['widget']=='codes': - self.fields[label].widget = CodesWidget(attrs={'line':line, 'km2unit':km2unit, 'name':'%s|%s|%s' % (count, line.id, label)}) - else: - self.fields[label].widget = DefaultWidget(attrs={'name':'%s|%s|%s' % (count, line.id, label)}) + self.fields[label].widget = CodesWidget(attrs={'line':line, 'km2unit':km2unit, 'name':'%s|%s|%s' % (count, line.id, label)}) + else: + self.fields[label].widget = DefaultWidget(attrs={'line':line, 'name':'%s|%s|%s' % (count, line.id, label)}) class Meta: diff --git a/devices/jars/__init__.py b/devices/jars/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/devices/jars/__init__.py diff --git a/devices/jars/api.py b/devices/jars/api.py new file mode 100644 index 0000000..9355995 --- /dev/null +++ b/devices/jars/api.py @@ -0,0 +1,113 @@ +''' +Created on Nov 25, 2015 + +@author: Miguel Urco + +eth_device decorator is used to implement an api to ethernet devices. +When eth_device decorator is used it adds two parameters to any function (ip and port) + +#Definition of a function using eth_device decorator + +@eth_device(ID_CLASS) +def enable_acq(message) + cmd = "xxxxx" + payload = message + + return cmd, payload + +#How to call this function: +answer = enable_acq(ip, port, message) + +''' +import sys +import struct +import json + +from devices.jro_device import eth_device, IdClass + +ID_CLASS = IdClass["jars"] + +CMD_RESET = 0X01 +CMD_CHANGEIP = 0X03 +#Add other commands +CMD_CONFIGURE = 0X10 +CMD_STATUS = 0X11 +CMD_SET_EXEPATH = 0X12 +CMD_ECHO = 0XFE +CMD_READ = 0X08 +CMD_STOP = 0X09 + +@eth_device(ID_CLASS) +def reset(): + + cmd = CMD_RESET + payload = '' + + return cmd, payload + +@eth_device(ID_CLASS) +def stop(): + + cmd = CMD_STOP + payload = '' + + return cmd, payload + +@eth_device(ID_CLASS) +def echo(message): + + cmd = CMD_ECHO + payload = message + + return cmd, payload + +@eth_device(ID_CLASS) +def configure(conf): + + cmd = CMD_CONFIGURE + payload = conf + + return cmd, payload + +@eth_device(ID_CLASS) +def status(): + + cmd = CMD_STATUS + payload = '' + + return cmd, payload + +@eth_device(ID_CLASS) +def read(): + + cmd = CMD_READ + payload = '' + + return cmd, payload + +@eth_device(ID_CLASS) +def set_exepath(path): + + cmd = CMD_SET_EXEPATH + payload = path + + return cmd, payload + +#--To take .json file from computer: +#with open('/home/fquino/Downloads/Experiment.json') as data_file: +# data = json.load(data_file) + +# data['configurations']['dds']='' +# data['configurations']['rc']['pulses']='' +# data['configurations']['rc']['delays']='' + + #data = json.dumps(data) +#----------------------------------- + +#print reset('10.10.10.100', 10000) +#print echo('10.10.10.95', 10000, 'Hola JARS :)') + +#json_data = json.dumps({'name':'archivo1','variable':9}) +#print configure('10.10.10.95', 10000, data) +#print configure('10.10.10.100', 10000, '') +#print status('10.10.10.100', 10000) diff --git a/devices/jro_device.py b/devices/jro_device.py index e5e9170..e924385 100644 --- a/devices/jro_device.py +++ b/devices/jro_device.py @@ -293,7 +293,7 @@ class IPData(object): def __sendTCPData(self, cadena): sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sck.settimeout(2) + sck.settimeout(3) try: sck.connect(self.address) @@ -314,7 +314,10 @@ class IPData(object): if time.time() - ini > 0.5: break - tmp = sck.recv(255) + try: + tmp = sck.recv(4096) + except: + break if len(tmp) < 1: continue diff --git a/devices/rc/api.py b/devices/rc/api.py index 8a783f6..a9a2380 100644 --- a/devices/rc/api.py +++ b/devices/rc/api.py @@ -35,8 +35,6 @@ CMD_ECHO =0XFE RC_CMD_RESET =0X10 RC_CMD_WRITE =0x50 RC_CMD_READ =0x8000 -RC_CMD_ENABLE =0X24 -RC_CMD_DISABLE =0X00 @eth_device(ID_CLASS) def reset(): @@ -71,32 +69,16 @@ def echo(): return cmd, payload @eth_device(ID_CLASS) -def enable(): - - cmd = RC_CMD_ENABLE - payload = chr(0x01) - - return cmd, payload - -@eth_device(ID_CLASS) -def disable(): - - cmd = RC_CMD_DISABLE - payload = chr(0x00) - - return cmd, payload - -@eth_device(ID_CLASS) def read_all_device(): payload = "" - return RC_CMD_READ, payload + return CR_CMD_READ, payload @eth_device(ID_CLASS) def write_all_device(payload): - return RC_CMD_WRITE, payload + return CR_CMD_WRITE, payload def read_config(ip, port): """ @@ -117,7 +99,7 @@ def write_config(ip, port, parms): """ - payload = write_ram_memory(parms['pulses'], parms['delays']) + payload = data.dict_to_rc_str(parms) answer = write_all_device(ip, port, payload) @@ -125,13 +107,13 @@ def write_config(ip, port, parms): def __get_low_byte(valor): - return ord(valor & 0x00FF) + return ord(valor & 0x00FF) def __get_high_byte(valor): - return ord((valor & 0xFF00) >> 8) - + return ord((valor & 0xFF00) >> 8) +@eth_device(ID_CLASS) def write_ram_memory(vector_valores, vector_tiempos): l1 = len(vector_valores) @@ -140,10 +122,10 @@ def write_ram_memory(vector_valores, vector_tiempos): cad = "" for i in range(l1): - cad += ord(84) + __get_low_byte(vector_valores[i]) + ord(85) + __get_high_byte(vector_valores[i]) + \ + cad += ord(84) + __get_low_byte(vector_valores[i]) + ord(85) + __get_high_byte(vector_valores[i]) + \ ord(84) + __get_low_byte(vector_tiempos[i]) + ord(85) + __get_high_byte(vector_tiempos[i]) - return cad + return RC_CMD_WRITE, cad if __name__ == '__main__': ip = "10.10.20.150" diff --git a/radarsys/urls.py b/radarsys/urls.py index 550a6d6..29cab2a 100644 --- a/radarsys/urls.py +++ b/radarsys/urls.py @@ -17,7 +17,7 @@ from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ - url(r'^$', 'apps.main.views.index', name='index'), + url(r'^$', 'apps.main.views.index', name='index'), url(r'^admin/', include(admin.site.urls)), url(r'^accounts/', include('apps.accounts.urls')), url(r'^', include('apps.main.urls')), diff --git a/requirements.txt b/requirements.txt index dc96228..7c8b8eb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,4 +6,3 @@ requests==2.9.1 bokeh==0.11.0 numpy==1.10.4 matplotlib==1.5.1 -