• Nenhum resultado encontrado

3.4 Interface Série

3.4.4 Programa “Interface com os receptores”

modo corresponde a iniciar os processos na linha de comandos (como executáveis) mas a partir de uma Interface Web.

Um dos argumentos comuns nos vários processos é a identificação do receptor. Assim é possível tratar os dois receptores independentemente, sendo possível alterar parâmetros, ou receber informação, apenas de um dos receptores de GPS da estação.

O envio da mensagem propriamente dito é realizado não por nenhum destes processos, mas pelo programa “Interface com os receptores”. Para cada uma das mensagens está definido um semáforo e, para algumas das mensagens estão definidos também segmentos de memória partilhada. Os segmentos de memória existem nas mensagens que têm alguns parâmetros definidos pelo utilizador, como campos da mensagem. Assim no programa “Interface com os receptores”, esta informação está disponível por uma das forma de IPC. Os semáforos são utilizados como variáveis de estado, e indicam ao programa responsável pelo envio das mensagens se existe alguma que deve ser enviada para um dos dois receptores. Se um semáforo para uma dada mensagem estiver a “verde” o programa “Interface com os receptores” envia para um dos receptores (o semáforo tem a informação de qual dos dois receptores foi escolhido pelo utilizador) a mensagem em causa.

3.4.4 Programa “Interface com os receptores”

A interface com os dois receptores de GPS da estação do IT é realizada apenas por um programa. Na directoria de trabalho o programa está identificado a partir do nome AC12

Interface. Na linha de comandos o administrador tem a opção de iniciar o programa para um

dos receptores, ou para os dois, bastando para isso introduzir o argumento “/dev/ttyS0” e “/dev/ttyS1” para proceder à interface com o receptor ligado à porta série 0 e 1, respectivamente. No trabalho são usados os dois receptores, estando por isso a correr os dois processos com os dois argumentos.

Antes de iniciar a interface com os receptores é necessário definir determinadas características para a comunicação a partir das duas portas DB-9 do computador seguindo o protocolo RS-232. No ponto 2.2.1 estão referidos alguns dos pontos essenciais para efectuar a comunicação:

ritmo binário;

bits de dados;

bits de paragem;

paridade.

A definição destes parâmetros no programa “Interface com os receptores” tem que estar de acordo com as opções disponíveis nos receptores usados no trabalho. Se por exemplo, o ritmo binário escolhido para os receptores não for igual ao definido no programa para a comunicação

33

com os mesmos, o número de bytes lidos das portas série seria zero, não existindo por isso qualquer tipo de interface com os receptores. Para além destes parâmetros, existe também a necessidade de definir outros, sendo estes os comuns entre os receptores e o computador.

Os receptores usados no trabalho dispõem da opção de pré-definir mensagens para serem enviadas automaticamente por estes, sem ser necessário o administrador da estação requisitar o envio de determinada mensagem. Por exemplo, se o administrador quisesse que a mensagem com identificador GSV fosse enviada pelo receptor periodicamente (de 1 em 1 segundo) e fosse recebida na porta A, o formato da mensagem a enviar para o receptor seria:

$PASHS,NME,GSV,A,ON,1,13,10

A mensagem definida em cima teria que ser enviada apenas uma vez dado que o receptor guarda essa informação. A periodicidade da mensagem é definida pelo administrador da estação, e o seu valor tem que estar definido entre 1 e 999 segundos [8].

Para o presente trabalho foram definidas sete mensagens com um envio periódico de 1 segundo. As mensagens usadas estão definidas no ponto 3.4.1 e têm o identificador:

 GGA, GSV, UKO, ALM, PBN, SNV e MCA.

A mensagem com identificador SNV não é enviada periodicamente com 1 segundo, pois tem dados particulares. Por conter as efemérides dos satélites e devido ao facto de a actualização dos seus valores ser feita com um período muito superior a 1 segundo, o receptor envia a mensagem com um período também superior a 1 segundo. As restantes mensagens são enviadas com um período de 1 segundo.

O programa “Interface com os receptores” corre num ciclo de 0,5 segundos. Na Figura 3.9 estão esquematizados os pontos mais relevantes do ciclo e do funcionamento do programa “Interface com os receptores”.

A primeira verificação feita pelo programa, é se existe alguma mensagem criada. Estas mensagens estão descritas no ponto 3.4.3, e se existir alguma mensagem criada significa que foi dada uma “ordem” pelo administrador ou por algum utilizador autorizado para o envio de uma mensagem em particular.

Após a verificação, é feita a leitura de todos os dados enviados pelo receptor através da porta A. Estes dados são guardados num vector de caracteres.

A comunicação com os receptores não é síncrona, e assim no momento da leitura pode acontecer que a última mensagem guardada no vector de caracteres não esteja completa, sendo a leitura da restante mensagem feita no ciclo seguinte. Assim é necessário verificar se

34

no ciclo anterior existiu dessincronização. Se ocorreu é necessário realizar a descodificação da mensagem em causa e o respectivo processamento de dados.

Figura 3.9 – Ciclo do programa “Interface com os receptores”.

A descodificação das mensagens é feita começando por procurar o carácter “$”. Depois é necessário identificar o cabeçalho e a identificação da mensagem, guardando os dados num vector. Algumas das mensagens terminam com o carácter “*”, outras têm definido um número de bytes total. Antes de se realizar o processamento dos dados, é necessário verificar se as mensagens recebidas são válidas. Todas a mensagens têm no fim um checksum que permite