13.1.4. Executando scripts#

O botão iniciar – a seta verde abaixo do botão conectar, ou Ctrl+R – envia o script da aba do editor atual para a câmera conectada e o executa. Enquanto um script roda, o botão iniciar se transforma em um botão parar que o interrompe. Esses dois botões são o laço central de todo o desenvolvimento na câmera: editar, iniciar, observar, parar, editar de novo.

Dois detalhes desse laço importam. Primeiro, o script é enviado para a RAM da câmera e executado lá – iniciar um script não grava nada no armazenamento da câmera, e o script desaparece após um reset. Segundo, o que roda é a aba atual do editor, exatamente como mostrada, salva ou não. Não há uma etapa separada de upload nem uma cópia obsoleta na câmera para ficar fora de sincronia com seu editor. A única liberdade que a IDE toma é remover os comentários da cópia que envia: o código-fonte do script fica na RAM da câmera enquanto ela compila, e os exemplos cheios de comentários ficam menores sem eles. As linhas nunca são removidas, apenas esvaziadas, de modo que os números de linha em um traceback continuam correspondendo ao seu editor.

Enquanto um script roda, sua saída de print() flui para o terminal serial e cada quadro que ele captura aparece no visualizador do frame buffer, e tudo o que ele publica como canal aparece na visualização Canais. Quando um script lança uma exceção não tratada, o traceback é impresso no terminal serial, a IDE leva o editor à linha culpada e a marca em vermelho com o erro ao lado – para uma aplicação com vários arquivos, ela primeiro abre o arquivo nomeado a partir da unidade da câmera. A marca some quando você edita o arquivo, executa de novo ou desconecta. Quando um script para, por Stop ou por travar, a visualização Canais mantém na tela os últimos valores que ele publicou até o próximo script começar.

13.1.4.1. Tornando um script permanente#

Para fazer a câmera executar um script sem o IDE – na inicialização, de forma autônoma, em campo – armazene o script na câmera como main.py. Tools → Save open script to OpenMV Cam (as main.py) grava a aba do editor atual no drive da câmera com esse nome, oferecendo no caminho a opção de remover comentários e comprimir os espaços em branco – o que reduz o arquivo, mas entrega uma cópia ilegível – e Tools → Reset OpenMV Cam reinicia a câmera para que ela inicialize no script armazenado. Juntas, elas constituem a etapa de deploy: a partir daí, a câmera executa o seu script sempre que tiver energia, com IDE ou não.

Enquanto uma câmera reiniciada está executando seu main.py armazenado, o IDE ainda pode se conectar a ela – com Stop Script on Connect/Disconnect ativado (o padrão), conectar interrompe o script armazenado e devolve o controle ao editor.

Ver também

Congelando scripts no firmware para o que main.py significa na sequência de boot da câmera, e para mover uma aplicação concluída inteiramente para fora do armazenamento editável.

13.1.4.2. O drive da câmera#

O sistema de arquivos em flash da câmera (e o cartão SD, quando há um inserido) é montado no host como um drive flash USB. Tools → Open OpenMV Cam Drive folder o abre no seu gerenciador de arquivos. É aqui que você copia módulos de bibliotecas, arquivos de modelo e recursos que o script importa ou carrega, e onde você recupera as imagens e logs que ele salvou. O caminho do drive também aparece na barra de status.

Os arquivos que um script cria não aparecem no host imediatamente: o host faz cache do sistema de arquivos a partir do momento em que o drive é montado, de modo que um snapshot salvo pelo script em execução permanece invisível até que o drive seja remontado. Tools → Reset OpenMV Cam o remonta – a maneira rápida de acessar o que o script acabou de gravar.

Uma ressalva: a câmera e o host compartilham esse sistema de arquivos, e gravações simultâneas de ambos os lados podem corrompê-lo. Copie arquivos enquanto nenhum script estiver gravando no armazenamento, e ejete corretamente antes de retirar o cartão.