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.