Colección de citas famosas - Mensajes de felicitación - Cómo solucionar problemas de comunicación serie

Cómo solucionar problemas de comunicación serie

Si hay una determinada longitud del byte recibido, establecer Rthreshold igual a la longitud del byte recibido ayudará a mejorar la precisión de la recepción. Dado que las longitudes de los bytes devueltos por varias computadoras esclavas no son iguales, puede cambiar el valor de Rthreshold por adelantado de acuerdo con el comando de dirección para asegurarse de que los retornos recibidos cumplan con la longitud de bytes requerida.

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