Comunicacion serie PIC- PC con mono (C#) en linux

Hola a todos,

Quiero compartir con ustedes lo que he logrado avanzar en programacion de pics, hoy logre hacer comunicar el pic con el pc y una aplicacion que desarrolle en C#, Es solamente un boton que coje un numero de 0 a 9 y lo envia por el puerto al pic y a la vez recibe un numero tambien de 0 a 9 procedente del pic.

Para esto me base en un codigo que encontre el este sitio:
http://www.mono-project.com/HowToSystemIOPorts

Le modifique algunas cosas para que funcionara con un boton.

El problema que he tenido hasta el momento es que no puedo enviar numeros o caracteres diferentes a numeros de un digito, quisiera saber como puedo hacer eso y que haga eso constantemente sin necesidad de pulsar el boton para cada evento

aqui dejo el codigo del pic, y el del programa en C# monodevelop


Codigo pic CCS
Código:
#include <18f2550.h>        //Pic a utilizar
#use delay(clock=4000000)     //Frecuancia del oscilador

#fuses XT,NOWDT            //Fusibles de configuracion, OSC XT, y Watchdog Desactivado
#include "Lcd.c"        //Incluimos la libreria LCD.C que viene com CCS
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)


void main(){

    int valor, dato;
    lcd_init();
    
while(1){
    for(valor=0; valor<=10; valor++){
        dato =getch();
        printf(lcd_putc,"\f Recibi =%1D", dato);
        PUTC(valor);
        printf(lcd_putc,"\n Envie =%1D", valor);
        delay_ms(500);
        }
    }
}
aqui el codigo de C#

Código:
using System;
using Gtk;
using System.IO.Ports;


public partial class MainWindow : Gtk.Window
{
    public MainWindow () : base(Gtk.WindowType.Toplevel)
    {
        Build ();
    }

    protected void OnDeleteEvent (object sender, DeleteEventArgs a)
    {
        Application.Quit ();
        a.RetVal = true;
    }
    
    
    public SerialPort mySerial;
    
    
    
    protected virtual void OnButton1Clicked (object sender, System.EventArgs e)
    {
        
        string letra;    
        byte dato;
        mySerial = new SerialPort("/dev/ttyS0", 9600, Parity.None, 8, StopBits.One);
        mySerial.Open();
    
        
        byte[] mBuffer = new byte[1];
        
        dato=Convert.ToByte(Caja.Text);
        mBuffer[0] = dato; // Dato a enviar
        
        mySerial.Write(mBuffer, 0, mBuffer.Length);
        letra = Convert.ToString(mySerial.ReadByte());//Lee dato del puerto y lo convierte a string
        label1.Text=letra;
        mySerial.Close(); //Cerrar puerto
        
    }       
        
}
aqui dejo el proyecto completo para ejecutar en monodevelop ubuntu Linux



Gracias.

Aqui el video de funcionamiento:


 
Última edición:
Amigo, me interesa saber cómo configurar el puerto y esa información. Googleando se encuentran cosas muy diversas.
 
Atrás
Arriba