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.

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