por chipselect » 25 Mar 2012 23:03
Em c#, o equivalente mais próximo de "processMessages()" é Application.DoEvents(), mas não se recomenda usar essas coisas...
Acho que o comando
progressBar1.Value = Convert.ToInt32(RxString);
é susceptível a falhas e deve-se tratar as exceções FormatException e OverFlowException, mesmo que os valores do AD só vão até 1023, pois você tem o problema de possível lixo na serial, além de ela ser assíncrona, ou seja, na hora que você efetua o comando de leitura, pode ser que não tenha recebido todo o seu pacote, ter recebido um pacote e um pedaço do próximo e etc.
Um problema intermitente que pode vir a ocorrer é quando RxString contém algo que não é bem um número, quando na eventualidade de a serial ter recebido lixo, ponto em que a conversão gera uma exceção e o dotnet sacana simplesmente aborta o laço da thread sem te falar nada, já que não tem o try - catch ali pra pegar o problema.
Uma vez que você não postou o trecho de código completo, essas afirmativas acimas são apenas especulações.
Talvez no texbox a variação seja tão rápida que você não perceba sua variação, coloque um log em cima disso para ver o que você está processando ao receber os dados pela serial, se não tiver nenhum ai, use o velho Console.WriteLine(RxString) mesmo toda vez que lê na serial, pelo menos vai ter um histórico do que tá lendo e pode esclarecer o que está ocorrendo.
Se for possível, delimite o valor transmitido pela serial por caracteres especiais, formando um protocolo mínimo para melhorar a confiabilidade dos dados recebidos (stx-etx, o bom e velho \n como delimitador, etc)