From ff996bcda7e9acb08572a15097a546a9e6592e94 2024-07-08 13:21:26 From: jrojas Date: 2024-07-08 13:21:26 Subject: [PATCH] Update cr models.py to show used memory in plot_pulses view --- diff --git a/apps/rc/models.py b/apps/rc/models.py index 405c906..681a4c7 100644 --- a/apps/rc/models.py +++ b/apps/rc/models.py @@ -8,7 +8,7 @@ from base64 import b64encode from struct import pack from django.db import models -from django.core.urlresolvers import reverse +from django.urls import reverse from django.core.validators import MinValueValidator, MaxValueValidator from apps.main.models import Configuration @@ -109,7 +109,7 @@ class RCConfiguration(Configuration): def clone(self, **kwargs): - lines = self.get_lines() + lines = self.get_lines() self.pk = None self.id = None for attr, value in kwargs.items(): @@ -158,6 +158,7 @@ class RCConfiguration(Configuration): else: data = Params(params).get_conf(dtype='rc') + #print(data) # self.name = data['name'] self.ipp = data['ipp'] self.ntx = data['ntx'] @@ -172,6 +173,8 @@ class RCConfiguration(Configuration): self.save() self.clean_lines() + #print(params) + positions = {'tx':0, 'tr':0} for i, id in enumerate(data['lines']): line_data = params['lines']['byId'][id] @@ -210,8 +213,9 @@ class RCConfiguration(Configuration): params=json.dumps(ref_line['params']) ).pk line.params = json.dumps(line_params) + print(line.params) line.save() - + print("Fin de dict to param") def get_delays(self): @@ -226,7 +230,6 @@ class RCConfiguration(Configuration): return [points[i+1]-points[i] for i in range(len(points)-1)] - def get_pulses(self, binary=True): pulses = [line.pulses_as_points() for line in self.get_lines()] @@ -236,27 +239,42 @@ class RCConfiguration(Configuration): points.sort() states = [] last = [0 for x in pulses] + n_pulses = len(pulses) + print('len_pulses', n_pulses) + print('len_points', len(points)) + ups_arr = [[] for _ in range(n_pulses)] + dws_arr = [[] for _ in range(n_pulses)] + + for i, tups in enumerate(pulses): + ups_arr[i] = [tup[0] for tup in tups if tup!=(0,0)] + dws_arr[i] = [tup[1] for tup in tups if tup!=(0,0)] + print('len_points*n_pulses',len(points)*n_pulses) + #print('ups_arr', ups_arr) + #print('dws_arr', dws_arr) for x in points: dum = [] - for i, tups in enumerate(pulses): - ups = [tup[0] for tup in tups if tup!=(0,0)] - dws = [tup[1] for tup in tups if tup!=(0,0)] - if x in ups: + print('loading', x*100/max(points)) + + for i in range(n_pulses): + if x in ups_arr[i]: dum.append(1) - elif x in dws: + elif x in dws_arr[i]: dum.append(0) else: dum.append(last[i]) - states.append(dum) + #print(dum) + states.append(dum) last = dum - + if binary: ret = [] for flips in states: flips.reverse() ret.append(int(''.join([str(x) for x in flips]), 2)) states = ret + #print(states[:-1]) + #print('len_states',len(states[:-1])) return states[:-1] @@ -343,8 +361,10 @@ class RCConfiguration(Configuration): return '\n'.join(['{}'.format(x) for x in data]) def update_pulses(self): - + contador = 0 for line in self.get_lines(): + contador=contador+1 + print(contador) line.update_pulses() def plot_pulses2(self, km=False): @@ -384,7 +404,7 @@ class RCConfiguration(Configuration): ax.set_yticklabels(labels) ax.set_xlabel = 'Units' plot = to_bokeh(fig, use_pandas=False) - plot.tools = [PanTool(dimensions=['width']), WheelZoomTool(dimensions=['width']), ResetTool(), SaveTool()] + plot.tools = [PanTool(dimensions="width"), WheelZoomTool(dimensions="width"), ResetTool(), SaveTool()] plot.toolbar_location="above" return components(plot, CDN) @@ -394,7 +414,7 @@ class RCConfiguration(Configuration): from bokeh.plotting import figure from bokeh.resources import CDN from bokeh.embed import components - from bokeh.models import FixedTicker, PrintfTickFormatter + from bokeh.models import FixedTicker, PrintfTickFormatter, Label from bokeh.models.tools import WheelZoomTool, ResetTool, PanTool, HoverTool, SaveTool from bokeh.models.sources import ColumnDataSource @@ -408,8 +428,8 @@ class RCConfiguration(Configuration): ("IPP", "@ipp"), ("X", "@left")]) - tools = [PanTool(dimensions=['width']), - WheelZoomTool(dimensions=['width']), + tools = [PanTool(dimensions="width"), + WheelZoomTool(dimensions="width"), hover, SaveTool()] plot = figure(width=1000, @@ -419,6 +439,15 @@ class RCConfiguration(Configuration): toolbar_location='above', toolbar_sticky=False,) + pulses = [line.pulses_as_points() for line in self.get_lines()] + tuples = [tup for tups in pulses for tup in tups] + points = set([x for tup in tuples for x in tup]) + capacity_bytes = round((8*(len(points)-1)+12)/2) # se divide entre 2 porque la mitad era solo para direcciones + capacity_percent = (capacity_bytes/2097152)*100 + # Add the used memory message + x_label_memory = Label(x=900, y=-1.5, text='Used memory of '+str(capacity_bytes)+'/2097152 bytes ('+'%.3f'%capacity_percent+'%)', text_align="right", x_units='screen', text_font_size='14pt') + plot.add_layout(x_label_memory, 'below') + plot.xaxis.axis_label = 'Km' if km else 'Units' plot.xaxis[0].formatter = PrintfTickFormatter(format='%d') plot.yaxis.axis_label = 'Pulses' @@ -545,7 +574,8 @@ class RCConfiguration(Configuration): return True - def write_device(self, raw=False): + def write_device(self, raw=False): + print("write device") if not raw: clock = RCClock.objects.get(rc_configuration=self) @@ -554,16 +584,22 @@ class RCConfiguration(Configuration): else: data = {'manual': [clock.multiplier, clock.divisor, clock.reference]} payload = self.request('setfreq', 'post', data=json.dumps(data)) - if payload['command'] <> 'ok': + #if payload['setfreq'] != 'ok': + if payload['command'] != 'ok': + #self.message = 'RC write: {}'.format(payload['setfreq']) self.message = 'RC write: {}'.format(payload['command']) else: + #self.message = payload['setfreq'] self.message = payload['programming'] + #if payload['setfreq'] == 'fail': if payload['programming'] == 'fail': self.message = 'RC write: error programming CGS chip' - + values = [] + print('wait delay values...') for pulse, delay in zip(self.get_pulses(), self.get_delays()): - while delay>65536: + #print('wait zip...') + while delay > 65536: values.append((pulse, 65535)) delay -= 65536 values.append((pulse, delay-1)) @@ -583,6 +619,7 @@ class RCConfiguration(Configuration): data.extend((139, 62)) last = 0 + print('wait data...') for tup in values: vals = pack('