Continuando o post anterior, vamos ver aqui como é o software no Rapberry Pi.
Preparando a Serial
Por padrão, a serial do Raspberry Pi está configurada para aceitar logins. Para poder usá-la no nosso programa é preciso desabilitar isto. Uma descrição do que isto envolve está aqui; um script para automatizar os passos pode ser visto aqui; mas, se você estiver com o Raspbian atualizado, você pode simplesmente rodar o raspi-config, seleciona "Advanced Options", "Serial" e dizer que não quer um "login shell" na serial. Após mudar a configuração, reinicie o Raspberry Pi.
Programando o Raspberry Pi
Existem inúmeras formas de programar o Raspberry Pi (afinal, é um computador rodando Linux). Ainda mais que neste caso o nosso acesso ao hardware se limita a comunicação serial. Como é meu costume, decidi programar em C.
A serial é acessada com as funções de e/s de baixo nível: open, write, close. Ela corresponde ao dispositivo /dev/ttyAMA0. A configuração é um pouco mais complicada, para isto existe a biblioteca termios com a função tcsetattr. E copiei este trecho de um projeto anterior, é provável que esteja configurando coisas desnecessárias neste caso.
Uma outra complicação foi detectar a digitação de uma tecla no console para encerrar o programa. Para isto usei uma rotina que achei na internet. Do jeito que está feito não está perfeito pois (a) não interrompe durante as pausas e (b) como não desliguei o buffer do teclado precisa digitar Enter. Mas quebra o galho para este teste.
Falando em pausas, usei a função sleep que é eficiente mas tem resolução de segundos. Para o software definitivo vou usar uma resolução melhor.
O código pode ser visto diretamente no github.
Para compilar no linux, basta usar o comando "cc tstDM.c". O executável vai ficar com o nome padrão de a.out; para executar você precisa informar o path: "./a.out". Grosseiro, mas suficiente.
Agora que o básico está funcionando é hora de arregaçar as mangas e fazer o programa que lê um arquivo MIDI e enviar os comandos adequados para a placa de controle. Vai demorar algum tempo, mas quando funcionar eu mostro aqui no blog.
Nenhum comentário:
Postar um comentário