TODOPIC

Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: QIQE en 15 de Diciembre de 2010, 18:51:51

Título: Problema Puerto serie Visual c# y windows 7
Publicado por: QIQE en 15 de Diciembre de 2010, 18:51:51
He trabajado con anterioridad con visual c# y el puerto serie, pero en esta ocasión he revisado mil veces el programa y no encuentro el error, me podeis echar un clable??? muchas gracias.

Código: [Seleccionar]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports; 

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.Open();
           

            if (serialPort1.IsOpen)
            {
                button1.Text = "ABIERTO";
            }
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            listBox1.Items.Add(serialPort1.ReadLine());

        }

        private void button2_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
        }
    }
}


Título: Re: Problema Puerto serie Visual c# y windows 7
Publicado por: migsantiago en 15 de Diciembre de 2010, 19:15:12
¿Qué debe hacer? ¿Qué no debe hacer? ¿Qué debe recibir?

http://www.todopic.com.ar/foros/index.php?topic=16136.0
Título: Re: Problema Puerto serie Visual c# y windows 7
Publicado por: QIQE en 15 de Diciembre de 2010, 19:19:44
Al recibir los datos por el puerto serie los deberia mostrar en el listbox, solo recibe la cadena HOLA cada 3 segundos, lo he comprobado con un programa tipo terminal y si que envia el pic los caracteres, el programa al darle al botón1 abre el puerto serie, pero en el list box no se recibe nada.
Título: Re: Problema Puerto serie Visual c# y windows 7
Publicado por: migsantiago en 15 de Diciembre de 2010, 20:48:10
Al recibir los datos por el puerto serie los deberia mostrar en el listbox, solo recibe la cadena HOLA cada 3 segundos, lo he comprobado con un programa tipo terminal y si que envia el pic los caracteres, el programa al darle al botón1 abre el puerto serie, pero en el list box no se recibe nada.

¿Cómo envías la cadena? ¿Envías Nueva Línea y Retorno de Carro?
Título: Re: Problema Puerto serie Visual c# y windows 7
Publicado por: fidodido18 en 05 de Enero de 2011, 12:37:16
He trabajado con anterioridad con visual c# y el puerto serie, pero en esta ocasión he revisado mil veces el programa y no encuentro el error, me podeis echar un clable??? muchas gracias.

Código: [Seleccionar]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports; 

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            serialPort1.Open();
           

            if (serialPort1.IsOpen)
            {
                button1.Text = "ABIERTO";
            }
        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            listBox1.Items.Add(serialPort1.ReadLine());

        }

        private void button2_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
        }
    }
}



esta raro que te deje acceder a un Listbox desde el evento del puerto serial, tienes que hacer un delegado e invocarlo para luego si modificar el Listbox.

en todo caso tienes que abrir el puerto de una forma mas segura, es decir dentro de un try, y tomar una excepción en caso de algún error.

ademas siempre que trabajo con pic, envió al final de la trama un EOM (end of Message) y cuando leo la trama en la pc, serialport1.readto("EOM") o lo que ponga al final, es mucho mas seguro, que un readline o readexisting.

eso si pra evitar basura coloco un timeout adecuado y capturo el evento timeout del puerto, para limpiar el bufer, en caso que sea basura la que llego...