• Nenhum resultado encontrado

N´ o Diagn´ ostico

No documento Instrumentação de um veículo submersível (páginas 128-136)

4.5 Implementa¸c˜ ao do Sistema de Comunica¸c˜ ao e Controlo

4.5.3 N´ o Diagn´ ostico

Quando se pretende fazer um diagn´ostico da rede, ´e poss´ıvel “escutar” mensagens

que circulam no barramento, ligando um n´o diagn´ostico. Esse n´o recebe todas

as mensagens e retransmite-as pela porta s´erie para o computador. Mas antes de

as retransmitir para o computador, o n´o diagn´ostico converte a frame CAN numa

frame Serial (/’[email protected].@l/), que pode ser enviada pela porta s´erie e interpretada pela

aplica¸c˜ao que corre no computador.

Para se poder utilizar a porta s´erie ´e necess´ario ter esta porta configurada, de forma

a poder enviar e receber informa¸c˜ao. Para se utilizar a porta s´erie criaram-se as

vari´aveis presentes no c´odigo 4.5.

public String port = "/dev/ttyUSB0";

public int baudRate = 9600;

private BufferedWriter bw;

private BufferedReader br;

private OutputStreamWriter osw;

4.5. IMPLEMENTAC¸ ˜AO DO SISTEMA DE COMUNICAC¸ ˜AO E CONTROLO 99

private SerialPort sp = null;

C´odigo 4.5: Vari´aveis de configura¸c˜ao da porta s´erie no Java

O utilizador, quando inicia o processo de an´alise das mensagens CAN pela porta

s´erie, escolhe a porta a utilizar, porta essa onde tem a sua liga¸c˜ao USB ao PIC. Para

facilitar esta tarefa e permitir que v´arias portas estejam ligadas e o utilizador apenas

escolha uma (n˜ao obrigatoriamente a porta por defeito), foi criado um sistema de

janelas (figuras4.19 e 4.21) para que este disponha de uma forma mais intuitiva de interagir com o sistema.

Figura 4.19 – Janela criada para escolher a porta s´erie a utilizar

Depois de escolher a porta a utilizar e clicar em SET, a janela fecha e aparece outra,

vis´ıvel na Figura 4.20, que permite enviar um buffer de valores pela porta s´erie selecionada.

Figura 4.20 – Janela criada para escolher a porta s´erie a utilizar

100 CAP´ITULO 4. CAP´ITULO DE COMUNICAC¸ ˜AO E CONTROLO

tecla Enter. Os valores introduzidos s˜ao colocados no buffer de sa´ıda e s˜ao pos-

teriormente enviados pela porta s´erie, com RS232, para o PIC, onde ser˜ao depois

colocados na lista de sa´ıda para colocar a mensagem CAN no barramento.

Um dos objetivos do n´o diagn´ostico ´e escutar o barramento e colocar mensagens

no mesmo. A tentativa inicial foi enviar uma String com os valores, que permitiu

uma implementa¸c˜ao mais simples e r´apida do c´odigo. No entanto, esta forma de

retransmiss˜ao das mensagens n˜ao ´e a mais vi´avel. Quando a troca de dados ´e muito

grande, enviar carateres em vez do pr´oprio valor faz com que o sistema perca frames.

O tempo de transmiss˜ao das mensagens ´e mais elevado.

Assim criou-se a frame Serial, com a composi¸c˜ao que se pode ver na Figura4.21.

Figura 4.21 – Esquema da frame Serial desenvolvida

Para que o n´o diagn´ostico seja capaz de saber que vai come¸car a receber uma men-

sagem nova pela porta s´erie RS232, foi necess´ario atribuir um start of frame (SOF)

`

as mensagens. O valor escolhido foi 0x7E. Como este valor indica o in´ıcio de uma

mensagem nova, n˜ao pode ser utilizado no meio de uma mensagem, pois pode con-

fundir o algoritmo de leitura da porta s´erie. Ent˜ao optou-se por codificar o valor

0x7E, fazendo o XOR do mesmo com 0x04, sempre que ´e necess´ario colocar o valor

4.5. IMPLEMENTAC¸ ˜AO DO SISTEMA DE COMUNICAC¸ ˜AO E CONTROLO 101

que o valor 0x7C passa a indicar que o valor original foi codificado. Esta codifica¸c˜ao

´

e muito importante na fase de codifica¸c˜ao da mensagem CAN para uma mensagem

Serial, e posteriormente na leitura e descodifica¸c˜ao da frame Serial no algoritmo de

rece¸c˜ao do computador.

A Figura 4.22 mostra a m´aquina de estados que foi utilizada para ler a mensagem Serial.

A fun¸c˜ao de leitura vSerial ReadBuffer vai verificar se o buffer de entrada est´a

pronto a receber dados, verificando uma flag, e se chegou algum valor pela porta

s´erie. Caso ambas as condi¸c˜oes sejam verdadeiras, o programa lˆe o valor e se este

for igual a 0x7E, que indica o in´ıcio de uma frame Serial, passa `a etapa seguinte.

Caso as condi¸c˜oes n˜ao sejam ambas verdadeiras ou o valor lido n˜ao seja o SOF, o

programa mant´em-se no mesmo estado.

Na etapa seguinte o programa vai esperar que chegue um valor. Quando fizer a sua

leitura, vai guard´a-lo numa vari´avel. Este valor indica o n´umero de valores que se

seguem, isto ´e, indica o tamanho da restante parte da frame.

Depois desta etapa, os valores que chegam podem ser codificados, pelo que ´e sempre

necess´ario verificar se o valor que ´e lido ´e igual a 0x7C. Desta forma, quando o

programa se encontra no 3oestado, vai ler o valor que chega e se este for igual a 0x7C

passa para outra etapa que lˆe o pr´oximo valor e utiliza-o para descodificar o valor

original, fazendo 0x7C XOR “carater lido”. Na etapa seguinte o valor descodificado

´

e gravado no buffer de entrada. Caso o valor lido na 3a etapa n˜ao seja 0x7C, o

102 CAP´ITULO 4. CAP´ITULO DE COMUNICAC¸ ˜AO E CONTROLO

4.5. IMPLEMENTAC¸ ˜AO DO SISTEMA DE COMUNICAC¸ ˜AO E CONTROLO 103

buffer.

Este processo de leitura, descodifica¸c˜ao (sempre que necess´aria) e grava¸c˜ao ´e repetido

at´e o n´umero de valores lidos ser igual ao valor gravado na vari´avel que cont´em o

tamanho da frame. O ´ultimo valor lido, na ´ultima etapa, ´e o checksum da mensagem.

Este indica-nos se os campos da frame foram recebidos anteriormente, uma vez que

´

e a soma modular de todos os valores da mensagem, excluindo o SOF e o tamanho

da frame. `A medida que foram lidos os v´arios valores, estes foram somados a uma

vari´avel local de checksum que depois ´e comparada com o valor de checksum que ´e

lido da porta s´erie.

Sempre que o programa tenta fazer uma leitura da porta s´erie, ´e iniciado um con-

tador. Se ao fim de 20 segundos o programa n˜ao for capaz de ler o valor ou o valor

n˜ao chegar, ´e feito um timeout, que leva a m´aquina de estados para o estado inicial.

Utilizando a fun¸c˜ao vSerial ReadBuffer, o programa est´a sempre a ler a porta

s´erie mas apenas lˆe uma nova frame quando a frame gravada anteriormente for

processada por um m´etodo que interpreta essa mensagem.

Figura 4.23 – Fluxograma da fun¸c˜ao de envio pela porta s´erie

104 CAP´ITULO 4. CAP´ITULO DE COMUNICAC¸ ˜AO E CONTROLO

fun¸c˜ao que segue um funcionamento como o que est´a representado na m´aquina de

estados da do esquema da Figura 4.23.

Depois de converter a mensagem CAN para o formato da frame Serial, o programa

coloca a 1 a flag do buffer de sa´ıda. Quando o valor da flag ´e 1, a m´aquina de

estados passa para o segundo estado. Se a flag estiver a 0, a fun¸c˜ao fica a aguardar

que o buffer esteja pronto a enviar.

No segundo estado, a fun¸c˜oes verifica o estado da porta s´erie. Se a porta s´erie n˜ao

estiver pronta a enviar, a m´aquina de estados manter-se nesta etapa. Mas se a porta

estiver livre dispon´ıvel, o programa salta de estado.

No ´ultimo estado o programa envia um valor do buffer de sa´ıda que cont´em a

mensagem. Enviado o valor, o programa toma uma decis˜ao: tentar enviar mais

valores, ou voltar ao estado inicial. Se a mensagem ainda n˜ao foi totalmente enviada,

o programa volta ao estado 2 e o processo volta a repetir-se enquanto todos os valores

da mensagem n˜ao forem enviados. Quando a mensagem foi completamente enviada,

a fun¸c˜ao vSerial SendBuffer inverte o estado da flag do buffer e volta ao estado

inicial, onde volta a ficar `a espera que o buffer tenha uma mensagem codificada

5

Cap´ıtulo de Processamento

Digital de Imagem

Neste cap´ıtulo ser˜ao descritos os algoritmos utilizados para processar as imagens ad-

quiridas, descrevendo algumas t´ecnicas existentes de processamento digital de ima-

gem e explicando de que forma s˜ao usadas para detetar e seguir o movimento de pei-

xes. Os conceitos de processamento digital de imagem e vis˜ao computacional ser˜ao

discutidos no aspeto te´orico e pr´atico, apresentando exemplos de implementa¸c˜ao.

Ser´a ainda explicada a aplica¸c˜ao desenvolvida para fazer a dete¸c˜ao, seguimento

e contagem de peixes, descrevendo o funcionamento geral da mesma bem como

t´ecnicas espec´ıficas dentro da aplica¸c˜ao. Os resultados das t´ecnicas de processamento

de imagem utilizadas ser˜ao apresentados de forma mais detalhada e descriminada

no cap´ıtulo de Testes e Resultados.

A an´alise do movimento dos peixes pode ser usado como indicador da forma como

o seu desenvolvimento pode ser influenciado por elementos presentes no seu habitat

ou condi¸c˜oes (temperatura, polui¸c˜ao, concentra¸c˜ao de oxig´enio, etc) que os afetem

106 CAP´ITULO 5. CAP´ITULO DE PROCESSAMENTO DIGITAL DE IMAGEM

diretamente.

No documento Instrumentação de um veículo submersível (páginas 128-136)