Autor Tema: comunicacion RS232 en Visual Basic  (Leído 341279 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Milo

  • PIC16
  • ***
  • Mensajes: 101
Re: comunicacion RS232 en Visual Basic
« Respuesta #105 en: 18 de Enero de 2007, 09:14:41 »

Buennass:

Buennas:

Estoy intentando capturar dos bytes con el puerto com, mi dspic envia continuamente bytes al programa de visual Basic, pero no se como hacer para que me los capture de dos en dos (bueno si con el RTrehold, pero no), he estado mirando en el foro y he probado varias cosas pero no consigo que me lo haga.

El problema que tengo es que el indice del array solo se incrementa una vez, supongo que será porque solo entra una vez en el if. Lo que hace el programa es que me saca por el Text1.Text todos lo datos que envio.

¿Cómo puedo hacer para que, a la vez que va ejecutandose el comEvReceive, me guarde los datos en el array en su correspondiente posición incrementando el indice?

Muchas gracias de antemano,

Este es mi código:

Private Sub MSComm1_OnComm()
    Dim i As Integer
    Dim Valor As String
    Dim Dato(10) As String
    Dim X As Integer
   
   
    Dim textosalida As String
   
       

    If MSComm1.CommEvent = comEvReceive Then
        textosalida = MSComm1.Input
        txtDatosRx.Text = txtDatosRx.Text & textosalida
        txtDatosRx.Text = textosalida
        Dato(X) = textosalida
         X = X + 1
       
        Text1.Text = Dato(0)
        Text2.Text = Dato (1)

    End If
   
     
End Sub


Saludos,
"En tanto que haya alguien que crea en una idea, la idea vive" Ortega y Gasset

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: comunicacion RS232 en Visual Basic
« Respuesta #106 en: 18 de Enero de 2007, 11:18:51 »
Hola.

Para poder recibir de a dos bytes, basicamente necesitas cumplir con dos requisitos:

RThresHold debe valer 2;
InBufferSize debe ser mayor igual a 2;

Para que lo que queres funcione, no necesitas mas que sacar:

    Dim Dato(10) As String
    Dim X As Integer

del evento Private Sub MSComm1_OnComm().

Asi como esta ahora, las variables esas son locales. Entonces, se crean al entrar el programa al Sub y se destruyen al salir de este.
Declaralas fuera, y de esta manera seran globales y no se perderan.

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Milo

  • PIC16
  • ***
  • Mensajes: 101
Re: comunicacion RS232 en Visual Basic
« Respuesta #107 en: 19 de Enero de 2007, 05:41:51 »

Muchas gracias,  :mrgreen:, Bruno

La información me ha servido de mucho.
"En tanto que haya alguien que crea en una idea, la idea vive" Ortega y Gasset

Desconectado Designer

  • PIC10
  • *
  • Mensajes: 1
Re: comunicacion RS232 en Visual Basic
« Respuesta #108 en: 27 de Abril de 2007, 20:26:05 »
Hello amigos, necesito ayuda, con RECIBIR datos en visual desde 16f877? les agradesco todo lo que puedan brindarme.!!!!!!!!!!!

Desconectado proycto(A)

  • PIC10
  • *
  • Mensajes: 6
Re: comunicacion RS232 en Visual Basic
« Respuesta #109 en: 16 de Mayo de 2007, 23:24:27 »
ESTE FORO TIENE EXACTAMENTE LO QUE NECESITO, SIN EMBARGO EL LINK PARA DESCARGAR YA NO ESTA, QUIEN LO PUDIERA SUBIR SERIA DE GRAN AYUDA

DE ANTEMANO GRACIAS

Desconectado Milo

  • PIC16
  • ***
  • Mensajes: 101
Re: comunicacion RS232 en Visual Basic
« Respuesta #110 en: 21 de Mayo de 2007, 13:16:39 »

Buennass,

Tengo un problema con la recepción de caracteres con pic. Creo que el problema es de tiempos. He intentado hacerme un especie delay en c a lo bruto pero no ha funcionado, este es mi codigo y me interesa hacer una especie de delay como funcionaría en c para cada vez que envio en caracter espere cierto tiempo.

Citar
Private Sub cmdAceptar_Click()
       
    Flag = 0
           
    frmPrincipal.MSComm1.Output = Chr$(&H2E)                    'Caracter sincronismo
    Temporizacion                                                            'Intento de función delay
    frmPrincipal.MSComm1.Output = Chr$(&HA)                      'Modo Algoritomo PY0
    Temporizacion
    frmPrincipal.MSComm1.Output = Chr$(&HB)                     'Modo Algoritomo PY0
    Temporizacion
    frmPrincipal.MSComm1.Output = Chr$(&HC)                     'Modo Algoritomo PY0
   
End Sub


Private Function Temporizacion()
    Timer1.Enabled = False
    Timer1.Interval = 2000
    Timer1.Enabled = True

    While Flag = 0
          Flag = Flag           'Por poner algo dentro del while
    Wend

End Function



Private Sub Timer1_Timer()
    Timer1.Enabled = False
    Flag = 1
End Sub


Lo que intento hacer es que se espere dos segundos cada vez que envio un caracter a mi pic, pero no funciona se me cuelga el programa. Si alguien sabe otra forma mas coherente, que la que me he inventado, de hacer un delay espero su consejo


saludos,
"En tanto que haya alguien que crea en una idea, la idea vive" Ortega y Gasset

Desconectado Milo

  • PIC16
  • ***
  • Mensajes: 101
Re: comunicacion RS232 en Visual Basic
« Respuesta #111 en: 21 de Mayo de 2007, 13:39:38 »

He descubierto que si uno mira antes por la web tienes mas probabildades de que le funcione una cosa,en vez de inventar como yo,  :D

Así que no se si me valdrá para mi programa del pic, pero funcionar como delay funciona:

Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Y luego pones en la función que utilices, esto

Sleep 2000 'Esto es para dos segundos, es decir que el numero que pongas es el numero de milisegundos que va estar haciendo el delay

Aquí esta las web de donde lo he sacado, de todas manera solo puse "delay en visual basic" , en el google, dificil ehh  :mrgreen:

http://support.microsoft.com/kb/212667


http://www.daniweb.com/techtalkforums/thread605.html

saludos,
"En tanto que haya alguien que crea en una idea, la idea vive" Ortega y Gasset

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: comunicacion RS232 en Visual Basic
« Respuesta #112 en: 21 de Mayo de 2007, 19:04:45 »
si Milo es una opción,

aunque hay casos y depende de la aplicación en que puede causar problemas, puesto que esa api puede 'congelar' la aplicación el tiempo asignado, por la web se consiguen procedimientos que hacen las de retardos base de contadores y usando el 'do events'

por ej:

http://www.canalvisualbasic.net/temarios/trucos3.asp

en este link aparece una función llamada Esperar

Un sencillo Cronómetro

Para ejecutar un lapso de tiempo x (por ejemplo 5 segundos), escribir el siguiente codigo en un Modulo Nuevo:

    Public Sub Esperar(Tiempo as Single)
        Dim ComienzoTiempo as Single
        Dim FinTiempo as Single
        ComienzoTiempo = Timer
        FinTiempo = ComienzoTiempo + Tiempo
        Do While FinTiempo > Timer
                Do Events
                 If ComienzoTiempo > Timer Then
                        FinTiempo = FinTiempo - 24 * 60 * 60
                End If
        Loop
   End Sub

se puede incluir el tiempo en modo fraccional o con decimales


La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: comunicacion RS232 en Visual Basic
« Respuesta #113 en: 21 de Mayo de 2007, 19:14:57 »
Bueno.

Pedro: cabe mencionar la excepcion de que la funcion Timer cuenta los segundos pasados de medianoche, por lo que el algoritmo no funcionará bien problablemente en cercanías de la medianoche, si el usuario decide cambiar la hora del sistema, o si el tiempo de espera es muy grande(el algoritmo nunca funcionará bien si Tiempo > 24*3600),etc si no se tienen en cuenta ciertos ajustes que se le deben hacer.

Saludos.
« Última modificación: 21 de Mayo de 2007, 19:26:45 por BrunoF »
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: comunicacion RS232 en Visual Basic
« Respuesta #114 en: 21 de Mayo de 2007, 19:34:11 »
¿que tal Bruno?

no me había pensado en ese pequeño gran detalle, y en las aplicaciones que le he montado no lo había probado cerca de medianoche, me tocará probarlo

por allí hay otra rutina, que trabaja de forma similar, no se si tenga el mismo problema, pero ésta trabaja solo con enteros.
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Milo

  • PIC16
  • ***
  • Mensajes: 101
Re: comunicacion RS232 en Visual Basic
« Respuesta #115 en: 22 de Mayo de 2007, 12:48:41 »
Buennas:

Gracias Pedro y Bruno por la ayuda, de momento seguiré con la función sleep a ver si no me da muchos problemas, cuando tenga un poco mas de tiempo probaré a optimizar esa función.

También vi algo por la web que utilizaba en método OnTime,

Sub MyMainMacro()

   ' Pause for 15 seconds.
   Application.OnTime When:=Now + TimeValue("00:00:15"), _
      Name:="MyDelayMacro"

End Sub

Public Sub MyDelayMacro()

   ' Place your delayed macro commands here.
   MsgBox "This macro runs after 15 seconds."

End Sub

La web es la de microsoft la postee dos mensajes atras.

Saludos y gracias de nuevo.
"En tanto que haya alguien que crea en una idea, la idea vive" Ortega y Gasset

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: comunicacion RS232 en Visual Basic
« Respuesta #116 en: 22 de Mayo de 2007, 13:57:41 »
Ojo que esa funcion es para crear macros con controles del Excel(office en general).

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Milo

  • PIC16
  • ***
  • Mensajes: 101
Re: comunicacion RS232 en Visual Basic
« Respuesta #117 en: 22 de Mayo de 2007, 16:10:20 »

Buennass:

Yo ni siquiera la he mirado bien pero aunque sea para office te da una idea de como hacerla con visualbasic controlando el tiempo (función time), se podría ver que hora es, y hacer un while comprobando la hora hasta que pasasen x segundos , podría ser otra solución.
Podría ser algo así ?


saludos,
"En tanto que haya alguien que crea en una idea, la idea vive" Ortega y Gasset

Desconectado homfly

  • PIC12
  • **
  • Mensajes: 77
Re: comunicacion RS232 en Visual Basic
« Respuesta #118 en: 05 de Junio de 2007, 08:39:04 »
donde esta el archivo que hay en el primer mensaje?Quiero empezar a aprender a comunicarme con rs232 y tambien a aprender a usar a visual basic.

Mandarme informacion que tengais sobre visual basic y comunicacion pic-pc  a

homfly@hotmail.com

Gracias
« Última modificación: 05 de Junio de 2007, 14:29:17 por homfly »

Desconectado artemix

  • PIC10
  • *
  • Mensajes: 1
Re: comunicacion RS232 en Visual Basic
« Respuesta #119 en: 05 de Junio de 2007, 20:34:23 »
hola amigo estaba quisiera que me envies el programa de la comunicacion RS232 en visual basic...para probarlo e implementarlo en el proyecto que estoy realizando.te agradeceria que me lo envies a mi correo:salim2281@hotmail.com