none
Conexion de puerto serial con PIC en c# RRS feed

  • Pregunta

  • Hola

    necesito hacer una comunicacion de un PIC 16F877A con la computadora mediante una conexion serial, ahora estoy usando un convertos USB to TTL para hacer esto.... ya verifique que mande los datos pero en la aplicacion de c# no lo reconoce, no hace nada de echo...

    como puedo hacer la conexion???

    muchas gracias de antemano...

    martes, 23 de octubre de 2012 18:26

Respuestas

  • Hola:

    Cuando abras el puerto, luego introduces esto:

    private void button_t_Click(object sender, EventArgs e)
    {
        byte[] mBuffer = new byte[1];
        mBuffer[0] = 0x74; //ASCII letter "t".
        serialPort1.Write(mBuffer, 0, mBuffer.Length);
    }

    Luego cierras el puerto.

    Avisa si te funciona. Es para enviar tramas de bytes, en este caso solo un byte.

    Si quieres enviar varios.

    private void button_t_Click(object sender, EventArgs e)
    {
        byte[] mBuffer = new byte[5];
        mBuffer[0] = 0x74;
        mBuffer[1] = 0x75;
        mBuffer[2] = 0x89;
        mBuffer[3] = 0x20;
        mBuffer[4] = 0x6C;
        serialPort1.Write(mBuffer, 0, mBuffer.Length);
    }

    Si quieres enviar una cadena de carácteres:

    private void button_b_Click(object sender, EventArgs e)
    {
        byte[] mBuffer = Encoding.ASCII.GetBytes("Hello World");
        serialPort1.Write(mBuffer, 0, mBuffer.Length);
    }

    Prueba y avisa.

    Si te ha servido de ayuda,  puedes marcar como respuesta correcta en el botón verde del este foro.

    Saludo.


    http://electronica-pic.blogspot.com


    • Editado Metaconta jueves, 25 de octubre de 2012 23:10
    • Marcado como respuesta RenatoWong jueves, 1 de noviembre de 2012 14:42
    jueves, 25 de octubre de 2012 23:09
  • Hola:

    Lo explica este manual.

    Saludo.


    http://electronica-pic.blogspot.com

    • Marcado como respuesta RenatoWong jueves, 1 de noviembre de 2012 17:47
    miércoles, 31 de octubre de 2012 19:59

Todas las respuestas

  • Hola RenatoWong:

    Antes que nada, es bueno mostrar algo de código en la parte donde estás atascado. Hay que ver que tienes almacenado en el PIC16F877A y el C#.

    ¿Puedes mostrar los códigos del PIC o C#?

    Antes que nada hay que ver que falla y así podemos guiarte mejor.

    Un cordial saludo.

    PD: Por cierto, curioso que a estas alturas no uses su sustituto que es el PIC16F887.

    Migrando a los Nuevos PIC Migrando hacia PIC16F88X

    :)



    http://electronica-pic.blogspot.com

    martes, 23 de octubre de 2012 22:33
  • hola muchas gracias 

    en el codigo del pic tengo un loop

    loop:

    print at 1,1, "R"

    Hsrout "R"

    goto loop

    este codigo nomas es para probar la conexion, por lo que no me preocupa tanto, de echo lo probe con un osciloscopio y me da una señal cuadrada

    en el c# tengo agregado el componente SerialPort y para pruebas solo abro el puerto y pongo el evento datareceived del serial port ahi mismo tengo un codigo que pone lo que recibe en un richtextbox, pero el problema es que no recibe nada, pongo un break point en el evento y nunca pasa por ese evento el datareceived.

    si pudiera mostrarme algun ejemplo de como se hace la conexion.... muchas gracias Metaconta

    jueves, 25 de octubre de 2012 18:26
  • Hola:

    Cuando abras el puerto, luego introduces esto:

    private void button_t_Click(object sender, EventArgs e)
    {
        byte[] mBuffer = new byte[1];
        mBuffer[0] = 0x74; //ASCII letter "t".
        serialPort1.Write(mBuffer, 0, mBuffer.Length);
    }

    Luego cierras el puerto.

    Avisa si te funciona. Es para enviar tramas de bytes, en este caso solo un byte.

    Si quieres enviar varios.

    private void button_t_Click(object sender, EventArgs e)
    {
        byte[] mBuffer = new byte[5];
        mBuffer[0] = 0x74;
        mBuffer[1] = 0x75;
        mBuffer[2] = 0x89;
        mBuffer[3] = 0x20;
        mBuffer[4] = 0x6C;
        serialPort1.Write(mBuffer, 0, mBuffer.Length);
    }

    Si quieres enviar una cadena de carácteres:

    private void button_b_Click(object sender, EventArgs e)
    {
        byte[] mBuffer = Encoding.ASCII.GetBytes("Hello World");
        serialPort1.Write(mBuffer, 0, mBuffer.Length);
    }

    Prueba y avisa.

    Si te ha servido de ayuda,  puedes marcar como respuesta correcta en el botón verde del este foro.

    Saludo.


    http://electronica-pic.blogspot.com


    • Editado Metaconta jueves, 25 de octubre de 2012 23:10
    • Marcado como respuesta RenatoWong jueves, 1 de noviembre de 2012 14:42
    jueves, 25 de octubre de 2012 23:09
  • holaaa un disculpa que he dejado descuidado el tema....

    lo probe y me funciono ahora como podria hacer para recibir los datos que envio del pic a la computadora?

    puedo cambiar esta linea de codigo : 

    byte[] mBuffer = Encoding.ASCII.GetBytes("Hello World");

    por esta linea:

    byte[] mBuffer = Encoding.ASCII.GetBytes(serialPort.read());

    y para mostrarlo en un rich textbox como seria?

    RichTextBox.Text = convert.tostring(mBuffer[]);

    eso en un for o como le haria?

    muchas gracias por tus respuestas!!!

    • Editado RenatoWong miércoles, 31 de octubre de 2012 14:28
    miércoles, 31 de octubre de 2012 14:21
  • Hola:

    Lo explica este manual.

    Saludo.


    http://electronica-pic.blogspot.com

    • Marcado como respuesta RenatoWong jueves, 1 de noviembre de 2012 17:47
    miércoles, 31 de octubre de 2012 19:59
  • muchas gracias!!!

    esto me ayudara mucho!!!

    es usted muy amable!!!

    gracias!!

    jueves, 1 de noviembre de 2012 14:43
  • De nada:

    Si crees que las respuesta de este tema son correctas, márcalas para guiar a los demás visitantes.

    Un saludo.


    http://electronica-pic.blogspot.com

    jueves, 1 de noviembre de 2012 16:11
  • hola renato estoy realizando algo parecido a tu proyecto pero envío 8 bytes desde el pic y lo que quiero saber es como los leo en c# o mejor dico como lo decodifico y lo muesto en una tabla

    gracias

    lunes, 22 de julio de 2013 10:01
  • Hola, ¡Muchas gracias por la explicación! Todo funciona correctamente! Saludos
    miércoles, 11 de septiembre de 2013 16:39