Autor Tema: Como leo y veo un dato desde Com1 en un campo...  (Leído 3259 veces)

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

Desconectado gesteva

  • PIC12
  • **
  • Mensajes: 52
Como leo y veo un dato desde Com1 en un campo...
« en: 03 de Julio de 2005, 02:41:00 »
Tengo una gran duda y es la siguiente:

Hice un teclado 4x4 en VB que saca un valor por el puerto serial desde cada tecla y estos valores los puedo leer desde un PIC18F458 y todo funciona perfecto, ahora, el problema que tengo es que quiero enviar datos desde el pic hasta el PC y no tengo ni idea de como simular un campo junto al teclado en VB donde se vean los datos enviados desde el pic. Ni siquiera tengo idea de que agarrar de la barra de herramientas para mostrar texto recibido en una ventana de VB...

Trate de adjuntar la imagen del teclado, en la cual se puede ver el espacio que he dejado arriba para poner algo asi como una pantalla o campo donde se vea la informacion capturada desde el COM1, pero tampoco se como se incluye una imagen en estos foros.  Ardiendo   Esto dice que ponga la ruta de la pagina web donde está la imagen loco

Sera que alguien me puede ayudar? Ya me he estado bajando manuales de VB pero es inutil.

Saludos! y gracias desde ya.  Rebotado

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
RE: Como leo y veo un dato desde Com1 en un campo...
« Respuesta #1 en: 03 de Julio de 2005, 09:24:00 »
Que tal, el visual basic cuenta con un modulo de comunicacion llamado mscomm, y lo puedes conseguir haciendo click con el boton derecho del raton y seleccionar la opcion componentes, se te mostrara todos lo componentes que puede utilizar el visual basic, busca en esa lista el componente Microsoft Comm Control, lo seleccionas haciendo click en el check box que aparece al lado del componente y luego le das a aceptar, una vez hecho esto te aparecera un nuevo control en forma de telefono en la barra de componentes, lo seleccionas y lo colocas en el form.

Una vez hechos lo anterios puedes hacer doble click sobre el componenetes que acabas de colocar en el form, para poder colocar el codigo, que necesitas dentro del evento OnComm del componente.

Puedes colocar el siguiente codigo dentro del evento OnComm

if Mscomm1.CommEven=2 then
    text1.text=text1.text & mscomm1.input
endif

El text1.text es una caja de texto que tienes que colocar en el form para poder visualizar los datos. Recuerda abrir el puerto haciedo lo siguiente:

Mscomm1.PortOpen=True " esto lo puedes hacer dentro del evento form_load de tu form, si deseas que el puerto se habra cuando cargues tu programa.

Tambien recuerda entrar a las propiedades del mscomm, haciendo click sobre el control y apareceran a la derecha, en las propiedades puedes configurar la velociadad de transmision, bit de inicio,bit de parada, etc.

Espero que te sirva de ayuda.Sonrisa

PD: me imagino que ya envias los datos del pic, dices que estas usando un 18f458, en que lenguaje lo hiciste, yo estoy empesando a usar estos pics, pero todavia no he podido hacer nada, no entiendo muy bien el pdf, para programarlos en assembler, como que es mucho mas facil usar el C. Aunque yo quiero programarlos en assembles.
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Como leo y veo un dato desde Com1 en un campo...
« Respuesta #2 en: 03 de Julio de 2005, 12:49:00 »
Hola:

lo que dice el amigo atlasdelcarinakeel es perfecto si quieres otra forma de hacerlo aqui esta, yo siempre leo los datos en el evento Timer de un Timer (cada milisegundo)

Option Explicit
Dim var As String

Private Sub Form_Load()
    MSComm1.CommPort = 1 "selecciona el puerto
    MSComm1.PortOpen = True "abre el puerto
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If MSComm1.PortOpen = True Then "si el puerto esta abierto
        MSComm1.PortOpen = False "entonces lo cierra
    End If
End Sub

Private Sub Timer1_Timer()
    var = MSComm1.Input "lee el dato del puerto
    Text1.Text = var
End Sub

Los controles que necesitas es un Timer, un mscomm y un textbox...

Un abrazo.. Sonrisa Gigante

Desconectado gesteva

  • PIC12
  • **
  • Mensajes: 52
RE: Como leo y veo un dato desde Com1 en un campo...
« Respuesta #3 en: 05 de Julio de 2005, 16:57:00 »
Gracias Atlasdelcarinakeel y LordLafebre, siempre ayudando, pero creo que no me supe explicar.

Siguiendo sus consejos y utilizando sus codigos, he puesto una cada de texo, en la cual me aparece siempre la palabra "Text1", y nunca sale nada que le envíe al puerto serial, este es mi codigo, a ver si observan cual es la burrada:

Option Explicit
Dim var As String

Private Sub Command1_Click()
MSComm1.Output = Chr$(1)
End Sub

Private Sub Command10_Click()
MSComm1.Output = Chr$(10)
End Sub

Private Sub Command11_Click()
MSComm1.Output = Chr$(13)
End Sub

Private Sub Command12_Click()
MSComm1.Output = Chr$(15)
End Sub

Private Sub Command13_Click()
MSComm1.Output = Chr$(11)
End Sub

Private Sub Command14_Click()
MSComm1.Output = Chr$(14)
End Sub

Private Sub Command15_Click()
MSComm1.Output = Chr$(12)
End Sub

Private Sub Command16_Click()
MSComm1.Output = Chr$(16)
End Sub

Private Sub Command17_Click()
MSComm1.Input = dato
End Sub

Private Sub Command2_Click()
MSComm1.Output = Chr$(2)
End Sub

Private Sub Command3_Click()
MSComm1.Output = Chr$(3)
End Sub

Private Sub Command4_Click()
MSComm1.Output = Chr$(4)
End Sub

Private Sub Command5_Click()
MSComm1.Output = Chr$(5)
End Sub

Private Sub Command6_Click()
MSComm1.Output = Chr$(6)
End Sub

Private Sub Command7_Click()
MSComm1.Output = Chr$(7)
End Sub

Private Sub Command8_Click()
MSComm1.Output = Chr$(8)
End Sub

Private Sub Command9_Click()
MSComm1.Output = Chr$(9)
End Sub

Private Sub Form_Load()
MSComm1.PortOpen = True
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
End Sub


Private Sub Picture1_Click()

End Sub

Private Sub Text1_Change()
var = MSComm1.Input
Text1.Text = var
End Sub



La parte de enviar datos desde cada boton al microcontrolador funciona perfecto. pero hasta ahi.

Atlasdelcarinakeel, contestando a tu pregunta, yo utilizo el PBP Pro, pues de Assembler se muy poquito, y el Basic lo he estado dominando mucho mas rápido. En cuanto al lenguaje C, tampoco me he metido con él.

Espero me puedan dar algunas otras ideas... a ver cual es el error...

Saludos cordiales!

Rebotado

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
RE: Como leo y veo un dato desde Com1 en un campo...
« Respuesta #4 en: 05 de Julio de 2005, 21:36:00 »
Hola compañero:

Pues al parecer tienes los siguientes errores:

En este evento estas haciendo la asignación al revés

Private Sub Command17_Click()
MSComm1.Input = dato
End Sub

Tiene que ser asi:

Private Sub Command17_Click()
dato = MSComm1.Input
End Sub

Otra cosa no te olvides que el OPTION EXPLICIT te obliga a declarar variables por lo tanto tu variable dato tienes que declararla de tipo string....

En este caso vas a leer el puerto solamente en el evento click del command17 eso depende de que te este enviando tu pic… no se como lo estés haciendo…. Veo que en todos los otros commands buttons envias datos al pic…

Otra cosa mas que no se si esta correcto o tu lo estas programando asi mismo es esta parte:

Private Sub Text1_Change()
var = MSComm1.Input
Text1.Text = var
End Sub

En esta parte vas a leer unicamente cuando el texto cambie, normalmente en la propiedad text aparece el nombre por defecto del objeto, es decir si te creas el primer texto en la propiedad text aparecera Text1, el evento que tu utilizas es para cuando cambie el estado del textbox y en tu programa no va a cambiar, solamente de forma manual… cuando escribas algo o borres solamente una letra vas a leer el puero, espero haberme hecho entender….

No te olvides de configurar tu pic y el mscomm a la misma velocidad…

Si trabajas en PBP puedes hacer un ejemplo sencillo para que pruebes el codigo que puse arriba

include "modedefs.bas"
loop:
        SEROUT 0,N2400,["hola"]
        goto loop
end

en la propiedad settings verifica que la velocidad sea de 2400

Espero haber sido algo útil… cualquier cosa házmela saber....

Un abrazo... Sonrisa Gigante

Desconectado CSNA_7

  • PIC10
  • *
  • Mensajes: 5
RE: Como leo y veo un dato desde Com1 en un campo...
« Respuesta #5 en: 26 de Julio de 2005, 16:45:00 »
Hola, existe una libreria io.Dll especial para comunicacion con puerto paralelo en XP
yo tengo echo varios programas de salida, no,  he probado las entradas, pero tengo los comandos  y la funcion que hace q se puedan ver los datos entrantes en un texbox o en un label, ademas puedo hacer q se muestren en forma binaria o decimal, si te interesa escribeme a ncrom@eresmas.com te enviare la libreria y los comandos.
Saludos


 

anything