Cómo solucionar problemas de comunicación serie
De lo contrario, ¿cuántos bytes se deben recibir para satisfacer el siguiente comando de direccionamiento? El procesamiento del código del programa es difícil.
De hecho, el paquete de datos devuelto por la computadora inferior puede agregar algunos otros bytes en su código para alcanzar la misma longitud, haciendo así que el código recibido sea conciso.
Después de recibir datos de la misma longitud, el proceso de recepción se puede borrar para esperar la siguiente recepción.
Suplemento:
Si la longitud del byte recibido se puede determinar en función del número de dirección de los datos devueltos por la computadora inferior, el siguiente código puede recibir datos de diferentes longitudes, como referencia. solamente:
Private Sub MSComm 1 _ on com()
Continuar con el siguiente paso en caso de error
Atenuar BytReceived() como bytes
Dim strBuff como cadena de caracteres
Dim strData como cadena
Diagrama I como un número entero
Dip x como un número entero
Seleccione el Caso MSComm1. CommEvent
Caso 2
MSComm1. InputLen = 0
strBuff = MSComm1. Entrada
BytReceived() = strBuff
Para i = 0 a UBound(BytReceived)
si Len(Hex(byt recibido(I)))= 1 , entonces
strData = strData & amp0 & amp hexadecimal (número de bytes recibidos (I))
Otros
strData = strData & amp Hexadecimal (número de bytes recibidos (I))
Terminará si...
Entonces
Text3 = Text3 + strData
Si queda (strData, 2) = "00" y Len(strData) = 8, luego
Texto1(0). Texto = Left(strData, 8)
Datos de llamada borrados
Entonces, si no, Left(strData, 2) = "01" y Len(strData) = 10
Texto1(1). Texto = Left(strData, 10)
Datos de llamada borrados
Finalizará si...
Finalizar selección
Finalizar conector
p>SubDataClear público()
MSComm1. 'OutBufferCount = 0 'Borra el búfer de envío.
MSComm1. InBufferCount = 0
Text3 = " "
Conector final
Subform_Load() privado
Puerto MSComm1.com= 1' puerto com .
MSComm1. Configuración = "9600, n, 8, 1 "
MSComm1. 'InputMode = CominputModebinary 'Utiliza transmisión binaria.
MSComm1. InBufferCount = 0 'Borrar el búfer de recepción.
MSComm1. OutBufferCount = 0 'Borrar el buffer de transmisión.
MSComm1. Si el búfer de transmisión está completamente vacío, se genera un evento MSComm "umbral = 1".
MSComm1. "rthreshold=1" no genera eventos de MSComm.
MSComm1. PortOpen = True
Text3 = " 'Abre el puerto.
Conector final