RECEBER STRING PELO SERIAL PORT

DAX13572 14/06/2013 15:27:47
#424795
Tenho um clp pic que envia uma string para o pc a cada 500 milissegundos ex,:([Ô]1111100000[Ô]), mas o pc está recebendo desordenadamente as vezes recebe certo e as vezes pega do final e as vezes não aparece nada estou visualizando primeiro em um label para depois eu fazer o tratamento.

como estou fazendo:click do button
SerialPort1.DiscardinBuffer(); //limpar o buffer e pegar o valor mais recente
rx = SerialPort1.ReadLine();
Label1.tex t= rx;

Por Favor se alguém puder me dar uma luz sou iniciante em C#, e estou desenvolvendo um trabalho escolar
OCELOT 14/06/2013 16:04:39
#424800
Você não deve chamar o DiscardInBuffer, basicamente ele faz com que tudo que foi recebido seja descartado.

Outra coisa é que comunicação serial é em stream, não tem separação dos valores recebidos, quem tem que fazer esta separação é o programa, então quando chegam dados pode chegar menos informações do que você precisa, ou pode chegar mais de uma informação de uma vez, por exemplo, a cada vez que você le poderia receber os dados tipo (considerando que é enviado apenas [Ô]1111100000[Ô] repetidamente pelo aparelho)

Primeira vez: [Ô]111110[Ô]
Segunda vez: [Ô]00001111100000[Ô]
Terceira vez: [Ô]1111100000111[Ô]

E assim por diante, tudo picado, mas se você for juntando e separando vai ver que está tudo correto, só não chegou tudo de uma vez.

Então o que se deve fazer com qualquer tipo de comunicação destes é sempre guardar toda informação que chega em um buffer e verificar se já chegou tudo que precisa, se sim tira o que ta inteiro do buffer e faz o que tem que fazer, terminou o que tinha que fazer verifica se tem mais coisa inteira no buffer até limpar o buffer ou sobrar apenas algo parcial, nesse ponto para de executar e fica esperando chegar mais dados, chegou mais dados começa tudo de novo.
DAX13572 14/06/2013 16:15:19
#424802
Ocelot
muito obrigado,
mas como falei não tenho experiência em c# vc poderia me dar um exemplo?
Faça seu login para responder