Usuario
Problema con puertos serie

Pregunta
-
Buenos días Foro!
estoy teniendo un problema con un programa que hice. yo en ese programa uso los puertos serie de una computadora (tiene 2 y uno mas con un adaptador USB-RS232) el tema es que de vez en cuando por alguna razón cuando quiero iniciar el programa no me deja por que dice que los puertos están abiertos. yo tengo una subrutina de cierre de puertos que la uso siempre que pongo "Stop" en el programa, es mas, lo ultimo que hice fue loguear cada cierre de puerto y si realmente esta cerrado, acá pongo el código.Sub mCerrar_Puertos() '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' On Error Resume Next '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' If gblEmular(2) = False Then Call gGrabo_log("Inicia la rutina de cierre de puertos serie") End If MSCommBalanza.PortOpen = False If MSCommBalanza.PortOpen = False Then Call gGrabo_log("Se cerró puerto serie de la balanza") Else Call gGrabo_log("Falló al cerrarse el puerto serie de la balanza") End If If gblEmular(3) = False Then MSCommImpresora.PortOpen = False End If If MSCommImpresora.PortOpen = False Then Call gGrabo_log("Se cerró puerto serie de la impresora") Else Call gGrabo_log("Falló al cerrarse el puerto serie de la impresora") End If If gblEmular(4) = False Then MSCommPLC.PortOpen = False End If If MSCommPLC.PortOpen = False Then Call gGrabo_log("Se cerró puerto serie del PLC") Else Call gGrabo_log("Falló al cerrarse el puerto serie del PLC") End If Err.Clear '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' End Sub
El programa corre sobre Windows XP
Espero que me puedan ayudar, muchas gracias!
Todas las respuestas
-
-
Muchas gracias por la respuesta. Nunca lo comprobé con el hyperterminal, como seria eso?
En este caso las variables gsParam.sPuertoserie(Balanza, Aplicadora o PLC) valen 1, 2 y 7 respectivamente y la variable gsParam.sValoresPuerto(Aplicadora, Balanza o PLC) vale en los 3 casos lo mismo 9600,n,8,1
Private Function msAbrir_Puerto_Serie(iPuerto As Integer) As String ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' On Error Resume Next ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Dim sError As String ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' If gblEmular(iPuerto + 1) Then msAbrir_Puerto_Serie = "OK" Else Err.Clear Select Case iPuerto Case 1 ' balanza MSCommBalanza.CommPort = Val(gsParam.sPuertoSerieBalanza) MSCommBalanza.Settings = gsParam.sValoresPuertoBalanza MSCommBalanza.PortOpen = True Case 2 ' impresora MSCommImpresora.CommPort = Val(gsParam.sPuertoSerieAplicadora) MSCommImpresora.Settings = gsParam.sValoresPuertoAplicadora MSCommImpresora.PortOpen = True Case 3 ' plc MSCommPLC.CommPort = Val(gsParam.sPuertoSeriePLC) MSCommPLC.Settings = gsParam.sValoresPuertoPLC MSCommPLC.PortOpen = True End Select If Err.Number <> 0 Then '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' sError = Trim$(Err.Number) & " - " & Err.Description msAbrir_Puerto_Serie = sError '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Else Select Case iPuerto Case 1 ' balanza If MSCommBalanza.PortOpen Then msAbrir_Puerto_Serie = "OK" Else msAbrir_Puerto_Serie = "Imposible abrir puerto" End If Case 2 ' impresora If MSCommImpresora.PortOpen Then msAbrir_Puerto_Serie = "OK" Else msAbrir_Puerto_Serie = "Imposible abrir puerto" End If Case 3 ' plc If MSCommPLC.PortOpen Then msAbrir_Puerto_Serie = "OK" Else msAbrir_Puerto_Serie = "Imposible abrir puerto" End If End Select End If End If Err.Clear ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' End Function
Saludos y Gracias
-