Visual Basic - Problema con el MSCOMM

Life is soft - evento anual de software empresarial
 
Vista:

Problema con el MSCOMM

Publicado por Omar (3 intervenciones) el 28/06/2008 04:32:16
Hola a todos, mi problema es el siguiente:

Estoy haciendo una aplicacion para mi teis, esta utiliza comunicacion USB CDC por lo que estoy creando un puerto comm virtual, de entre las diferentes funciones la aplicacion tiene un boton donde comienza una prueba y se comunica con un hardware que yo fabrique, y tiene otro boton pata detener dicha prueba, si yo comienzo y detengo muchas veces la prueba mi aplicacion se queda congelada hasta que desconecto el hardware del puerto USB y el programa regresa a su funcionamiento normal, el problema es cuando detengo la prueba, ahora lo extraño aqui es que si yo ejecuto el programa linea a linea en la parte de la detencion de la prueba, el programa no se congela, quisiera saber cual podria ser el problema.

Aqui estan las partes de codigo:

CON ESTO SE INICIA LA PRUEBA

Private Sub comienza_Click()
Dim mensaje As String
If consulta = 1 Then 'si se estaba viendo los estimulos de pruebas anteriores, entonces antes de comenzar la prueba se deben borrar primero los estimulos que se estan mostrando
tabla_t.Clear 'ya que se pueden alterar los resultados de las pruebas nuevas
consulta = 0 'ya ahora no hay consultas por que se inicio una prueba
End If
If cargo = 1 Then
If e_disciplina.Caption = "Karate" Then 'si es karateca entonces comienza la prueba normalmente

If puertocomm1.PortOpen = False Then 'checo si no esta abierto el puerto
puertocomm1.PortOpen = True 'si no lo esta entonces que lo abra
puertocomm1.Output = "10"

End If

ASI DETENGO LA PRUEBA

Private Sub Detener_Click()
Dim mensaje As String, j As Integer, renglon() As String, q As Integer
j = 0 'inicializacion de variable
ReDim renglon(0) 'esto es para darle un tamaño incial al array, si no se hace habra probelmas
If puertocomm1.PortOpen = False Then
mensaje = MsgBox("La prueba ya esta detenida", 48, "T. R. V.") 'mensaje de texto
GoTo fin
ElseIf puertocomm1.PortOpen = True Then 'si el puerto esta abierto entonces procede
puertocomm1.Output = "2" 'manda el caracter de detencion de la puerba
tabla_t.AddItem ("------------") 'separador entre pruebas realizadas
NumeroDeEstimulos = 0
puertocomm1.PortOpen = False 'y cierra el puerto

Esta ultima parte si realizo la ejecucion de ese codigo linea a linea el problema no se presenta nunca.

Tengo windows XP y estoy programando en visual basic 6

espero puedan ayudarme gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con el MSCOMM

Publicado por igor (633 intervenciones) el 28/06/2008 12:29:19
El problema puede ser que al programa lo le dé tiempo a abrir y cerrar el puerto si haces muchos clicks en poco tiempo o debido a las operaciones de lectura/escritura.

La consecuencia de esto encaja perfectamente con la explicación que has dado. Yo lo resolvería desactivando los botones de inicio y fin en cada momento para asegurar que las operaciones pendientes sobre el puerto terminen.

Si este no es el caso, entonces es por el número de veces que activas o desactivas el puerto. En este caso sería conveniente comprobar si el fallo es con un número determinado de veces, por ejemplo a la octaba vez que pulso inicio y fin, en el fin se bloquea. Esto podría tener que ver con la liberación de recursos, memoria, etc.

PD: Me interesaría bastante saber cómo consigues abrir un puerto USB como si fuera un puerto Serie. Hace poco me preguntaron por algo así para un proyecto parecido al tuyo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar