• Lunes 18 de Noviembre de 2024, 01:37

Autor Tema:  comunicacion puerto serial  (Leído 1754 veces)

leafartn

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
comunicacion puerto serial
« en: Jueves 12 de Noviembre de 2009, 20:53 »
0
He creado un windows form muy basico para probar el puerto serial con un TextBox (textBox1) y un Boton (button1) , donde en el TextBox escribo el comando " @06DO03 " el cual debe hacer que se prendan 2 leds en un dispositivo, pero el dispositivo no responde al presionar el boton button1. Estoy cometiendo algun error???? :hitcomp:

El dispositivo funciona correctamente ya que lo he probado con el hyperterminal y con otro programa terminal.  :ouch:

Muchas gracias por su colaboracion!!!  :good:  :good:

Aca esta el codigo:

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 PruebaPuertoSerial
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //configura el puerto serial
            serialPort1.PortName = "COM1";
            serialPort1.BaudRate = 9600;
            serialPort1.DataBits = 8;
            serialPort1.Parity = Parity.None;
            serialPort1.StopBits = StopBits.One;
            serialPort1.Handshake = Handshake.None;

            serialPort1.Open(); //abro el puerto

            serialPort1.WriteLine(textBox1.Text); //en el textbox estoy escribiendo @06O03

            serialPort1.Close();
        }
    }
}

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: comunicacion puerto serial
« Respuesta #1 en: Jueves 12 de Noviembre de 2009, 21:06 »
0
vamos a ver, estar bien yo creo que si, hace poco lo estuve utilizando para comunicar 2PC's, lo hacia como tu y no me daba problema alguno

En mi caso yo utilizaba el WriteLine("") y en el otro extremo el ReadLine()

Has probado de utilizar el metodo Write("")??

es decir:
serialPort1.Write(textBox1.Text);

leafartn

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: comunicacion puerto serial
« Respuesta #2 en: Jueves 12 de Noviembre de 2009, 21:41 »
0
si, y tambien lo probe poniendo directamente en el codigo write("@06DO03"); y tampoco sirve

Meta

  • Miembro MUY activo
  • ***
  • Mensajes: 140
    • Ver Perfil
Re: comunicacion puerto serial
« Respuesta #3 en: Domingo 15 de Noviembre de 2009, 02:21 »
0
Quizás ete manual te ayuda con el puerto serie.

http://www.abcdatos.com/tutoriales/tutorial/z9521.html

Saludo.

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: comunicacion puerto serial
« Respuesta #4 en: Lunes 16 de Noviembre de 2009, 17:39 »
0
Muy bueno el manual.

Bueno, siguiendo el manual has probado poner:

serialPort1.StopBits = StopBits.Two;

y a parte de eso hacer la transmision poniendo los caracteres manualmente de la siguiente manera:
Código: C#
  1.  
  2.         private void button1_Click(object sender, EventArgs e)
  3.         {
  4.             byte[] a = new byte[6];
  5.             a[0] = 0x40; //la @
  6.             a[1] = 0x30; //el 0
  7.             a[2] = 0x36; //el 6
  8.             a[3] = 0x4F; //la O
  9.             a[4] = 0x30; //el 0
  10.             a[5] = 0x33; //el 3
  11.  
  12.             serialPort1.Write(a, 0, a.Length);
  13.         }
  14.  

leafartn

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: comunicacion puerto serial
« Respuesta #5 en: Martes 17 de Noviembre de 2009, 15:59 »
0
la configuracion de mi dispositivo es de 1 bit de parada, no 2....

y si, ya intente haciendo el arreglo de caracteres y tampoco funciona  :( ... tambien intente agregando Chr(10) y Chr(13), que serian el equivalente a la tecla enter, ya que cuando hago las pruebas en el hyperterminal, funciona correctamente.... cosa que no pasa en mi programa  :(   :hitcomp:

Código: C#
  1. byte[] miBuffer = new byte[9]; //enviamos trama: @02DO03
  2. miBuffer[0] = 0x40; // @
  3. miBuffer[1] = 0x30; // 0
  4. miBuffer[2] = 0x32; // 2
  5. miBuffer[3] = 0x44; // D
  6. miBuffer[4] = 0x4F; // O
  7. miBuffer[5] = 0x30; // 0
  8. miBuffer[6] = 0x33; // 0
  9. miBuffer[7] = 0x0A; //chr 10
  10. miBuffer[8] = 0x0D; //chr 13
  11.  
  12. this.serialPort1.Write(miBuffer, 0, miBuffer.Length);
  13.  

muchas gracias