TODOPIC

Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: shatfiel en 25 de Noviembre de 2008, 20:24:37

Título: Problemas al leer datos por RS232 en Visual 6.0
Publicado por: shatfiel en 25 de Noviembre de 2008, 20:24:37

Hola a todos......


tengo el suguiente problema y espero que me ayuden por favor,, ya que lo he untentado casi todo y no logro que me lea visual.

Tengo el siguiente programa en el mscomm, pero no logro que visual me lea los datos por RS232, estoy enviando desde el Pic  lo siguiente

printf("SNS1= %2.1f", sensor_axila);
printf("SNS2= %2.1f", sensor_pie);..... y asi con los demas sensores, pero no logro que visual lo lea

If MSComm1.CommEvent = comEvReceive Then
   

    ReciveString = MSComm1.Input + ReciveString
    lstChar = Left(ReciveString, 1)
    If lstChar = "S" Then CutString = Left(ReciveString, 10)
   
'=====================================================================
' SENSORES DE PACIENTE
'=====================================================================
   
    'Sensor Axila
    If Left(CutString, 4) = "SNS1" Then
        Sns1Value = Val(Right(CutString, 5))
    End If
    TempInicial1.Text = Sns1Value
   
    'Sensor Pies
    If Left(CutString, 4) = "SNS2" Then
        Sns2Value = Val(Right(CutString, 5))
    End If
 TempInicial2.Text = Sn21Value


'=====================================================================
' SENSORES DE MANTA
'=====================================================================
       
    'Zona Uno
    If Left(CutString, 4) = "SNS3" Then
        Sns3Value = Val(Right(CutString, 5))
    End If
 TempInicial3.Text = Sns3Value   


    'Zona Dos
    If Left(CutString, 4) = "SNS4" Then
        Sns4Value = Val(Right(CutString, 5))
    End If
 TempInicial4.Text = Sns4Value

end sub


Por favor cualquier ayuda es buena...... :shock:


   
    'Zona Tres
    If Left(CutString, 4) = "SNS5" Then
        Sns5Value = Val(Right(CutString, 5))
    End If

 TempInicial5.Text = Sns5Value
Título: Re: Problemas al leer datos por RS232 en Visual 6.0
Publicado por: jacrmr en 25 de Noviembre de 2008, 20:37:49
Desafortunadamente la información que posteaste no es la importante para diagnosticar tu problema. Más bien lo que debes postear es cómo configuraste el puerto, los settings, buffers, len size, etc.
Y la forma en que lo estás detectando para abrirlo y comunicarse.
Título: Re: Problemas al leer datos por RS232 en Visual 6.0
Publicado por: migsantiago en 25 de Noviembre de 2008, 20:38:24
   ReciveString = MSComm1.Input + ReciveString
    lstChar = Left(ReciveString, 1)
    If lstChar = "S" Then CutString = Left(ReciveString, 10)

Hola

¿Cuántos SNS sensores son reportados por RS232?

¿Por qué concatenas ReciveString con ReciveString?

Para mejorar la conexión puedes esperar a que el buffer de la pc se llene con 10 caracteres multiplicados por n sensores. Por ejemplo, si tuvieras 9 sensores y 10 caracteres enviados por cada sensor, deberás esperar a que el buffer tenga 90 caracteres y luego copias el buffer completo en ReciveString. Por ejemplo...

Código: [Seleccionar]
'aquí llega si el com1 tuvo cambios en rx o tx
Private Sub MSComm1_OnComm()
If (MSComm1.InBufferCount >= 90) Then 'el pic envía 90bytes si fueran 9 sensores por 10 caracteres
    cadena = MSComm1.Input
Título: Re: Problemas al leer datos por RS232 en Visual 6.0
Publicado por: shatfiel en 27 de Noviembre de 2008, 20:22:13


Hola.... pues no le intentado de esa forma, y puede que funcione, aqui les envio los otros datos que me preguntan.


MSComm1.Settings = "9600,n,8,1"          'velocidad, paridad
MSComm1.CommPort = 1                     'elegir el # del puerto
MSComm1.PortOpen = True
MSComm1.InputLen = 0

If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
   
'====================================================================
'ADQUISICION SEÑAL DE LOS SENSORES
'====================================================================

If MSComm1.PortOpen = False Then MSComm1.PortOpen = True

MSComm1.RThreshold = 1 'Recibir
MSComm1.SThreshold = 1 'Enviar
Título: Re: Problemas al leer datos por RS232 en Visual 6.0
Publicado por: Toph en 28 de Noviembre de 2008, 19:09:33


Hola.... pues no le intentado de esa forma, y puede que funcione, aqui les envio los otros datos que me preguntan.


MSComm1.Settings = "9600,n,8,1"          'velocidad, paridad
MSComm1.CommPort = 1                     'elegir el # del puerto
MSComm1.PortOpen = True
MSComm1.InputLen = 0

If MSComm1.PortOpen = True Then MSComm1.PortOpen = False

Esto de que si esta abierto que lo cierre, me parece que te puede dar problemas ¿porque lo pones asi? , ¿acaso no esta constantemente leyendo el puerto?

ahora con respecto a esto:
   
MSComm1.RThreshold = 1 'Recibir

¿Por que le colocas 1 a la propiedad RThreshold?, asi cada vez que reciba un carácter se producirá el evento OnComm ejecutando el procedimiento asociado a él, lo que hará perder tiempo a la aplicación, impidiéndole realizar otras funciones ¿asi lo requiere el programa?.

Tienes que determinar en donde esta el problema en la PC,en el circuito que te convierte de TTL a RS232 o en el PIC.

para poder probar lo primero deberias de usar por ejemplo la hyperterminal que trae windows si esta recibe lo del PIC entonces el problema esta en la PC, sino entonces el problema esta en el PIC o circuito