Hola Aura!!!
Todo esta muy bien lo unico que te faltaria serian unas tonterias para trabajar lo basico del
MSComm, en primer lugar te faltaria configurar dos propiedades mas del
MSComm en el antes de abrir el puerto:
objeto.RThreshold = Valor
Establece y devuelve el número de caracteres que se van a recibir en el buffer antes de que el control
MSComm genere el evento
OnComm.
Al asignar a la propiedad
RThreshold el valor 0 (el valor predeterminado) se desactiva la generación del evento
OnComm cuando se reciben caracteres. Al asignar a la propiedad
RThreshold el valor 1, por ejemplo, hace que el control
MSComm genere el evento
OnComm cada vez que entra un carácter en el búfer de recepción.
objeto.SThreshold = Valor
Establece y devuelve el número mínimo de caracteres que puede admitir el búfer de transmisión antes de que el control
MSComm genere el evento
OnComm.
Al asignar a la propiedad
SThreshold el valor 0 (predeterminado) se desactiva la generación del evento
OnComm para los eventos de transmisión de datos. Al asignar a la propiedad
SThreshold el valor 1 el control
MSComm genera el evento
OnComm cuando el búfer de transmisión está completamente vacío.
Ademas de configurar esas dos propiedades deberias cambiar una parte de tu codigo, antes de abrir el puerto deberias verificar que no este abierto porque si lo esta y lo intentas abrir te va a generar un error.
'Abre el puerto seleccionado
MSComm1.PortOpen = True
Deberias cambiarlo por
'Abre el puerto seleccionado
If Not MSComm1.PortOpen Then
MSComm1.PortOpen = True
End If
Otra cosa que tambien te aconsejaria que hicieras es en el evento
OnComm] es verificar quien fue el que genero este evento, ya que el mismo se puede generar por varias razones, las principales son por haber recibido un dato en el puerto, por haber enviado un dato por el puerto o por causa de algun error, esto lo haces verificando el valor de la propiedad
CommEvent. Entonces todas las instrucciones que tienes dentro del evento
OnComm debes colocarlas dentro de un condicional, ya sea un
If...Then...Else o en un
Select Case de la siguiente forma
If objeto.CommEvent = comEvReceive Then
Valor = objeto.Input
.
.
.
End If
De esta forma solo vas a leer en el puerto unica y exclusivamente cuando haya un dato en el mismo.
Espero que esto te ayude a utilizar mejor el
MSComm y que sigas investigando mas para que le saques el mayor provecho...