• Welcome to LusoRobótica - Robótica em Português.
 
Main Menu

Ajuda no c#

Started by njgomes, 29 de January de 2011, 10:23

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

njgomes

Bom dia.

Se alguém me poder dar uma ajuda num programa em c# agradeço.

Já estive este http://www.2shared.com/file/2Vykgnrr/12-12-2010.html programa a trabalhar (recebia e enviada os offset) a umas semanas traz e agora não sei porque carga de agua não funciona. Principalmente quando toca a ler os lados da porta serie.

A comunicação é feita por Xbee da seguinte maneira.

Cada Offset tem um endereço (vai de 50 a 57) e cada vez que o quero alterar envio o endereço e o valor. O pic recebe e faz o tratamento.
Quando pretendo ler os valores clico em "ler_OFFSET" é enviado ao pic "60"endereço e "99"variavel de apoio. o pic ao receber o endereço "60" vai enviar todos os valores de offset que tem em memoria.

vai um excerto do codigo do pic

...
   while ( BusyUSART() );
      while ( !DataRdyUSART() );
      getsUSART(mensagem,2);            // endereço
      mensagem[2]='\0';
      aux1 = atoi (mensagem);   

      while ( BusyUSART() );
      while ( !DataRdyUSART() );
      getsUSART(valor,2);            // dados
      valor[2]='\0';      
      aux2 = atoi (valor);   
...
          if (aux1 == 50)            // se o endereço recebido for 50
            {strcpy(OFSx,valor);      // os dados recebidos alteram o valor do offset de x do acelerometro
      //      ("copiei a string");
            }
         else if (aux1 == 51)      // se o endereço recebido for 51
            {strcpy(OFSy,valor);            // os dados recebidos alteram o valor do offset de y do acelerometro
            }
...
   else if (aux1 == 60)      // se o endereço recebido for 60 significa que se pretende ler todos os offset
            {
               TRANSMITE (adr_offset);
               TRANSMITE(OFSx);
               TRANSMITE(OFSy);
               TRANSMITE(OFSz);
               TRANSMITE(GYx);
               TRANSMITE(GYy);
               TRANSMITE(GYz);
               TRANSMITE(KP);
               TRANSMITE(KD);
            }

Obrigado pela ajuda desde já

njgomes

Olá a todos.

Depois de algumas horas já chegei ao problema.

Os dados de saída do PC estão correctos, e o erro ocorre em:

O PIC envia uma srting ( putsUsart("11\r")

e o que o PC lê é o seguinte:

"\r\o\11"

dai não conseguir fazer nada.
Alguém percebe porque esto a ler isto?

zordlyon

Isso em C, julgo que seria por causa de ja teres usado essa string e não teres limpado o buffer...o caracter "/r" em C é para mudança de linha...ou seja vem do buffer penso eu...mas nunca tive C# na vida..não sei se será disso...

Abraço..
Cumprimentos,
André Carvalho.