Professional Documents
Culture Documents
Gráfico LabVIEW
Programação
Livro de receitas
Yik Yang
BIRMINGHAM - MUMBAI
Machine Translated by Google
Todos os direitos reservados. Nenhuma parte deste livro pode ser reproduzida, armazenada em um sistema de
recuperação ou transmitida de qualquer forma ou por qualquer meio, sem a permissão prévia por escrito do editor,
exceto no caso de breves citações incorporadas em artigos críticos ou resenhas.
Todos os esforços foram feitos na preparação deste livro para garantir a precisão das informações apresentadas. Contudo,
as informações contidas neste livro são vendidas sem garantia, expressa ou implícita. Nem o autor, nem a Packt
Publishing e seus revendedores e distribuidores serão responsabilizados por quaisquer danos causados ou supostamente
causados direta ou indiretamente por este livro.
A Packt Publishing tem se esforçado para fornecer informações de marcas registradas sobre todas as empresas e produtos
mencionados neste livro através do uso apropriado de letras maiúsculas. No entanto, a Packt Publishing não pode
garantir a exatidão desta informação.
ISBN 978-1-78217-140-9
www.packtpub.com
Créditos
Lavina Pereira
Revisores
Qizhen Ruan
Amy Johnson
Editor de Aquisição
Rubal Kaur Indexador
Mehreen Deshmukh
Trabalho de capa
Editores Técnicos
Conidon Miranda
Tanvi Bhatt
Dipika Gaonkar
Mônica João
Neha Mankare
Machine Translated by Google
Sobre o autor
Ele iniciou sua carreira após receber seu bacharelado e mestrado em Engenharia Elétrica
pela Virginia Tech. Em sua carreira, trabalhou em projetos de automação que utilizaram
CompactDAQ, PXI, FPGA e assim por diante em LabVIEW. Ele também passou muito tempo
com Lean Six Sigma e análise estatística com JMP. Ele é engenheiro profissional certificado
(PE) na Carolina do Norte e desenvolvedor certificado do LabVIEW (CLD).
Sobre os revisores
Amit Dongol é candidato a doutorado (Física). Ele está trabalhando na montagem de um laboratório de
pesquisa com interface LabVIEW para aquisição de dados.
Chris Larson usa o LabVIEW há nove anos. Atualmente ele trabalha como pesquisador e desenvolvedor
de funcionalidades baseadas em nuvem para LabVIEW. Ele é especialista no desenvolvimento de
sistemas que aproveitam o mundo conectado e a Internet.
Tendo crescido rodeado de computadores nos anos 80, Justin sempre soube que queria seguir uma
carreira na área da computação. Depois de estagiar na faculdade e passar mais de um ano no México
Central para sua empresa, ele percebeu todo o bem que pode ser feito ajudando a melhorar os
processos industriais (segurança, qualidade, eficiência). Isso o fez decidir que queria continuar
trabalhando em TI industrial e automação. Ele também sentiu que a indústria transformadora ainda
não viu as mesmas revoluções tecnológicas que outros sectores empresariais através dos avanços de
empresas como o Facebook e o Google.
Justin trabalha para a Summit Management Systems, Inc de Nashville, Tennessee há quase 10
anos. Comemorando seu 20º aniversário de negócios, a Summit Management Systems oferece
integração personalizada e soluções de processo em todo o mundo para o setor industrial e de
manufatura, bem como vários pacotes de software independentes que auxiliam na aquisição de
dados de dispositivos industriais e software para sistemas de gerenciamento de fluxo de trabalho de fabricação.
Gostaria de agradecer ao meu pai por todas as oportunidades que ele me deu
para me tornar quem eu sou. Desde me permitir crescer em torno de computadores
até me incentivar a entrar no campo de desenvolvimento de software, ele é a razão
pela qual pude trabalhar neste livro e revisá-lo. Obrigado pai.
Machine Translated by Google
www.PacktPub.com
Você sabia que a Packt oferece versões em e-book de todos os livros publicados, com arquivos PDF e ePub
disponíveis? Você pode atualizar para a versão do e-book em www.PacktPub.com e como cliente do livro impresso, você
tem direito a um desconto na cópia do e-book. Entre em contato conosco em service@packtpub.com para mais
detalhes.
Em www.PacktPub.com, você também pode ler uma coleção de artigos técnicos gratuitos, inscrever-se em uma
variedade de boletins informativos gratuitos e receber descontos e ofertas exclusivas em livros e e-books Packt.
MT
http://PacktLib.PacktPub.com
Você precisa de soluções instantâneas para suas questões de TI? PacktLib é a biblioteca de livros digitais online da
Packt. Aqui você pode acessar, ler e pesquisar toda a biblioteca de livros da Packt.
Índice
Prefácio 1
Capítulo 1: Compreendendo o ambiente LabVIEW 5
Introdução 5
Configurando itens essenciais 6
Configurando o drop rápido 9
Usando ferramentas de depuração 10
Criando sonda personalizada 12
Compilando EXE 14
Depurando EXE 16
Compilando um aplicativo independente 19
Índice
eu
Machine Translated by Google
Índice
iii
Machine Translated by Google
Machine Translated by Google
Prefácio
LabVIEW é uma linguagem de programação gráfica da National Instrument. Principalmente, é usado em campos de
teste e automação para controle de instrumentos, aquisição de dados e assim por diante. Neste livro, cobriremos
diferentes áreas da programação em LabVIEW com exemplos práticos que seguem padrões de codificação e regras
de design sólidos.
O Capítulo 2, Personalizando a interface do usuário, aborda diferentes funções usadas na criação de uma UI.
O Capítulo 4, Gerenciando dados, aborda como usar a memória com eficiência e controlar o fluxo de dados.
O Capítulo 7, Trabalhando com Arquivos, aborda como trabalhar com diferentes tipos de arquivos.
O Capítulo 8, Compreendendo a aquisição de dados, aborda a aquisição de dados com diferentes tipos de
instrumentos.
O Capítulo 10, Trabalhando com código e aplicações externas, aborda como usar código e aplicações externas
no LabVIEW.
Machine Translated by Google
Prefácio
Convenções
Neste livro, você encontrará vários estilos de texto que distinguem diferentes tipos de informação. Aqui estão alguns
exemplos desses estilos e uma explicação de seu significado.
Palavras de código em texto, nomes de tabelas de banco de dados, nomes de pastas, nomes de arquivos,
extensões de arquivos, nomes de caminhos, URLs fictícios, entrada do usuário e identificadores do Twitter são mostrados
a seguir: "Crie o VI principal que chama Coordinates.vi. "
Novos termos e palavras importantes são mostrados em negrito. As palavras que você vê na tela, em menus ou
caixas de diálogo, por exemplo, aparecem no texto assim: "Clique com o botão direito no anel da imagem e selecione
Adicionar item."
Feedback do leitor
O feedback dos nossos leitores é sempre bem-vindo. Deixe-nos saber o que você pensa sobre este livro—
o que você gostou ou pode ter não gostado. O feedback do leitor é importante para desenvolvermos títulos que você realmente
aproveite ao máximo.
Para nos enviar um feedback geral, basta enviar um e-mail para feedback@packtpub.com e mencionar o título do livro
no assunto da sua mensagem.
Se houver um tópico no qual você tem experiência e estiver interessado em escrever ou contribuir para um livro,
consulte nosso guia do autor em www.packtpub.com/authors.
2
Machine Translated by Google
Prefácio
Suporte ao cliente
Agora que você é o orgulhoso proprietário de um livro Packt, temos uma série de coisas para ajudá-lo a aproveitar
ao máximo sua compra.
Errata
Embora tenhamos tomado todos os cuidados para garantir a precisão do nosso conteúdo, erros acontecem.
Se você encontrar um erro em um de nossos livros – talvez um erro no texto ou no código – ficaríamos gratos se
você nos relatasse isso. Ao fazer isso, você pode evitar a frustração de outros leitores e nos ajudar a melhorar
as versões subsequentes deste livro. Se você encontrar alguma errata, informe-a visitando http://
www.packtpub.com/submit-errata, selecionando seu livro, clicando no link do formulário de envio de
errata e inserindo os detalhes de sua errata. Assim que sua errata for verificada, seu envio será aceito e a errata
será carregada em nosso site, ou adicionada a qualquer lista de errata existente, na seção Errata desse título.
Qualquer errata existente pode ser visualizada selecionando seu título em http://www.packtpub.com/support.
Pirataria
A pirataria de material protegido por direitos autorais na Internet é um problema constante em todos os meios
de comunicação. Na Packt, levamos muito a sério a proteção de nossos direitos autorais e licenças. Se você
encontrar cópias ilegais de nossos trabalhos, de qualquer forma, na Internet, forneça-nos imediatamente o
endereço do local ou o nome do site para que possamos buscar uma solução.
Por favor, entre em contato conosco em copyright@packtpub.com com um link para o material suspeito
de pirataria.
Agradecemos sua ajuda na proteção de nossos autores e nossa capacidade de oferecer conteúdo valioso.
Questões
Você pode entrar em contato conosco pelo e-mail questions@packtpub.com se tiver algum problema com
algum aspecto do livro e faremos o possível para resolver o problema.
3
Machine Translated by Google
Machine Translated by Google
Compreendendo o
1
Ambiente LabVIEW
f Configuração do essencial
f Compilando EXE f
Depurando EXE
Introdução
Este capítulo explica como configurar o LabVIEW e como usar suas funções. As duas primeiras receitas explicam como
definir configurações comumente encontradas, e as receitas restantes explicam como usar funções comuns no LabVIEW.
Machine Translated by Google
1. Para configurar a paleta Funções , clique com o botão direito no diagrama de blocos para obter a
paleta e clique com o botão esquerdo no pino do polegar para fixá-lo. Na paleta, navegue até Personalizar
| Visualize esta paleta como e selecione sua preferência sobre como a paleta deve ser
organizada. Para este exemplo, selecione Categoria (ícones e texto).
2. Em Personalizar, selecione Alterar paletas visíveis... e selecione quais categorias devem aparecer
na paleta. Somente as categorias usadas com frequência devem ser selecionadas. As categorias
não selecionadas ainda podem ser acessadas clicando na seta dupla (apontada para baixo) na
parte inferior da paleta. A captura de tela a seguir mostra a paleta Funções fixada, com o menu
Personalizar ativado:
6
Machine Translated by Google
Capítulo 1
3. Apenas a primeira categoria da paleta ficará aberta, portanto a categoria que for mais
utilizada (Programação) deverá ficar no topo. Quando a paleta é fixada, há um par de
linhas paralelas (||) à esquerda de cada categoria (seta para a esquerda ou para a
direita). As linhas paralelas são usadas para mover as categorias. A captura de tela a
seguir mostra como fica a paleta Functions após a configuração:
7
Machine Translated by Google
Como funciona...
As configurações da paleta e as opções do LabVIEW não são salvas localmente no arquivo VI (Virtual Instrument).
que contém o diagrama de blocos e o painel frontal. Eles são salvos globalmente, portanto, sempre que um
novo VI for criado, as configurações e opções salvas serão aplicadas. Dentro da pasta de instalação do
LabVIEW reside um arquivo chamado LabVIEW.ini . O arquivo contém todas as configurações e opções salvas
e é carregado quando o LabVIEW é iniciado. Se desejarmos transferir as configurações de um computador
para outro, podemos salvar este arquivo e transferi-lo para o mesmo local no outro computador.
Tanto para a paleta Controles quanto para Funções , apenas o que for necessário deve estar nelas e o
restante deve ficar oculto. A paleta Controls é para o painel frontal e a paleta Functions
paleta é para o diagrama de blocos. Demonstraremos apenas como configurar a paleta Functions , mas tenha em
mente que os mesmos procedimentos se aplicam à configuração da paleta Controls .
8
Machine Translated by Google
Capítulo 1
1. Pressione Ctrl + barra de espaço para invocar o lançamento rápido e clique em Atalho. Como um exemplo,
associaremos o atalho W + L ao loop while. Em Atalho do Diagrama, insira wl.
Em Objeto de atalho de diagrama, insira While Loop. Se não tivermos certeza sobre o nome da função,
podemos sempre encontrar a função dentro da paleta e procurar seu nome.
Por fim, clicamos em Adicionar e depois em OK para adicionar o atalho personalizado à configuração de
drop rápido. A captura de tela a seguir mostra como o atalho é adicionado:
9
Machine Translated by Google
Além de encontrar funções rapidamente, podemos atribuir um atalho a um plugin que realiza
tarefas predefinidas.
2. Para executar um plugin via atalho, pressionamos Ctrl + Espaço e o atalho do plugin.
Atalhos integrados estão disponíveis para tarefas rotineiras. A seguir estão alguns exemplos de atalhos
integrados:
Ctrl + Espaço e depois Ctrl + D criam todos os controles e indicadores para um subVI
Ctrl + Espaço e depois Ctrl + R exclui um subVI, ao mesmo tempo que limpa todos os fios
desnecessários e reconecta os quebrados
Ctrl + Espaço e depois Ctrl + T move os rótulos de todos os controles e indicadores para a
esquerda e para a direita
Se os plug-ins integrados não forem adequados, podemos personalizar nosso próprio plug-in e atribuir
um atalho a ele.
Como funciona...
Quando um atalho é associado a uma função ou tarefa, o atalho é salvo na configuração do LabVIEW para que
possa ser usado novamente.
Veja também
f Para plug-ins úteis feitos por outros usuários do LabVIEW, visite o link https://decibel.ni.com/
content/groups/quick-drop-enthusiasts?view=documents.
Existem muitos recursos no LabVIEW para depurar um programa. Os programadores baseados em texto já
devem estar familiarizados com alguns dos recursos, como entrar, sair e assim por diante, mas existem alguns
recursos que podem parecer desconhecidos.
10
Machine Translated by Google
Capítulo 1
1. Examine o botão de execução (uma seta para a direita) no diagrama de blocos para ver se ele está quebrado ou não.
Se estiver quebrado, clique nele para ver uma lista de problemas que devemos corrigir. Se clicarmos duas vezes
em um item da lista, o LabVIEW nos levará ao local do problema. Precisamos resolver todos os problemas
primeiro, antes de prosseguirmos. Para ver a aparência de uma seta quebrada, abra um novo VI e coloque um
nó add sob a paleta Numeric . Clique na seta quebrada para ver qual é a causa da seta quebrada.
2. Depois que a seta de execução ficar sólida, podemos começar a depurar o programa. Primeiro, ativamos Retain
Wire Values clicando em seu botão na barra de ferramentas do diagrama de blocos. Isso nos permitirá
examinar os valores em todos os fios. Em seguida, navegamos até o local de interesse e definimos um ponto de
interrupção clicando com o botão direito no local, selecionando Breakpoint e Set Breakpoint.
3. Depois de configurar o programa para depuração, clique na seta de execução para executar o programa.
O programa fará uma pausa no ponto de interrupção. Se colocarmos nosso ponto de interrupção em um SubVI,
podemos optar por ultrapassá-lo, para permanecermos em nosso VI atual sem nos aprofundarmos; ou podemos
intervir, para irmos ao subVI para uma investigação mais aprofundada. Se já estamos num subVI e queremos sair,
podemos sair dele. Para entrar, passar por cima ou sair, podemos clicar no botão correspondente na barra de
ferramentas do diagrama de blocos. A captura de tela a seguir mostra a parte da barra de ferramentas do
diagrama de blocos discutida:
4. Para examinar o valor de um fio, clique com o botão direito no fio e selecione Sonda. Uma caixa de diálogo
aparecerá e mostrará o valor do fio. Quando o programa não envia dados por essa conexão, o valor não é
preenchido. Depois que o valor for preenchido, ele aparecerá na caixa de diálogo. Com a sonda, podemos
visualizar os dados dentro do fio, mas não podemos modificá-los.
5. Para ativar o Highlight Execution, clicamos em seu botão na barra de ferramentas do diagrama de blocos.
Esse recurso nos permite visualizar como os dados estão realmente fluindo no programa, mas nosso programa
ficará lento. Muitos programadores do LabVIEW consideram isso útil porque lhes permite compreender
como os dados fluem em um VI.
Tenha cuidado ao usar esse recurso. Como isso torna o programa mais
lento, pode criar bugs relacionados ao tempo.
11
Machine Translated by Google
Como funciona...
As ferramentas de depuração permitem que os programadores analisem um programa em profundidade, oferecendo
recursos para controlar o fluxo do programa.
1. Usaremos o código mostrado na captura de tela a seguir para configurar a sonda personalizada.
O código contém um loop while externo que executa o loop for interno continuamente.
O loop for interno geraria um array de 0 a 10 elementos aleatoriamente, e cada elemento conteria um número
aleatório entre 0 a 30. Neste exemplo, queremos que a execução seja pausada quando a geração do array contiver
mais de 9 elementos.
12
Machine Translated by Google
Capítulo 1
2. Para criar uma sonda personalizada, clique com o botão direito no fio que alimenta o indicador da matriz U32 e
navegue até Sonda Personalizada | Novo. Quando uma caixa de diálogo aparecer, selecione Criar uma
sonda a partir de uma sonda existente e clique em Avançar. Uma caixa de diálogo com uma lista de testes seria exibida.
Na lista, em nosso exemplo, selecionamos o Conditional Unsigned32 Array Probe.
Quando uma sonda é selecionada, uma descrição detalhada sobre a sonda é mostrada abaixo da lista. É assim
que determinamos se uma sonda existente é adequada ou não para nossa aplicação. Quando clicamos em
Avançar, a próxima página aparece, e inserimos u32array como Nome do arquivo e deixamos todas as
outras opções na configuração padrão. Clicamos em Salvar. Veja a captura de tela a seguir para iniciar a
configuração:
3. Criamos um probe personalizado para nossa aplicação baseado em um existente na instalação do LabVIEW.
Para experimentar a sonda personalizada, clicamos com o botão direito no fio que alimenta o indicador
do array U32 e selecionamos Sonda Personalizada | u32array.vi. A janela de observação da sonda é
exibida; no lado direito, contém um controle de guias com duas guias. A primeira aba mostra os dados e o
tamanho do array. O tamanho da matriz é uma função para esta investigação personalizada. Não está presente
em uma sonda genérica. A segunda aba contém todas as condições que podemos definir para interromper a
execução do programa. Para nosso exemplo, definiremos a caixa de seleção para definir o Número do
elemento como critério e definiremos os critérios como maiores que nove. Depois de terminarmos a
configuração da sonda personalizada, clicamos no botão executar para iniciar o programa. Como colocamos
um nó Wait Until Next ms Multiple e o definimos como igual a 1000ms, o loop while externo irá iterar uma vez a
cada segundo. Enquanto o programa está em execução, podemos ir para a janela Probe Watch e observar os
dados. Assim que o critério for atendido, o programa será pausado e poderemos testar outros fios no diagrama
de blocos, se quisermos.
13
Machine Translated by Google
Como funciona...
Quando criamos um probe personalizado baseado em um probe existente, podemos usar os probes localizados
na pasta vi.lib da pasta de instalação do LabVIEW. Para usar uma sonda personalizada, devemos salvá-la
na pasta \default localizada em <LabVIEW>\user.lib\_probes ou na pasta Probes localizada em
<Documents>\LabVIEW Data\. Se o probe for salvo no primeiro caminho (a pasta padrão ), o LabVIEW usará
esse probe personalizado como o probe padrão para aquele tipo de dados específico.
Compilando EXE
A máquina onde iremos implantar nosso código geralmente não possui software de desenvolvimento
LabVIEW. Para implantar nosso código, precisamos instalar o mecanismo de tempo de execução LabVIEW
com a versão correta (gratuitamente) e implantar um executável em vez de implantar um conjunto de VI.
1. Para criar um projeto, a maneira mais fácil é selecionar Criar Projeto e depois Projeto em Branco
na tela inicial. Ou, se já tivermos um VI, podemos selecionar Projeto | Criar projeto | Projeto
em branco. Dentro do projeto, clique com o botão direito em Meu Computador e selecione Novo
| VI. Agora que o VI está dentro do projeto, criaremos um VI chamado EXEvi.vi para calcular uma
forma de onda senoidal de 1 ciclo com determinada amplitude, fase e frequência. Ele contém uma
estrutura de evento com um caso de evento que será executado quando o controle booleano Read File
for clicado. Veja a captura de tela a seguir para ver o exemplo:
14
Machine Translated by Google
Capítulo 1
3. Para compilar o executável, clique com o botão direito em Build Specifications e selecione New |
Aplicativo (EXE) dentro do projeto. A caixa de diálogo Propriedades do meu aplicativo aparecerá
e configuraremos cada categoria da caixa de diálogo. Na categoria Informações, inserimos
ExeExampleBuild sob o nome Especificações de compilação . Esse nome apareceria em Build
Specification em nosso projeto. Entramos ExeExample.exe
sob o nome do arquivo de destino, e esse é o nome real do executável. Para o diretório de
destino, insira um local conveniente para desenvolvimento.
4. Na categoria Arquivos de origem, selecione EXEvi.vi e clique na seta para a direita ao lado de
VIs de inicialização para que o VI apareça quando o executável for invocado. Quanto ao Always
Included, se o programa chama o VI dinamicamente ou por referência, trabalha com arquivos,
e assim por diante, podemos incluir essas dependências que o programa utiliza. Como o subVI,
SinWave.vi, faz parte do programa, o compilador sabe que precisa incluir o subVI na compilação
sem especificação.
5. Em Destinos deixaremos tudo como padrão. Se tivermos dependências (subVIs, arquivos e assim
por diante), podemos escolher onde colocá-las em relação ao executável. As dependências
podem ir para o executável ou para um diretório de suporte. Podemos adicionar destinos
adicionais se assim o desejarmos. Nesta categoria estamos configurando todos os destinos
para onde os arquivos podem ir.
15
Machine Translated by Google
Como funciona...
Para que um executável possa ser executado em um computador, ele deve ter pelo menos o mecanismo de tempo
de execução LabVIEW com a versão correta. Alguns outros drivers de dispositivo também podem ser necessários.
Discutiremos esse tópico na receita Compilando uma aplicação autônoma neste capítulo.
Depurando EXE
Às vezes, nosso código funcionará perfeitamente no ambiente de desenvolvimento, mas falhará
miseravelmente quando implantarmos e executarmos seu executável em outro computador. Quando isso acontecer,
podemos colocar mais indicadores no VI para exibir dados em locais relevantes do programa.
Então, podemos recompilar o executável e usar os dados extras para encontrar o bug. Se isso ainda não
funcionar, podemos percorrer o executável de forma semelhante ao que fazemos no ambiente de
desenvolvimento.
16
Machine Translated by Google
Capítulo 1
2. Depois de verificar se podemos executar ping na máquina EXE a partir da máquina DEV, precisamos
recompilar o executável com a opção Habilitar depuração selecionada, para que o diagrama de
blocos seja compilado no executável para fins de depuração. A opção está dentro das propriedades
do executável e na categoria Avançado. Dentro da opção Habilitar depuração, há outra opção
que podemos selecionar; é Aguarde o depurador na inicialização.
Se selecionarmos essa opção, ao clicar duas vezes no executável para executá-lo, ele não será
executado e aguardará a conexão do depurador. Para nosso exemplo, selecionaremos apenas
a opção Habilitar depuração.
17
Machine Translated by Google
3. Na máquina EXE, clique duas vezes no seu executável para executá-lo. Enquanto estiver em execução,
abra o sistema de desenvolvimento LabVIEW na máquina DEV. Na janela de inicialização, selecione
Operar | Depurar aplicativo ou biblioteca compartilhada. A caixa de diálogo Depurar aplicativo
ou biblioteca compartilhada aparece, inserimos o endereço IP da máquina EXE e clicamos em
Atualizar. Em Aplicativo ou biblioteca compartilhada, aparecerá o nome do executável que está
rodando na máquina EXE, clique em Conectar. Veja um exemplo na captura de tela a seguir:
4. Após a conexão ser estabelecida, o painel frontal do executável aparecerá na máquina DEV. No painel
frontal, clicamos com o botão direito e selecionamos Depuração Remota | Mostrar diagrama de
blocos. Veja um exemplo na captura de tela a seguir. Quando o diagrama de blocos é mostrado,
podemos usar todas as ferramentas de depuração do LabVIEW.
18
Machine Translated by Google
Capítulo 1
5. Se não conseguirmos fazer a conexão, a máquina EXE pode ter um firewall que está
impedindo a conexão da máquina DEV. Para resolver esse problema, podemos abrir a porta 3580 através
do Firewall do Windows para o NI Service Locator. Se esta abordagem falhar, podemos instalar o software
de desenvolvimento LabVIEW na máquina EXE e conectar-se ao host local (a ele mesmo) para depuração.
Como funciona...
Para depurar um executável em uma máquina que não possui o ambiente de desenvolvimento LabVIEW
instalado, um executável versão debug pode ser implantado e conectado a outro computador, que esteja
na mesma rede e com o ambiente de desenvolvimento LabVIEW instalado.
3. Na categoria Destino podemos configurar para onde irá o conteúdo do nosso programa.
Usaremos a configuração padrão, e isso criará uma pasta dentro dos Arquivos de Programas
pasta em sua unidade local.
19
Machine Translated by Google
Como funciona...
Em um aplicativo independente compilado, ele pode ser enviado como um instalador para implantação
em outra máquina. No instalador está incluído tudo o que é necessário para executar um programa. Basta
o usuário clicar duas vezes no instalador recebido e o programa com todas as suas dependências será
instalado automaticamente.
20
Machine Translated by Google
2
Personalizando o
Interface de usuário
f Personalizando controles
f Criando subpainéis
Introdução
Este capítulo apresenta dicas sobre como criar uma interface de usuário. Demonstraremos diferentes recursos de UI no design
de UI, como personalizar um controle, adicionar menu de tempo de execução, criar uma caixa de diálogo, usar controle de imagem 2D,
criar animação simples e criar subpainéis. Maneiras de gerenciar a UI, como dimensionar uma caixa de diálogo automaticamente e
atualizar controles com mecanismo de ação, também serão demonstradas.
Machine Translated by Google
Personalizando controles
No LabVIEW, existem diferentes estilos de controles para você escolher. Estilos de controle como clássico, moderno e
assim por diante atenderiam à maioria das necessidades de design de UI. Além disso, existem outros estilos que podem ser
baixados do OpenG. No entanto, às vezes, precisamos de um controle para ter uma aparência específica e podemos
personalizar esses controles especiais no LabVIEW.
Preparando-se
Para completar esta receita, é necessário o ambiente de desenvolvimento LabVIEW. Neste exemplo, o LabVIEW 2012 é usado.
Para personalizar o controle numérico, são necessárias uma imagem de um carro azul e uma imagem de um carro amarelo.
2. Começaremos a construir o painel frontal. Para criar uma pista com um carro de corrida, clique com o botão direito
no painel frontal e vá em Clássico | Numérico | Deslizamento horizontal.
5. No tipo def, clique em Alterar para Modo Personalizar (ícone de chave inglesa).
6. Clique com o botão direito no botão e selecione Importar do arquivo no mesmo tamanho, conforme mostrado
na captura de tela a seguir:
22
Machine Translated by Google
Capítulo 2
11. Para criar um sinal que inicia/para a corrida, clique com o botão direito no painel frontal e
vá para Moderno | Booleano | LED redondo.
13. Mantenha a cor Ligada como verde e mude a cor Desligada para vermelho.
15. Para o texto On, digite GO, e para o Off Text, escreva STOP.
16. Clique com o botão esquerdo no LED e arraste seu canto para ampliá-lo.
17. Clique com o botão direito no controle e selecione Alterar para Indicador.
18. Para criar um indicador de status, clique com o botão direito no painel frontal e vá em Clássico | String e caminho |
Cadeia Simples.
19. Para tornar transparente o entorno da String Simples, pressione Ctrl + Shift + clique com o botão direito no painel
frontal e selecione a ferramenta de coloração.
20. Com a ferramenta de coloração, clique com o botão direito ao redor do indicador Simple String e selecione
transparência para a cor de fundo e de primeiro plano. Vemos a seguinte captura de tela do painel frontal após
executar as etapas 1 a 17:
22. Crie e salve um tipo de enum def. com estados: Inicializar, Inativo, Executar, Concluído e Sair.
23
Machine Translated by Google
23. Para o loop while, crie quatro registradores de deslocamento clicando com o botão direito e selecionando
Add Shift Register; um para BlueCar, um para YellowCar, um para Resultado e um para
Estado. Conecte esses quatro registradores e configure o registrador de deslocamento de estado
para Inicializar. Coloque um nó Wait Until Next ms Multiple dentro do loop while e conecte 500 ms
a ele. Crie uma variável local para o controle Trigger Boolean e defina-a como false para inicializá-
lo. A condição de parada é definida com o valor booleano padrão, que é falso.
A máquina de estado e seu estado Inicializar são mostrados na captura de tela a seguir:
24. Construa o estado "Idle" com uma estrutura de evento, conforme mostrado na imagem a seguir:
25. Construa o segundo caso de evento dentro do estado Idle , conforme mostrado a seguir
captura de tela:
24
Machine Translated by Google
Capítulo 2
25
Machine Translated by Google
Como funciona…
O programa mostrado na seção anterior é uma simulação de corrida. São criados dois controles personalizados
com carros de corrida amarelos e azuis, e eles são conduzidos por números aleatórios. Um grande LED é usado para
iniciar a corrida, e o status da corrida é mostrado com um simples indicador de string.
As imagens dos carros de corrida foram obtidas na internet e em um software gratuito chamado GIMP.
(http://www.gimp.org/) foi usado para tornar o fundo das imagens transparente.
Para o indicador de status, uma String Simples Clássica é usada para que o fundo possa ser colorido como
transparente; o fundo não aparecerá e cercará o carro. Para trabalhar com imagens no LabVIEW, o formato Portable
Network Graphics (png) é o preferido.
O programa começa com o estado Inicializar para inicializar todos os indicadores e registradores de deslocamento
e prossegue para o estado Idle . No estado Idle , possui uma estrutura de eventos. O programa não passará neste
estado a menos que o Trigger tenha um evento de alteração de valor. Depois que o valor Trigger é alterado, o
programa passa para o estado Run . Se o painel fechar? filtro ocorrer, o programa descartará o painel
Fechar? evento e parar o programa. Neste caso, o Painel Fechar? evento é filtrado, então o painel não será
fechado. No estado Run , dois geradores de números aleatórios separados são usados para acumular a distância
percorrida por cada carro. Se algum dos carros cruzar a linha de chegada (dentro de 50 ms), o programa
passa para o estado Concluído ; caso contrário, o programa volta ao estado Executar . Se o carro azul vencer,
um valor booleano verdadeiro será a saída. Se o carro amarelo vencer, um valor booleano falso será a saída.
O estado Concluído produzirá o resultado com base no valor booleano e transitará o programa para o estado Sair ,
onde o programa encerra tudo.
Veja também
f Para obter mais informações sobre a arquitetura da máquina de estado, consulte o Capítulo 3, Trabalhando
com arquiteturas comuns
26
Machine Translated by Google
Capítulo 2
Para tornar um programa mais profissional, o menu runtime é essencial. Nesta receita, criaremos um programa com menu de
atalho de tempo de execução que é invocado clicando com o botão direito em um indicador e um menu de tempo de execução
que reside na barra de menu superior do programa.
2. Crie um indicador gráfico clicando com o botão direito no painel frontal e navegue até Modern |
Gráfico | Gráfico de forma de onda.
3. Crie uma parada booleana clicando com o botão direito no painel frontal e navegando até Modern | Booleano | Botão
de parada. Primeiro, começaremos criando um menu de atalho com o botão direito do mouse para o gráfico.
4. Clique com o botão direito no gráfico e vá para Avançado | Menu de atalho em tempo de execução | Editar....
7. Clique no botão adicionar no canto superior esquerdo para adicionar outra entrada de menu.
9. Clique no botão adicionar no canto superior esquerdo para adicionar outra entrada de menu.
11. Clique no botão adicionar no canto superior esquerdo para adicionar outra entrada de menu.
12. Em Propriedades do item, vá para Item do aplicativo | Itens Visíveis | Menu inteiro.
27
Machine Translated by Google
13. Navegue até Arquivo | Salvar | Salve em arquivo e salve o menu como RunTimeShortcut. rtm na mesma pasta do VI.
A captura de tela a seguir é de um menu de atalho concluído:
14. Depois de terminarmos o menu de atalho do botão direito, prosseguiremos para adicionar um personalizado
barra de menu superior.
15. Para criar uma barra de menu superior personalizada para o painel frontal, vá em Editar | Menu de tempo de execução....
17. Em Propriedades do Item, selecione Usuário em Tipo de Item e insira Tarefas como o
Nome do item.
18. Clique no botão adicionar no canto superior esquerdo para adicionar outra entrada de menu.
20. Clique na seta para a direita para tornar Multiplicado por 2 um subitem de Tarefas.
21. Clique no botão adicionar no canto superior esquerdo para adicionar outra entrada de menu.
22. Em Propriedades do item, selecione Usuário em Tipo de item e insira Dividido por 2
como o nome do item.
23. Clique na seta para a direita para tornar Multiplicado por 2 um subitem de Tarefas.
24. Vá para Arquivo | Salve e salve o arquivo como RunTimeTop.rtm na mesma pasta do VI.
28
Machine Translated by Google
Capítulo 2
27. Crie o segundo caso de evento, “Gráfico”: Seleção do Menu de Atalho (Usuário),
conforme mostrado na imagem a seguir. Para a estrutura interna do caso, o caso
"Decremento" é mostrado. A estrutura case possui mais dois casos que não são
mostrados: Increment e Default. Para o caso Incremento, use o nó incremento. Para o
caso padrão, basta conectar o fio de entrada.
29
Machine Translated by Google
28. Crie o último caso de evento conforme mostrado na captura de tela a seguir. Para a estrutura interna
do caso, é mostrado o caso "Dividido por 2" . A estrutura do caso possui mais dois casos que não
são mostrados. Eles são multiplicados por 2 e padrão. Para o caso Multiplicado por 2, use o nó de
multiplicação com 2 e o fio de entrada como entradas. Para o caso padrão, basta conectar o fio de
entrada.
Como funciona…
O programa gera números aleatórios e os exibe em um gráfico. O usuário pode optar por dimensionar ou deslocar
os números no gráfico.
A estrutura do evento possui três casos. O caso de tempo limite é acionado uma vez a cada segundo e irá gerar
uma matriz de 10 números aleatórios e exibi-los em um gráfico. Se o usuário clicar com o botão direito no gráfico
e selecionar Aumentar/Decrementar, o evento de seleção do menu de atalho será acionado e os valores do
gráfico serão alterados de acordo. Se o usuário selecionar o menu Tarefas na parte superior e selecionar
Multiplicado/Dividido por 2, o evento de seleção de menu será acionado e os valores do gráfico serão
dimensionados de acordo.
Criando um diálogo
A caixa de diálogo é um pop-up simples que coleta informações do usuário para o programa. Nesta receita,
criaremos um diálogo simples.
2. Crie o painel frontal conforme mostrado na próxima imagem. O conjunto de controles à direita está
dentro de uma definição de tipo. cluster e ele precisa ser criado e salvo.
3. Para definir os valores padrão para todos os controles, podemos escrever um valor para cada
controle usando uma variável local ou definir um valor padrão manualmente. Para definir um valor
padrão manualmente, insira o valor padrão no controle. Clique com o botão direito no controle.
Selecione Operações de Dados e Torne o Valor Atual como Padrão.
30
Machine Translated by Google
Capítulo 2
31
Machine Translated by Google
6. Na barra de menu superior do painel frontal, vá para Arquivo | VI Propriedades. Na caixa de diálogo de edição,
selecione a opção Diálogo . Verifique a captura de tela a seguir. Em Posição do tempo de execução da janela,
podemos selecionar em qual local do monitor a caixa de diálogo aparece.
Como funciona…
Este VI é usado como SubVI dentro de um programa. Quando o programa chama esse VI de diálogo, o diálogo aparece e o
thread do programa que depende dos dados do diálogo é interrompido. O usuário inseriria todas as informações e clicaria
em OK. O programa preenche um cluster e passa os dados do SubVI para o programa que o chama.
Para que a caixa de diálogo apareça, sua aparência deve ser definida como caixa de diálogo dentro das propriedades do
VI. A opção faz com que o VI a mostre no painel frontal durante a execução. Criar controles para obter dados de usuários e
usar um cluster para transmitir esses dados parece redundante. É possível usar um cluster para obter e passar os dados do
usuário. Porém, quando os controles estão dentro do cluster, ele tem menos flexibilidade para decoração.
32
Machine Translated by Google
Capítulo 2
Veja também
f Se o diálogo for usado para exibir uma mensagem sem a necessidade de coletar informações dos usuários
enquanto permite que o programa continue, um diálogo chamado dinamicamente deverá ser usado. Para obter
mais referências sobre este tópico, consulte a receita Chamando um VI dinamicamente no Capítulo 3,
Trabalhando com Arquiteturas Comuns
O tamanho da caixa de diálogo é ajustado e salvo manualmente, de modo que apenas o que se pretende ver seja mostrado
quando a caixa de diálogo aparecer. No entanto, sempre que uma caixa de diálogo for modificada, o tamanho poderá
precisar ser ajustado novamente. Para evitar o problema de ajustar o painel frontal sempre que uma alteração é feita,
esta receita fornece uma maneira de dimensionar uma caixa de diálogo automaticamente.
Para começar a construir o VI para dimensionar um diálogo automaticamente, precisamos executar os seguintes passos:
2. Crie o diagrama de blocos conforme mostrado nas imagens a seguir. Os seis valores contidos em enum
são Inicializar, Encontrar Altura Máxima, Definir Origem, Definir Limites do Painel, Centralizar FP e
Desligar. O primeiro estado Initialize obtém a referência do VI para o painel frontal que gostaríamos
de dimensionar automaticamente. A referência do painel é obtida assumindo que existe apenas um
painel no painel frontal. São obtidas as referências de todas as decorações dos painéis frontais.
33
Machine Translated by Google
3. Crie o próximo caso, "Encontrar Altura Máxima". Examina a altura de toda a decoração do painel frontal
e extrai a referência da decoração com altura máxima. Consulte a seguinte captura de tela:
4. Crie o próximo caso "Set Origin", conforme mostrado na imagem a seguir. Ele define o
origem do painel frontal até o canto superior esquerdo da decoração maior:
34
Machine Translated by Google
Capítulo 2
5. Crie o próximo caso "Definir limites do painel", conforme mostrado na imagem a seguir.
Fixa o painel frontal vinculado à decoração maior.
6. Crie o próximo caso "Center FP", conforme mostrado na imagem a seguir. Ele centraliza
painel frontal quando mostrado no monitor.
35
Machine Translated by Google
7. Crie o estado final “Desligamento”, conforme mostrado na imagem a seguir. Fecha todas as
referências de nós de propriedade usados em estados anteriores. Ele interrompe a máquina de
estado definindo a condição de parada como verdadeira.
8. No painel frontal, conecte o controle de caminho usado no estado Inicializar ao canto superior
esquerdo do padrão de terminais. Veja a seguinte captura de tela:
9. Vamos construir um VI que use o SubVI que construímos nos passos 1 a 8. Construa o painel frontal
conforme mostrado na imagem a seguir:
36
Machine Translated by Google
Capítulo 2
Como funciona…
Esta receita constrói um SubVI AutoResizeVI.vi que é chamado por outro VI para redimensionar seu painel frontal em
torno de uma moldura decorativa. Ele usa uma máquina de estado simples como arquitetura.
Primeiro, a máquina de estado entra no estado Inicializar para abrir as referências do VI chamador, do painel do
VI chamador, do Painel do VI chamador e das decorações do VI chamador em seu painel frontal. No próximo estado
Find Max Height , a referência para a decoração com a altura máxima é extraída da matriz de referências de
decoração. No próximo estado Definir Origem, as coordenadas do canto superior esquerdo da decoração são
definidas como a origem do Painel. No próximo estado Definir Limites do Painel, o limite da decoração é definido igual
ao limite do painel frontal. No estado Center FP , o painel frontal é movido para o centro do monitor. Finalmente, no
desligamento
estado, todas as referências são fechadas e a condição de parada para o loop while é definida como verdadeira
para sair do programa.
No VI chamador, ele chama AutoSize.vi para redimensionar seu painel frontal para o tamanho de sua decoração.
Em seguida, aguardará que o usuário clique em sair para sair do programa.
37