No BSD License  

Highlights from
BPSK Simulator for Low Rate Transmisions

image thumbnail

BPSK Simulator for Low Rate Transmisions

by

 

01 Jun 2004 (Updated )

BPSK Simulator for didactical purposes. Systemic coding style.

creaGuiRX.m
%------------------------------------------------------------------------
%|  	creaGuiRX
%------------------------------------------------------------------------
%|      Script que genera todos los controles de los parmetros del RX.
%|  
%|    Se construye mediante bucles porque permite un mayor control
%|  sobre todos los callback.
%------------------------------------------------------------------------
%|   Autor: Cesar Delgado
%|   Fecha: 19-Abril-2.004
%------------------------------------------------------------------------


%         1.- Creacin de Editables
%##################################
%           1.1.- Posiciones y Titulos
%-------------------------------------
%       Left ,  Bottom ,  Width,   Height
pos = [0.6860, 0.54    ,  0.35 ,  0.035]; % Posicin del control + izqdo.
titulos = {'FILTRO FI:', 'Orden', 'Bw';
           'FILTRO BB:', 'Orden', 'Bw';           
           'LAZO PLL :', 'wh', 'x=';
           'VCO/RELOJ:', 'Kv', 'N[0/1]';};
pops      = {'Hz|kHz'; 'Hz|kHz'; 'rad/s|krad/s'; 'Hz/V|kHz/V' };    
tamTexto = [0.07, 0.03; 0.35, 0.03;];% Anchura, Altura
tamEdit  = [0.04, 0.035; 0.04, 0.035];
tamPop  =  [0.05, 0.035; 0.055, 0.035;];
aux = (10:30)';
aux = num2str(aux);
aux(:,3) = '|';
aux = reshape(aux',1,size(aux,1)*size(aux,2));
numFlancos = aux(1:length(aux)-1);
grosorFuente  = {'bold', 'normal'};
anguloFuente  ={'italic', 'normal'};
tipoFuente    ={'Arial Black', 'Arial', 'Symbol'};
colorFuente   = [0.5020,0,0; 0,0,0];  % Granate ; Negro                     
tamFuente = [8 11];
fq       = [Orden(pFI), Bw(pFI); Orden(pBB), Bw(pBB); parPLL(pWN), parPLL(pPSI); parPLL(pKV), nFlancos];

%           1.2.- Generacin de Editables
%----------------------------------------
%%%%%%%%%%%%%%% 1.2.- Construimos fila a fila
for fila=1:size(titulos,1),              
   aux = pos;
   
   %%%%%%%%%%%%%%% 1.2.1.-  Para cada columna de la fila   
   for col = 1:size(titulos,2),       
      % Ttulo del Editable
      uicontrol('Style','text',...
	          'Units','normalized',...
             'String',char(titulos(fila,col)),...
             'HorizontalAlignment', 'left',...
             'FontWeight',char(grosorFuente((col<2)+1)),...
             'FontName',char(tipoFuente((col>1)+((fila==3)&(col>1))+1)),...
             'FontAngle',char(anguloFuente((col>1)+1)),...
             'FontSize',tamFuente(((fila==3)&(col>1))+1),...
             'Position',pos, ...
             'Foregroundcolor',colorFuente((col>1)+1,:), ...
             'Backgroundcolor',[.8 .8 .8]);           
          
       %    Si no estamos la 1ra columna (ttulos de la fila)
       % entonces introducimos editables y unidades
       if col>1,
          %%%%%%%% Editable
          pos = [pos(1)+tamTexto((col>1)+1,2)+0.01 - ((fila==3)&(col==3))*0.02 - ((fila==4)&(col==3))*0.005, ...
                pos(2), ...
                tamEdit((fila>2)+1,1)+((fila==3)&(col==3))*0.016  , ...
                tamEdit((fila>2)+1,2)];
          Texto = sprintf('evento=%d; actualizaInterfaz;', contEventos);
          contEventos = contEventos+1;
          if ((col==3)&(fila==4)),
             paramRX(fila, col-1) = uicontrol('Style','popup',...
                'Units','normalized',...
                'Position',pos, ... 
                'String',numFlancos,...
                'Enable','on',...
                'Foregroundcolor',[0 0 0],...
                'Backgroundcolor',[1 1 1],...
                'Callback',Texto);           
          else,             
             paramRX(fila, col-1) = uicontrol('Style','edit',...
                'Units','normalized',...
                'Position',pos, ... 
                'String',num2str(fq(fila, col-1)),...
                'Enable','on',...
                'Foregroundcolor',[0 0 0],...
                'Backgroundcolor',[1 1 1],...
                'Callback',Texto);              
          end; 
             pos = [pos(1)+tamEdit((fila>2)+1,1),   pos(2), ...
                   pos(3)                       ,   pos(4)]; 
                     
         %%%%%%%%% Introducimos unidades en 2,3; 2,4; 3,1; 3,2; 3,3;            
         if ((col==3) & (fila<3)) | ((col==2) & (fila==3)) |  ((col==2) & (fila==4)),
              pos = [pos(1)               , pos(2), ...
                    tamPop((fila>2)+1,1) , tamPop((fila>2)+1,2)];
              Texto = sprintf('evento=%d; actualizaInterfaz;', contEventos);
              contEventos = contEventos+1;        
              udsRX(fila, col-1) = uicontrol('Style','popupmenu',...
                   'Units','normalized',...
                   'String',char(pops(fila,:)),...
                   'HorizontalAlignment', 'left',...
                   'FontWeight','normal',...
                   'FontName',char(tipoFuente(2)),...
                   'Position',pos, ...
                   'Backgroundcolor',[.8 .8 .8], ...
                   'Callback',Texto);
                
              pos = [pos(1)+tamPop((fila>2)+1,1)+ 0.01 ,   pos(2), ...
                     tamTexto((col>1)+1,1) ,    tamTexto((col>1)+1,2)];
          else                   
              pos = [pos(1)+0.015, pos(2), ...
                       tamTexto((col>1)+1,1) ,    tamTexto((col>1)+1,2)]; 
                          
          end;
      else, % Sino, es adimensional
            pos = [pos(1)+tamTexto(1,1)+0.02, pos(2), ...
                  tamTexto((col>1)+1,1)     , tamTexto((col>1)+1,2)];            
      end;
         
    end;
    pos = [aux(1)                , aux(2)-0.037, ...
           tamTexto((col>1)+1,1) , tamTexto((col>1)+1,2)];
  end; 
  
% 2.- Botn de Resultado
%########################
pos = [pos(1), pos(2)+0.003, .15, .03];
Texto = sprintf('evento=%d; actualizaInterfaz;', contEventos);
contEventos = contEventos+1;
uicontrol('Style','pushbutton', ...
	       'Units','normalized', ...
          'Position',pos, ...
	       'String','Texto RX',...
          'Callback',Texto);  

  
% 3.- Botn de Envo
%####################
pos = [pos(1)+0.16, pos(2), pos(3), pos(4)];
Texto = sprintf('evento=%d; actualizaInterfaz;', contEventos);
contEventos = contEventos+1;
pulsa(2) = uicontrol('Style','pushbutton', ...
	                 'Units','normalized', ...
                     'Position',pos, ...
	                 'String','Recibe Msj',...
                     'Callback',Texto);  
         
 % 3.- Eliminamos variables intiles
 %###################################
 clear pos titulos tamTexto grosorFuente tipoFuente colorFuente Texto
 clear anguloFuente tamEdit fq aux pops tamPop tamFuente fila col numFlancos
  

Contact us