No BSD License  

Highlights from
BPSK Simulator for Low Rate Transmisions

image thumbnail
from BPSK Simulator for Low Rate Transmisions by César Delgado González
BPSK Simulator for didactical purposes. Systemic coding style.

creaGuiTX.m
%------------------------------------------------------------------------
%|  	creaGuiTX
%------------------------------------------------------------------------
%|      Script que genera todos los controles de los parmetros del TX
%------------------------------------------------------------------------
%|   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.83,  0.35, 0.035]; % Posicin del control + izqdo.
titulos = {'GENERAL:', 'P_Tx', 'S/N ';
           'MOD.I-Q:', 'f','Dw';  
           'COS ALZ:', 'a',' ';           
           'CRC    :', 'Tramo', 'Code';
           'ENTREL.:', 'Filas', 'Col.';};
          
uds      = {'dBm', 'dB'; '', '%';' ', ' '; ' ', ' ';  ' ', ' ';};         
tamTexto = [0.07, 0.03; 0.35, 0.03;];% Anchura, Altura
tamPop   = [0.105, 0.02;];
grosorFuente  = {'bold', 'normal'};
anguloFuente  ={'italic', 'normal'};
tipoFuente    ={'Arial Black', 'Arial', 'Symbol'};
colorFuente   = [0.5020,0,0; 0,0,0];  % Granate ; Negro                     
tamFuente = [8 11];
tamEdit  = [0.04, 0.035; 0.04, 0.035];
fq       = [IQ(pPOT)    , IQ(pS_N); ...
            IQ(pFASE)   , IQ(pDESV); ...
            IQ(pROLLOFF), 0;... 
            CRC(pTRAMO)  , CRC(pCODE);...
            Entrelazado(pFILA), Entrelazado(pCOL); ];
          
metodos  = ' Hamming | Cclicos | Red Solomon | Binario BCH ';

%           1.1.- Generacin de Editables
%----------------------------------------
%%%%%%%%%%%%%%% 1.1.- Construimos fila a fila
for fila=1:size(titulos,1),              
   aux = pos;
   
   %%%%%%%%%%%%%%% 1.1.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==2)&(col>1))+((fila==3)&(col==2))+1)),...
             'FontAngle',char(anguloFuente((col>1)+1)),...
             'FontSize',tamFuente(((fila==2)&(col>1))+((fila==3)&(col==2))+1),...
             'Position',pos, ...
             'Foregroundcolor',colorFuente((col>1)+1,:), ...
             'Backgroundcolor',[.8 .8 .8]);           
          
       %%%%%%% Si no estamos la 1 columna (ttulos de la fila: GENERA; I-Q, etc.)
       %              entonces introducimos editables y unidades
       if (col>1) 
          %%%%%% En todas las columnas hay editables salvo
          %           en la 3, donde hay un desplagable con el mtodo
          %           a emplear para generar los CRC
          if(~((fila==3) & (col==3))),
             %%%%%%%% Editable
             pos = [pos(1)+tamTexto((col>1)+1,2)+0.01, pos(2), ...                 
                    tamEdit((fila>2)+1,1)     , tamEdit((fila>2)+1,2)];
             Texto = sprintf('evento=%d; actualizaInterfaz;', contEventos);
             contEventos = contEventos+1;
             paramTX(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],...
                'BusyAction','queue',...
                'Callback',Texto);                    
             
             %%%%%%%%% Unidades   
             pos = [pos(1)+tamEdit((fila>2)+1,1),   pos(2), ...
                   tamTexto((col>1)+1,1)     , tamTexto((col>1)+1,2)]; 
             uicontrol('Style','text',...
                'Units','normalized',...
                'String',char(uds(fila, col-1)),...
                'HorizontalAlignment', 'left',...
                'FontWeight','normal',...
                'FontName',char(tipoFuente((fila==2)+2)),...
                'Position',pos, ...
                'Backgroundcolor',[.8 .8 .8]); 
             
             pos = [pos(1)+tamEdit((fila>2)+1,1)+0.01,   pos(2), ...
                   tamTexto((col>1)+1,1)     , tamTexto((col>1)+1,2)];
          else
             %%%%%%% Desplagable con el mtodo CRC
             pos = [pos(1)-0.05, pos(2), ...                 
                    tamPop(1)+0.005   , tamPop(2)+0.01];
             Texto = sprintf('evento=%d; actualizaInterfaz;', contEventos);
             contEventos = contEventos+1;    
             uicontrol('Style','text',...
                   'Units','normalized',...
                   'String',' ',...
                   'HorizontalAlignment', 'left',...
                   'FontWeight','Bold',...
                   'FontName','Arial',...
                   'Position',pos, ...                   
                   'Backgroundcolor',[.7 .7 .7]);
                
             pos = [pos(1)+0.03, pos(2)-0.01, ...                 
                    tamPop(1)+0.3  , tamPop(2)+0.02];
             uicontrol('Style','text',...
                   'Units','normalized',...
                   'String',' ',...
                   'HorizontalAlignment', 'left',...
                   'FontWeight','Bold',...
                   'FontName','Arial',...
                   'Position',pos, ...                   
                   'Backgroundcolor',[.8 .8 .8]);
     
                
             pos = [pos(1)+0.01, pos(2)+0.024, ...                 
                    tamPop(1)   , tamPop(2)];                
             paramTX(fila, col-1) = uicontrol('Style','popupmenu',...
                   'Units','normalized',...
                   'String',metodos,...
                   'HorizontalAlignment', 'left',...
                   'FontWeight','normal',...
                   'FontName',char(tipoFuente(2)),...
                   'Position',pos, ...
                   'Enable','Off',...
                   'Backgroundcolor',[.8 .8 .8], ...
                   'Callback',Texto);              

             pos = [pos(1)+tamEdit((fila>2)+1,1)+0.01,   pos(2), ...
                    tamPop(1)     , tamPop(2)];
          end;          
      else,
            pos = [pos(1)+tamTexto(1,1)+0.012, 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.- Captura de Texto de Entrada
  %##################################   
 uicontrol('Style','text',...
            'Units','normalized',...
            'String','Texto:',...
            'HorizontalAlignment', 'left',...
            'FontWeight','Bold',...
            'FontName','Arial',...
            'Position',pos, ...
            'Backgroundcolor',[.7 .7 .7]);
          
 pos = [pos(1)+0.05,  pos(2), 0.26, pos(4)];
 Texto = sprintf('evento=%d; actualizaInterfaz;', contEventos);
 contEventos = contEventos+1;        
 textoIn = uicontrol('Style','edit',...
	         'Units','normalized',...
            'Position',pos, ... 
            'String','Esto es una prueba',...
            'Enable','on',...
            'Foregroundcolor',[0 0 0],...
            'Backgroundcolor',[1 1 1],...
            'Callback',Texto); 
  
% 3.- Botones de Envo
%######################
pos = [pos(1)-0.05, pos(2)-0.037, .15, .03];
Texto = sprintf('evento=%d; actualizaInterfaz;', contEventos);
contEventos = contEventos+1;
uicontrol('Style','pushbutton', ...
	       'Units','normalized', ...
          'Position',pos, ...
	       'String','Reestablecer Valores',...
          'Callback',Texto);
       
pos = [pos(1)+pos(3)+0.01, pos(2), pos(3), pos(4)];       
Texto = sprintf('evento=%d; actualizaInterfaz;', contEventos);
contEventos = contEventos+1;
pulsa(1) = uicontrol('Style','pushbutton', ...
	                 'Units','normalized', ...
                     'Position',pos, ...
	                 'String','Envo Texto',...
                     'Callback',Texto);         
         
 % 4.- Eliminamos variables intiles
 %###################################
 clear pos titulos tamTexto grosorFuente tipoFuente colorFuente uds metodos
 clear anguloFuente tamEdit fq aux pops tamPop tamFuente fila col Texto tamPop
  

Contact us at files@mathworks.com