Jump to content
jhonatan

Leitura continua de dados Porta Serial

Recommended Posts

jhonatan

Olá boa tarde. Estou começando com C# e preciso fazer uma leitura de dados da porta serial.

A idéia é a seguinte:

Quando eu apertar um botão ele faz a leitura da porta e armazena num arquivo txt.

Isso eu consegui fazer, mas gostaria que quando eu apertasse o botão ele ficasse fazendo a leitura continuamente e não apenas quando eu cliquei o botão. Alguém poderia me ajudar no código?

Segue o código que fiz, por favor me ajudem em como poderia alterar para quando clicar o botão a leitura ser continua.

private void iniciar_Click(object sender, EventArgs e)
	{

			serialPort1.Open();
			char[] result = new char[10];
				for (int len = 0; len < result.Length; )
				{
					len += serialPort1.Read(result, len, result.Length - len);
				}
				string s = new string(result);
				label1.Text = s;
			   mensagem = label1.Text;
			string data = DateTime.Now.ToShortDateString();
			using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\oi.txt", true))
			{
				file.WriteLine(mensagem);
				file.WriteLine(data);
				file.WriteLine(DateTime.Now.ToShortTimeString());
			}  
		}
	}  

Obrigado

Share this post


Link to post
Share on other sites
nelsonr

Uma possibilidade é leres o conteúdo da porta, aguardares X milisegundos, leres novamente, aguardares, leres, etc.

Quando fores ler, se não tiver nada, sais do ciclo.

Já agora, em vez de criares um array de tamanho fixo, podes usar o StringBuilder para leres o conteúdo sem te preocupares com o tamanho (se for isso o pretendido)

Defines assim: StringBuilder sb=new StringBuilder();

Para adicionares conteúdo: sb.Append(texto);

Para leres o que está no stringbuilder e gravares no ficheiro, usas o sb.ToString();

Outro conselho, será usares o serialPort1.ReadExisting para leres logo tudo que está no buffer.

Não te esqueças de fechar a porta com serialPort1.Close.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.