Autor Tema: Como ver mejor una trama en un formulario  (Leído 4111 veces)

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

Desconectado Mendoza

  • PIC10
  • *
  • Mensajes: 21
Como ver mejor una trama en un formulario
« en: 18 de Agosto de 2007, 22:17:43 »
Hola amigos estoy haciendo un programita para recibir una trama y procesarla pero tengo un problema y es que cuando la recibo me muestra 4 tramas una al lado de la otra y no se como hacer para que la trama se refresque en la misma posicion donde empezo, porque se me sale del formulario y no puedo ver como sigue.
Y ya que estoy con este tema, como puedo poner la trama que voy recibiendo en una textbox o listbox para poder verla a medida que la voy recibiendo?
Estoy empezando como ven no creo que sea muy dificil de solucionar.
Aca les dejo el codigo. En el formulario solo puse el telefonito de mscom.

Saludos  :-) :-) :-)

Option Explicit

Private Sub Form_Load()

MSComm1.RThreshold = 1
MSComm1.InputLen = 4
MSComm1.Settings = "300,N,8,1"
MSComm1.DTREnable = False
MSComm1.CommPort = 2
MSComm1.PortOpen = True

End Sub

Private Sub MSComm1_OnComm()
Show
Dim sData As String


If MSComm1.CommEvent = comEvReceive Then
    sData = MSComm1.Input ' Get data
   
    Print Asc(sData);
   
End If
End Sub

Desconectado PalitroqueZ

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5490
    • Electrónica Didacta
Re: Como ver mejor una trama en un formulario
« Respuesta #1 en: 20 de Agosto de 2007, 16:32:30 »
¿porque no la pones en un textbox? es mejor, y así puedes refrescar (limpiar) la caja de texto entre tramas.

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

Desconectado Mendoza

  • PIC10
  • *
  • Mensajes: 21
Re: Como ver mejor una trama en un formulario
« Respuesta #2 en: 21 de Agosto de 2007, 00:05:29 »
Hola justamente iba a decir que lo pude poner en una textbox pero la trala 10000 me sale una al lado de la otra, lo que pude lograr pero que no me sirve es que toda la trama se repita exactamente igual pero un numero bajo el otro aca te muestro el codigo con textbox:

Option Explicit

Private Sub Form_Load()
MSComm1.RThreshold = 1
'MSComm1.InputLen = 4
MSComm1.Settings = "300,N,8,1"
MSComm1.DTREnable = False
MSComm1.CommPort = 2
MSComm1.PortOpen = True

End Sub

Private Sub MSComm1_OnComm()

Dim envio As Boolean
Dim sData As String
Dim cadena As String
envio = False

If MSComm1.CommEvent = comEvReceive Then

sData = Asc(MSComm1.Input)
 
'cadena = sData + Chr(13) + Chr(10)
 Texto_Recibido.Text = Texto_Recibido.Text + sData
 
 'Texto_Recibido.Text = sData & vbCrLf & Texto_Recibido.Text
 Beep
 End If
 
'If MSComm1.CommEvent = comEvSend Then
   'Texto_Mensajes = "Se envió texto"
'End If
Cls
End Sub


Como ves tengo varias lineas comentadas que estube probando sin resultado use el vbclrf y  los chr(13)+chr(10) que vi de posteos similares y el beep
El problema esta creo que con los eventos la trama 10000 la envio por proteus cada 1 segundo eso no falla, cada vez que envio la trama la recibo con los 5 bips juntos por lo que estaria enviando retorno de carro por cada caracter que llega y no por los 5 juntos
Podria poner algun contador?.
Prueba este codigo y veras lo que ocurre, si no si tenes alguno que ande bien te agradeceria si me lo puedes pasar. :-) :-) :-)
Saludos amigo

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Como ver mejor una trama en un formulario
« Respuesta #3 en: 21 de Agosto de 2007, 01:14:20 »
Hola.

Si la longitud de la cadena que envias es constante, podés hacer asi:

Option Explicit

Private Sub Form_Load()
MSComm1.RThreshold = 5
'MSComm1.InputLen = 5
MSComm1.Settings = "300,N,8,1"
MSComm1.DTREnable = False
MSComm1.CommPort = 2
MSComm1.PortOpen = True

End Sub

Private Sub MSComm1_OnComm()

Dim envio As Boolean
Dim sData As String
Dim cadena As String
envio = False

If MSComm1.CommEvent = comEvReceive Then

    sData = MSComm1.Input
    sData = Pasar2Asc(sData )

    Texto_Recibido.Text = Texto_Recibido.Text & sData & vbcrlf
    Beep
End If

End Sub

Private Function Pasar2Asc(Cadena As String) As String

Dim Recorre As Integer

For Recorre = 1 To Len(Cadena)
    Pasar2Asc = Pasar2Asc & Asc(Mid(Cadena, Recorre, 1))
Next

End Function

Sino hay muchas otras formas de hacerlo.

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 Mendoza

  • PIC10
  • *
  • Mensajes: 21
Re: Como ver mejor una trama en un formulario
« Respuesta #4 en: 21 de Agosto de 2007, 13:52:49 »
Hola Bruno probe tu codigo, en realidad son 4 caracteres, ya adapte el codigo pero lo que me muestra es l sighiente en el texbox

1000[][]1000[][]1000[][]1000[][]1000[][]

donde [] son cuadraditos. Se pudo separar la trama pero lo que busco es que en el textbox me muestre:

1000

y se sobreescriba sobre ese mismo numero en el textbox tendria que ser una instruccion o algoritmo que me envie al principio nuevamente.

Mientras escribo esto modifique las propiedades de textbox 8) 8) 8), le puse multiline TRUE y ahora la trama 1000 la escribe una bajo la otra, pero no vuelve al principio, de esa manera si cambia un caracter no lo puedo ver. :x
Tendria que modificar algo mas en las propiedades de la textbox?  :?
Saludos  :) :) :)

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Como ver mejor una trama en un formulario
« Respuesta #5 en: 21 de Agosto de 2007, 15:07:15 »
Hola.

Entonces no te queda más que reemplazar la linea siguiente:

Texto_Recibido.Text = Texto_Recibido.Text & sData & vbcrlf

por:

Texto_Recibido.Text =  sData

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 Mendoza

  • PIC10
  • *
  • Mensajes: 21
Re: Como ver mejor una trama en un formulario
« Respuesta #6 en: 22 de Agosto de 2007, 00:23:10 »
Le saque el Texto_Recibido.Text que sumaba y anduvo voy a probar lo tuyo

Bueno ya solucione el tema y le agregue otras cosas al programa les dejo el codigo para que lo vean gracias por sus comentarios.

Option Explicit
Private Sub Form_Load()
With MSComm1
.RThreshold = 4
.InputLen = 4
.Settings = "300,N,8,1"
.DTREnable = False
.CommPort = 2
.PortOpen = True
End With
End Sub
Private Sub MSComm1_OnComm()
Dim Num1 As String
Dim Num2 As String
Dim Num3 As String
Dim Num4 As String
Dim sData As String
Dim Cadena As String
Dim Todo As String

If MSComm1.CommEvent = comEvReceive Then

    sData = MSComm1.Input
    sData = Pasar2Asc(sData)
    'antes era abajo Texto_Recibido.Text = Texto_Recibido.Text & sData & vbCrLf
    Todo = sData & vbCrLf
    Texto_Recibido.Text = Todo
    Beep
    Num1 = Mid(sData, 1, 1)
    Num2 = Mid(sData, 2, 1)
    Num3 = Mid(sData, 3, 1)
    Num4 = Mid(sData, 4, 1)
   
    Byte1.Text = Num1 'Mid(sData, 1, 1)
    Byte2.Text = Num2 'Mid(sData, 2, 1)
    Byte3.Text = Num3 'Mid(sData, 3, 1)
    Byte4.Text = Num4 'Mid(sData, 4, 1)
    Text5.Text = Time
   
    If Num1 = 1 Then Text1.Text = "EQUIPO1" Else If Num1 = 0 Then Text1.Text = "OK"
    If Num2 = 1 Then Text2.Text = "ALARMA" Else If Num2 = 0 Then Text2.Text = "OK"
    If Num3 = 1 Then Text3.Text = "ALARMA" Else If Num3 = 0 Then Text3.Text = "OK"
    'End If (tuve que anularlo solo acepta uno)
End If

End Sub

Private Function Pasar2Asc(Cadena As String) As String

Dim Recorre As Integer

For Recorre = 1 To Len(Cadena)
    Pasar2Asc = Pasar2Asc & Asc(Mid(Cadena, Recorre, 1))
Next

End Function


 

anything