LusoRobótica - Robótica em Português

Software => C# => Tópico iniciado por: njgomes em 29 de Janeiro de 2011, 10:23

Título: Ajuda no c#
Enviado por: njgomes em 29 de Janeiro de 2011, 10:23
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 (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á
Título: Re: Ajuda no c#
Enviado por: njgomes em 08 de Fevereiro de 2011, 09:23
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?
Título: Re: Ajuda no c#
Enviado por: zordlyon em 20 de Fevereiro de 2011, 01:42
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..