Autor Tema: que leo cuando quiero leer el puerto serie?  (Leído 9271 veces)

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

Desconectado fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: que leo cuando quiero leer el puerto serie?
« Respuesta #15 en: 02 de Agosto de 2006, 23:13:02 »
no se ,aca te mando la parte de configuracion del puerto y la subrutina de mscomm1.on_com

--------------------------------------------------------------------------------------------------------------------
Private Sub COM3_Click()
If MSComm1.PortOpen = True Then
  MSComm1.PortOpen = False
End If
With MSComm1
.CommPort = 3         ' Se usara el puerto Com3
.Settings = "9600,N,8,1"   ' Velocidad de Tx 9600 baud, no paridad, 8 bits de datos, y 1 bit de stop
.InputMode = comInputModeBinary
.InputLen = 0              ' El control MSComm leera todo el contenido del búfer de recepción
.RThreshold = 1
.RTSEnable = True
.SThreshold = 1
.PortOpen = True
End With
ledcom3.BackColor = &HFF00&
ledcom2.BackColor = &HFF&
End Sub
------------------------------------------------------------------------------------------

Private Sub limpiadatos_Click()
TxtRecibir = " "
End Sub
------------------------------------------------------------------------------------------------------------
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
    Case comEvReceive
        Dim VariableY As String
         TxtRecibir.Text = TxtRecibir.Text & StrConv(MSComm1.Input, vbUnicode) & vbCrLf
         TxtRecibir.SelStart = Len(TxtRecibir)                                                                  '  ¿? ¡innecesario!
         VariableY = MSComm1.Input
        MsgBox VariableY                                                                                              'aca puse lo que me dijiste                                                                               
        If IsNumeric(VariableY) Then
        VariableX = VariableX + 100                                                                              'Autoincrementar posicion X
        grafica.Circle (grafica.Height - CSng(VariableY), VariableX), 500, vbRed              'Si el valor recibido es un valor numerico entonces...
        grafica.BackColor = &HFF00FF                                                                            '   como debug para saber si entra en el if !!!
   End Select
End Sub

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: que leo cuando quiero leer el puerto serie?
« Respuesta #16 en: 02 de Agosto de 2006, 23:20:34 »
Hola. Probalo asi y decime que te muestra el cuadro de mensaje que aparece.

Dim VariableX as integer

Private Sub COM3_Click()
If MSComm1.PortOpen = True Then
  MSComm1.PortOpen = False
End If
With MSComm1
.CommPort = 3         ' Se usara el puerto Com3
.Settings = "9600,N,8,1"   ' Velocidad de Tx 9600 baud, no paridad, 8 bits de datos, y 1 bit de stop
.InputMode = comInputModeBinary
.InputLen = 0              ' El control MSComm leera todo el contenido del búfer de recepción
.RThreshold = 1
.RTSEnable = True
.SThreshold = 1
.PortOpen = True
End With
ledcom3.BackColor = &HFF00&
ledcom2.BackColor = &HFF&
End Sub
------------------------------------------------------------------------------------------

Private Sub limpiadatos_Click()
TxtRecibir = " "
End Sub
------------------------------------------------------------------------------------------------------------
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
    Case comEvReceive
        Dim VariableY As String
         VariableY = MSComm1.Input
         TxtRecibir.Text = TxtRecibir.Text & StrConv(VariableY, vbUnicode) & vbCrLf
         TxtRecibir.SelStart = Len(TxtRecibir)                                                                  '  ¿? ¡innecesario!
        MsgBox VariableY                                                                                              'aca puse lo que me dijiste                                                                               
        If IsNumeric(VariableY) Then
        VariableX = VariableX + 100                                                                              'Autoincrementar posicion X
        grafica.Circle (grafica.Height - CSng(VariableY), VariableX), 500, vbRed              'Si el valor recibido es un valor numerico entonces...
        grafica.BackColor = &HFF00FF                                                                            '   como debug para saber si
entra en el if !!!
        end if
   End Select
End Sub

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 fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: que leo cuando quiero leer el puerto serie?
« Respuesta #17 en: 02 de Agosto de 2006, 23:34:48 »
lo que sale en el mesgebox son signos de pregunta variados,es como si no cargara correctamente el mscomm1.input en Variable Y.

en algun momento cuando hago muchos enter sobre el boton del mesagebox por ahi entra en el if is numeric porque aleatoriamente tomó un numero
pero me fije con depuracion f8 y la parte de ifisnumeric la pasa de largo ,no entra a la parte de graficacion,si a la anterior del txtrecibir.text

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: que leo cuando quiero leer el puerto serie?
« Respuesta #18 en: 02 de Agosto de 2006, 23:37:32 »
Si tenes MSN lo hablamos por ahi asi no se hace tan tedioso. Busca en mi perfil mi mail y agregame que te ayudo.
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 fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: que leo cuando quiero leer el puerto serie?
« Respuesta #19 en: 03 de Agosto de 2006, 20:10:43 »
a ver si me pueden ayudar con esto:

ya logre capturar los puntos :-/ :-/
me falta saber que pasa con los puntos en rojo

desde ya gracias
este es el pedazo de codigo de on-comm
-------------------------------------------------------------------------------------------
Private Sub MSComm1_OnComm()
Dim VariableYtext As String
Dim VariableY As String
Dim Der As Long
Dim Izq As Long
Select Case MSComm1.CommEvent
  Case comEvReceive
     

        VariableY = MSComm1.Input
         VariableYtext = MSComm1.Input
        TxtRecibir.Text = TxtRecibir.Text & VariableYtext & vbCrLf   'uso esta linea porque es modo texto
        TxtRecibir.SelStart = Len(TxtRecibir)
'
                    grafica.Scale (-10, 100)-(290, -100)
                    If IsNumeric(VariableY) Then                                            ' printf desde el pic sin letras ,numerico puro
                    Der = VariableY
                    VariableX = VariableX + 2
                     grafica.PSet (VariableX, Val(Der / 6)), vbGreen         'grafico derecha ; puntos en verde
                    End If
                   
                    If Asc(VariableY) = "68" Then                                             'si tiene una D adelante en el printf del pic
                    Izq = Val(MSComm1.Input)                                                ' en izq designo la parte numerica de la variable Y que tiene letra D
                    VariableX = VariableX + 2
                    grafica.PSet (VariableX, Val(Izq / 6)), vbRed              'grafico izq : puntos  en rojo(si no coloco val(izq) da error de tipos '13'
                    End If
  If VariableX > 290 Then
  grafica.Cls
  End If
  End Select

  End Sub

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: que leo cuando quiero leer el puerto serie?
« Respuesta #20 en: 03 de Agosto de 2006, 20:16:53 »
Hola. Cambia:

Izq = Val(MSComm1.Input)

por:

Izq = Right(VariableY, len(VariableY)-1)

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 BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: que leo cuando quiero leer el puerto serie?
« Respuesta #21 en: 03 de Agosto de 2006, 20:22:40 »
Y te recomiendo para que sea mas facil de leer el programa y modificar, que cambies:

Código: Visual Basic
  1. If Asc(VariableY) = "68" Then

por:

Código: Visual Basic
  1. If left(VariableY,1) = "D" Then

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 fastyx

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 353
Re: que leo cuando quiero leer el puerto serie?
« Respuesta #22 en: 04 de Agosto de 2006, 01:26:09 »
parece que voy a tener que hacer el rtreshold de longitud variable ya que cuando mando valores de posicion del motor de 1 byte(hasta 255)
el seteo del rteshold es diferente que cuando mando valores de 3 bytes. lo probe manualmente y funciona, ahora lo tengo que hacer y conceptualmente lo entiendo ,pero no le engancho el lenguaje

seria algo asi:

leer cuantos bytes se mandaron( lo uedo conocer por el retorno de carro o nueva linea)
esa cantidad de bytes es el valor de rtreshlold salvo que se le agregue por lo del identificador D

voy a seguir peleandola...