C# Serial Receber Valores

Programação C em geral

Moderadores: 51, guest2003

Mensagempor Maffeis » 28 Dez 2012 14:20

oq eu toh fazendo é o id a função
ai de acordo com a função o tamanho é fixo

um exemplo que eu baixei (indicado aqui pra cima) ele fez algo desse tipo

mais ele fez um for e foi lendo byte a byte

eu ia testar esse cara mais meu conversor sumiu

a mesa tinha o kit o note e ele, naum sei como foi desaparecer ainda

Qual o melhor jeito de eu fazer um timerout

se pegar a msg pela metade se ficar um certo tempo sem receber nada ele der erro
Maffeis
Word
 
Mensagens: 501
Registrado em: 07 Ago 2010 19:10

Mensagempor Red Neck Guy » 28 Dez 2012 15:31

Maffeis escreveu:oq eu toh fazendo é o id a função
ai de acordo com a função o tamanho é fixo

um exemplo que eu baixei (indicado aqui pra cima) ele fez algo desse tipo

mais ele fez um for e foi lendo byte a byte

eu ia testar esse cara mais meu conversor sumiu

a mesa tinha o kit o note e ele, naum sei como foi desaparecer ainda

Qual o melhor jeito de eu fazer um timerout

se pegar a msg pela metade se ficar um certo tempo sem receber nada ele der erro





Assim,
digamos que tem um form bonitinho com um label de status do link com o dispositivo e outro onde tu joga a informação.
Postulamos que:
-existe uma classe protocolo que permite ler e escrever no teu dispositivo


Código: Selecionar todos

classe do form

delegate void send_String_dlg(String texto);

public class Form//Tá parcial é só pra entender...
{
private void atualiza_conteudo_label_aux(String texto){
  label_link = texto;
}

private void atualiza_conteudo_label_rede(String texto){

  if(Invoke.Required){
    send_String_dlg dlg = new send_String_dlg(atualiza_conteudo_label_aux);
     Invoke(dlg,new Object[]{texto});
  }
  else
    atualiza_conteudo_label_aux(texto);
}

}



Assim, não pode haver chamadas de threads cruzadas chamando métodos dos controles visuais do dotnet.
Assim, para eu não ter que escrever tudo aqui, imagina que para cada controle do form haverá um método para tornar o acesso seguro através do Invoke

Sendo assim na thread de comunicação

Código: Selecionar todos

Classe que tem a thread que faz a monitoracao

using System.Threading; // Ou thread de cabeça não lembro

public class MonitoraDispositivo
{

  public MonitoraDispositivo(){

     Thread mt = new Thread(new ThreadStart(monitor));
     mt.start();
  }

  private void monitor(){
     int timeOut=10;
     Protocolo protocolo = new Protocolo();
     byte[] pacote;

     try{
 
      if(protocolo.lePacote(pacote)){
        timeOut = 10;
        form.manda_pacote_label(pacote);
        form.label_timeOut = "Dispositivo ONLINE";
      }
     else
       if(timeOut)
         timeOut --;
       else
         form.label_timeOut="Dispositivo offline";
   
       Thread.Sleep500);
     }
     catch(ThreadAbortException){


    }

   }

}



Esse é o caminho, as idéias estão aí.
Com isso tu faz algo bem profissional.
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Anterior

Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x