TODOPIC
Lenguajes de programación para PC => Visual Basic => Mensaje iniciado 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
-
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.
-
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...
'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
-
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
-
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