Exemplo de uma Janela com Controles no Scilab. |
O código fonte abaixo foi usado para gerar a janela do início desta postagem. Se você nunca estudou ou usou o Scilab nem tente entender o código.
*******************************************
*********************************
*********************
function ajuda(); messagebox(['Exemplo de Janela com controles. '; 'Versão: 0000.510/22.02.2012'; ' '; 'Prof. Dr. Francisco J. A. de Aquino'; 'IFCE - Campus Fortaleza'; 'Contato: fcoalves_aq@ifce.edu.br';],"modal"); endfunction // funcao M_QAM // entrada: bits e M (modulacao) // saida: simbolos function s=m_qam(bts, M); j = %i; p = 1; ps = 1; v = [1+j, 1-j, -1+j, -1-j, 3+j, 3-j, -3+j, -3-j, 1+3*j, 1-3*j, -1+3*j, -1-3*j, 3+3*j, 3-3*j, -3+3*j, -3-3*j]; n = max(size(bts)); // bits de entrada m = log2(M); // indice de modulacao ts = round(n/m); s = zeros(ts,1); vbb = s; while p<(n-2) bb=0; for k=0:(m-1) bb = bb+bts(p+k)*2^k; end bb=bb+1; s(ps)=v(bb); vbb(ps)=bb; ps=ps+1; p=p+m; end endfunction function s=m_psk(bts, M); j = %i; p = 1; ps = 1; dteta = %pi/M; n = max(size(bts)); // bits de entrada m = log2(M); // indice de modulacao ts = round(n/m); s = zeros(ts,1); vbb = s; while p<(n-m) bb=0; for k=0:(m-1) bb = bb+bts(p+k)*2^k; end s(ps)=cos(2*bb*%pi/M)+j*sin(2*bb*%pi/M); vbb(ps)=bb; ps=ps+1; p=p+m; end endfunction function s=m_ask(bts, M); j = %i; p = 1; ps = 1; dm = (M-1)/2; n = max(size(bts)); // bits de entrada m = log2(M); // indice de modulacao ts = round(n/m); s = zeros(ts,1); // disp('ok ate aqui'); vbb = s; while p<(n-2) bb=0; for k=0:(m-1) bb = bb+bts(p+k)*2^k; end //bb=bb+1; //disp(bb) s(ps)=2*(bb-dm); vbb(ps)=bb; ps=ps+1; p=p+m; //disp(p) end //disp(vbb') //s = s + 0.01*(rand(ts,1,'normal')+j*(rand(ts,1,'normal'))); endfunction // Começando a simulação: function grafico(); // Indice M de modulação: pop1 = findobj("Tag", "lista_indice"); indc = get(pop1, "String"); sel_indc = get(pop1, "Value"); disp(sel_indc); msg01 = msprintf(gettext("Você selecionou ''%s''."), indc(sel_indc)); M = 4; select sel_indc case 1 then M = 4; case 2 then M = 8; case 3 then M = 16; end // Tipo de modulação: pop2 = findobj("Tag", "lista_mod"); modc = get(pop2, "String"); sel_modc = get(pop2, "Value"); msg02 = msprintf(gettext("Você selecionou ''%s''."), modc(sel_modc)); messagebox(msg01, msg02, gettext("Popupmenu selection"), "info", "modal"); i_mod = sel_modc; // ASK = 1, PSK = 2, QAM = 3; vb = sign(rand(1,3000,'normal')) + 1; vb = vb/2; select i_mod case 1 then s1 = m_ask(vb,M); case 2 then s1 = m_psk(vb,M); case 3 then s1 = m_qam(vb,M); end fs1 = max(size(s1)) - 3; s1 = s1(1:fs1); // ruido: sel_ruido = get(lista_ruido, "Value"); AA = 0.1*(sel_ruido-1)*(sel_ruido-1); sn = AA*(rand(1,fs1,'normal')+ %i*rand(1,fs1,'normal')); s1 = s1 + sn'; // mostrando gráfico: subplot(2,2,3); plot(real(s1),imag(s1),'.'); xgrid; endfunction ////////////// Programa-Janela Principal clc; close; close; close; // Janale Principal: f1 = figure(); // Remove Scilab 'standard' menus delmenu(f1.figure_id, gettext("Arquivo")); delmenu(f1.figure_id, gettext("&Tools")); delmenu(f1.figure_id, gettext("Editar")); delmenu(f1.figure_id, gettext("?")); // Disable graphics toolbar toolbar(f1.figure_id, "off"); // Adjust figure size after toolbar removing altura = 400; largura = 500; f1.position = [50 50 largura altura]; f1.figure_name = "Janela com controles"; f1.auto_resize = "off" // simulacao - gerando o gráfico: button01 = uicontrol(f1, "Position", [largura-80 altura-30 75 20], ... "Style", "pushbutton", "FontSize", 11, ... "String", "Gráfico!", "callback", "grafico()"); // Indica texto: text_00 = uicontrol(f1, "Position", [20 altura-30 70 20], ... "Style", "text", "FontSize", 11, "String", "Caixa de texto:", ... "BackgroundColor", [1 0.5 0.5]); // texto a ser transmitido: Ltxt = 300; // largura da caixa de texto. ttx= ['Fim do texto. ']; edit01 = uicontrol(f1, "Position", [100 altura-30 Ltxt 20], ... "Style", "edit", "FontSize", 11, "String", ttx, ... "BackgroundColor", [1 1 1]); // dados do modulador: text_mod = uicontrol(f1, "Position", [20 altura-90 70 20], ... "Style", "text", "FontSize", 11, "String", ". Modulação:", ... "BackgroundColor", [1 1 1]); // Listbox used to tipo de modulacao modula = strcat([gettext("ASK") gettext("PSK") gettext("QAM") gettext("BPSK")], "|"); lista_mod = uicontrol(f1, "Position", [100 altura-90 60 20], ... "Style", "popupmenu", "FontSize", 11, ... "String", modula, "BackgroundColor", [1 1 1], ... "Tag", "lista_mod"); // Listbox - popmenu - indice de modulacao indice = strcat([gettext("M=4") gettext("M=8") gettext("M=16")], "|"); lista_indice = uicontrol(f1, "Position", [170 altura-90 60 20], ... "Style", "popupmenu", "FontSize", 11, ... "String", indice, "BackgroundColor", [1 1 1], ... "Tag", "lista_indice"); // Indica texto: text_rr = uicontrol(f1, "Position", [20 altura-120 70 20], ... "Style", "text", "FontSize", 11, "String", "Nivel de ruido:", ... "BackgroundColor", [1 0.5 0.5]); // Listbox - popmenu - indice de ruido indice_r = strcat([gettext("Sem ruido") gettext("Pouco ruido") gettext("Muito ruido")], "|"); lista_ruido = uicontrol(f1, "Position", [100 altura-120 90 20], ... "Style", "popupmenu", "FontSize", 11, ... "String", indice_r, "BackgroundColor", [1 1 1], ... "Tag", "lista_ruido"); // Ajuda ajuda_button = uicontrol(f1, "Position", [largura-110 28 80 20], ... "Style", "pushbutton", "String", gettext("Ajuda?"), ... "FontWeight", "bold", "FontSize", 11, "Callback", "ajuda()"); // Botao de saida quit_button = uicontrol(f1, "Position", [largura-130 5 120 20], ... "Style", "pushbutton", "String", gettext("Fechar janela!"), ... "FontWeight", "bold", "FontSize", 11, "Callback", "close();"); subplot(2,2,3);
Nenhum comentário:
Postar um comentário