Autor Tema: Problema Puerto serie Visual c# y windows 7  (Leído 4845 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Problema Puerto serie Visual c# y windows 7
« 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();
        }
    }
}


Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problema Puerto serie Visual c# y windows 7
« Respuesta #1 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

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: Problema Puerto serie Visual c# y windows 7
« Respuesta #2 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.
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problema Puerto serie Visual c# y windows 7
« Respuesta #3 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?

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: Problema Puerto serie Visual c# y windows 7
« Respuesta #4 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...