TODOPIC

Lenguajes de programación para PC => Visual Basic => Mensaje iniciado por: Javicho en 10 de Septiembre de 2010, 20:24:24

Título: Leer OutBufferCount
Publicado por: Javicho en 10 de Septiembre de 2010, 20:24:24
Saludos a todos:

Quiero testear el valor de OutBufferCount, asi como otras propiedades asi:

MsComm1.Output="Mensaje de prueba"
Do while MsComm1.OutBufferCount>0
Label1.Caption=MsComm1.OutBufferCount
Loop

pero no visualizo el decremento de OutBufferCount. Alguna idea?

Javicho.
Título: Re: Leer OutBufferCount
Publicado por: PalitroqueZ en 11 de Septiembre de 2010, 21:24:11
en vb6

Código: [Seleccionar]
debug.print "valor de OutBufferCount: " & MsComm1.OutBufferCount & & Chr$(13) & Chr$(10)
y miras en la ventana de inspección

Título: Re: Leer OutBufferCount
Publicado por: Javicho en 13 de Septiembre de 2010, 11:48:51
Hola:

No se ve el decremento, solo aparece un valor po ejemplo si envio 200 caracteres aparece en la ventana de inmediato:

valor de OutBufferCount: 186

Yo queria que aparezca en un label o textbox pero igual en la ventana inmediato solo aparece el valor 186 y nada mas, tal vez el sistema prioriza la transmisión de los datos y la visualización le toma mucho tiempo no lo se, a que puede deberse?

Javicho.
Título: Re: Leer OutBufferCount
Publicado por: PalitroqueZ en 13 de Septiembre de 2010, 12:23:49
¿y a cuanto le pusiste a la propiedad OutBufferSize ?



Título: Re: Leer OutBufferCount
Publicado por: Javicho en 13 de Septiembre de 2010, 14:32:11
Hola:

Tengo configurado OutBufferSize=512 bytes, SThreshold=1, 2400bps

'------------------------------------------------------------
Private Sub Command1_Click()

MSComm1.Output = Text8.Text
Debug.Print "valor de OutBufferCount: " & MSComm1.OutBufferCount & Chr$(13) & Chr$(10)

End Sub
'------------------------------------------------------------

Javicho.
Título: Re: Leer OutBufferCount
Publicado por: PalitroqueZ en 13 de Septiembre de 2010, 19:12:24
ah pero si encierras el debug.print dentro de command_click, te imprimirá solo una vez

tienes que estar continuamente imprimiendo, una forma (aunque no precisa) es con el timer, configuras el timer para ejecute cada 50ms

Código: Visual Basic
  1. Private Sub Form_Load()
  2.  
  3. Timer1.Enabled = False
  4. Timer1.Interval = 50
  5.  
  6. End Sub
  7.  
  8. Private Sub Command1_Click()
  9.  
  10. timer1.enable=true
  11. MSComm1.Output = Text8.Text
  12. Timer1.Enabled = False
  13.  
  14. End Sub
  15.  
  16. Private Sub Timer1_Timer()
  17. Debug.Print "valor de OutBufferCount: " & MSComm1.OutBufferCount & Chr$(13) & Chr$(10)
  18. End Sub

a 2400bps tendrías unos 120 bits cada 50ms, siendo los caracteres ascii, entonces se lleva 1Byte entonces, 15 caracteres cada 50 ms aproximadamente



Título: Re: Leer OutBufferCount
Publicado por: Javicho en 14 de Septiembre de 2010, 12:43:53
Hola:

Me salen 0s pero mejor lo cambié por esto:

Private Sub Command1_Click()
Timer1.Enabled = True   'Activo el Timer para visualizar el OutBufferCount
Timer1.Interval = 1     'Intervalo: 1mS
MSComm1.Output = Text8.Text 'Envio el contenido de Text8 por el Puerto
End Sub

Private Sub Timer1_Timer()
Label8.Caption = MSComm1.OutBufferCount 'Muestra el OutBufferCount en el Label8
If MSComm1.OutBufferCount = 0 Then 'Si OutBufferCount = 0 detiene el Timer1
Timer1.Enabled = False
End If
End Sub

Con esto al menos se ve decremento siempre que hayan bastantes datos a enviar y a una baja velocidad, y eso ya que el decremento se ve asi:
100, 74, 61, 35, 27, 0

... algo asi se muestra, buno es mejor que nada. Gracias PalitroqueZ.


Javicho.
Título: Re: Leer OutBufferCount
Publicado por: PalitroqueZ en 14 de Septiembre de 2010, 22:59:02
jeje sip, ese es el problemita cuando se trabaja con el timer a valores menores a 50ms

y además que cuenta el hecho del período de latencia entre el UART<->msvbvm60.dll<->mscomm32.ocx<->aplicación


Título: Re: Leer OutBufferCount
Publicado por: Javicho en 15 de Septiembre de 2010, 11:25:30
Saludos:

Si pues debe ser la razón de un lenguaje de alto nivel, hay procesan en las aplicaciones que toman su tiempo. Gracias de todas maneras.

Javicho.