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

alexyogui

Lanero Reconocido
9 Oct 2006
140
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

http://www.**************/?d=ONRCDUVU

Aqui el video de funcionamiento:

<
 
Última edición por un moderador:
Hola:

Lo tengo hecho bajo openSUSE en otro PC que se me quemó la placa base, pero el codigo los tengo bien guardado lo que no puedo acceder a él. Me funciona el control del puerto serie con el PIC, pero no el de entrada de datos.

Cuando me funcione, haré un manual sobre Linux como hice con este. Si vas ahcer algo en puerto paralelo está este enlace.

Un cordial saludo.
 
Hola:

Lo tengo hecho bajo openSUSE en otro PC que se me quemó la placa base, pero el codigo los tengo bien guardado lo que no puedo acceder a él. Me funciona el control del puerto serie con el PIC, pero no el de entrada de datos.

Cuando me funcione, haré un manual sobre Linux como hice con este. Si vas ahcer algo en puerto paralelo está este enlace.

Un cordial saludo.

Huy hermano como dirían en el bus cualquier ayudita me sirve para poder enviar cadenas al pic y viceversa así como las que envía usted en mono se le agradece mucho.
 

Los últimos temas