Red de conocimientos sobre prescripción popular - Enciclopedia de Medicina Tradicional China - ¿Cómo escribir el código de protocolo de enlace usando vb mscomm?

¿Cómo escribir el código de protocolo de enlace usando vb mscomm?

Como control de comunicación en serie, MSComm ahorra a los programadores mucho tiempo al escribir comunicaciones en serie. Agregar controles de MSComm a aplicaciones basadas en diálogos es muy sencillo. Simplemente haga lo siguiente:

Abra "Proyecto -> Agregar al proyecto -> Componentes y controles -> Controles ActiveX registrados" y seleccione el control: Microsoft Communication Control, versión 6.0 Insertar en el proyecto actual. De esta manera, los documentos relacionados con CMSComm mscomm.cpp y mscomm.h se agregan al proyecto. Al programar, simplemente arrastre el control MSComm desde el cuadro de diálogo de control al cuadro de diálogo de su aplicación.

El control MSComm proporciona dos métodos para manejar la comunicación:

1. La comunicación basada en eventos es un método poderoso para manejar las actividades del puerto serie. Por ejemplo, cuando un carácter llega o cambia en la línea CD (Carrier Detect) o en la línea RTS (Solicitud de envío), en este caso puede usar el evento OnComm del control MSComm para capturar y manejar estos eventos de comunicación. OnComm también puede detectar y gestionar errores en las comunicaciones.

2. Puede verificar el valor de la propiedad CommEvent después de cada función importante del programa para detectar eventos y errores de comunicación.

Cada control MSComm utilizado corresponde a un puerto serie. Si necesita acceder a varios puertos serie en una aplicación, debe utilizar varios controles MSComm. Puede modificar la dirección de interrupción de la dirección del puerto serie en el Panel de control de Windows.

El control MSComm tiene muchas propiedades importantes,

Propiedad CommPort: establece y devuelve el número de puerto de comunicación.

Sintaxis: objeto. componente [valor] (el valor es un valor entero que indica el número de puerto).

Nota: en tiempo de diseño, este valor se puede establecer en cualquier número entre 1 y 16 (el valor predeterminado es 1). Sin embargo, si utiliza la propiedad PortOpen para abrir un puerto que no existe, el control MSComm generará el error 68 (Dispositivo no válido).

Propiedad RThreshold: el número de caracteres que se recibirán se establece y se devuelve antes de que el control MSComm establezca la propiedad CommEvent en comEReceive y genere OnComm.

Sintaxis: objeto. rthreshold [= valor] (Expresión de valor entero que indica el número de caracteres a recibir antes de generar el evento OnComm).

Nota: Después de recibir caracteres, si la propiedad Rthreshold se establece en 0 (el valor predeterminado), no se generará ningún evento OnComm. Por ejemplo, si Rthreshold se establece en 1, cada carácter recibido por el búfer de recepción hará que el control MSComm genere un evento OnComm.

Atributo CTSHolding: determine si los datos se pueden enviar consultando el estado de la fila Permitido enviar (CTS). Un "claro para enviar" es una señal enviada por el módem a la computadora en cuestión indicando que la transmisión es posible. Esta propiedad no tiene ningún efecto en tiempo de diseño y es de solo lectura en tiempo de ejecución.

Sintaxis: objeto. CTSHolding (booleano)

El valor de configuración de la propiedad CTSHoling del control Mscomm:

65438+0. La línea de entrega realmente clara es alta.

2.false borra que el voltaje de la línea de envío es demasiado bajo.

Descripción: si la línea de envío claro es baja (CTSHholding = False) y se agota el tiempo de espera, el control MSComm establece la propiedad CommEvent en ComeventCTSTO (tiempo de espera de envío claro) y genera un evento OnComm. .

La línea de borrar para enviar se utiliza para el protocolo de enlace de hardware RTS/CTS (solicitud de enviar/borrar para enviar). Si necesita determinar el estado de las filas de envío borradas, la propiedad CTSHolding proporciona un método de consulta manual.

Propiedad SHreshold: establece y devuelve el número mínimo de caracteres permitidos en el búfer de transmisión antes de que el control MSComm establezca la propiedad CommEvent en comEvSend y genere el evento OnComm.

Sintaxis: objeto. SHreshold [= valor] Valor de expresión plástica que representa el número mínimo de caracteres en el buffer de transmisión antes de que se genere un evento OnComm.

Descripción: Si la propiedad Sthreshold se establece en 0 (valor predeterminado), el evento de transferencia de datos no generará un evento OnComm. Si la propiedad Sthreshold se establece en 1, el control MSComm generará un evento OnComm cuando el búfer de transferencia esté completamente vacío. Si el número de caracteres en el búfer de transferencia es menor que el valor, la propiedad CommEvent se establece en comEvSend y se genera un evento OnComm. El evento comEvSend solo se activa una vez cuando el número de caracteres supera el umbral. Por ejemplo, si Sthreshold es igual a 5, comEvSend solo se producirá cuando el número de caracteres en la cola de salida se reduzca de 5 a 4. Si la cantidad de caracteres en la cola de salida nunca excede el umbral, el evento comEvSend nunca ocurrirá.

ComInputModeText 0 (predeterminado) recupera datos como texto a través de la propiedad Entrada.

ComInputModeBinary 1 Recupera datos en formato binario a través de propiedades de entrada.

Atributo CDHolding: determina si hay transmisión actual consultando el estado de la línea de detección de portadora (CD). La detección de portadora es una señal enviada desde el módem a la computadora asociada que indica que el módem está en línea. Esta propiedad no tiene ningún efecto en tiempo de diseño y es de solo lectura en tiempo de ejecución.

Objeto de sintaxis. CDHolding

Valor de configuración: el valor de configuración del atributo CDHolding es:

Descripción de la configuración

Altura real de la línea de detección del operador.

Error de línea de detección de operador baja.

Nota: Cuando la línea de detección de operador es alta (CDHolding = True) y se agota el tiempo de espera, el control MSComm establece la propiedad CommEvent en comEventCDTO (error de tiempo de espera de detección de operador) y genera un evento OnComm.

Capturar transmisiones perdidas es especialmente importante en aplicaciones host (como tableros de anuncios) porque la persona que llama puede colgar (abandonar la transmisión) en cualquier momento.

La detección de portadora también se denomina detección de señal de línea de recepción (RLSD). Tipo de datos booleanos

Propiedad DSRHholding: determina el estado de la línea del conjunto de datos listo (DSR). El módem envía la señal de configuración de datos lista a la computadora conectada para indicar que está lista para funcionar. Esta propiedad no tiene ningún efecto en tiempo de diseño y es de solo lectura en tiempo de ejecución.

Sintaxis: objeto. DSRHolding

La posición del objeto representa una expresión de objeto cuyo valor se "aplica" al objeto en la lista.

La propiedad DSRHolding devuelve el siguiente valor:

Descripción del valor

Altura de línea lista lista del conjunto de datos reales

Línea lista lista baja del conjunto de datos falso.

Descripción: cuando la línea lista del conjunto de datos es alta (DSRHolding = True) y se agota el tiempo de espera, el control MSComm establece la propiedad CommEvent en comEventDSRTO y genera un evento OnComm.

Este atributo es útil al escribir rutinas de protocolo de enlace listo para conjunto de datos/terminal de datos listo para máquinas de equipos terminales de datos (DTE).

Tipo de datos: booleano

Propiedad de configuración: establece y devuelve parámetros para velocidad en baudios, paridad, bits de datos y bits de parada.

Sintaxis: objeto. Configuración [=valor]

Descripción: Cuando el puerto está abierto, si el valor es ilegal, el control MSComm generará el error 380 (valor de propiedad ilegal).

El valor consta de cuatro valores de configuración, el formato es el siguiente:

BBBB, PhD, Master

BBBB es la velocidad en baudios, P es la paridad , D es el número de bits de datos y S es el número de bits de parada.

El valor predeterminado del valor es: "9600, N, 8, 1".

Propiedad InputLen: establece y devuelve el número de caracteres que la propiedad Input lee del búfer de recepción.

Sintaxis: objeto. Inputlen [= valor] La sintaxis del atributo de entrada incluye las siguientes partes: valor expresión entera, que indica el número de caracteres que el atributo de entrada lee del búfer de recepción.

Descripción: El valor predeterminado de la propiedad InputLen es 0. Cuando InputLen se establece en 0, el uso de Input hará que el control MSComm lea todo lo que hay en el búfer de recepción.

La propiedad CommEvent devuelve uno de los siguientes valores para un evento o error de comunicación. Estas constantes también se pueden encontrar en la biblioteca de objetos del control.

Descripción del valor constante

ComEventBreak 1001 recibió una señal de interrupción.

1002 Tiempo de espera para borrar para enviar Al enviar caracteres, la línea CTS (borrar para enviar) está baja en el evento 1 especificado por el sistema.

ComEventDSRTO 1003 Tiempo de espera del conjunto de datos listo Cuando se envía un carácter, en un evento especificado por el sistema, la línea DSR (conjunto de datos listo) está baja.

Error del marco de datos ComEventFrame 1004. El hardware detectó un error en el marco de datos.

ComEventOverrun 1006 desbordamiento de puerto. El carácter en el hardware no se lee, llega el siguiente carácter y se pierde.

Un total de 1007 veces de detección de operador Cuando se envía un carácter, la línea CD (detección de operador) está baja en el evento especificado por el sistema. Disco Láser

También conocido como RLSD (Detección de señal de línea de recepción).

ComEventRxOver 1008 Desbordamiento del buffer de recepción. No hay espacio en el buffer de recepción

ComEventRxParity 1009 Error de paridad. Error de paridad detectado por hardware 7

ComEventTxFull 1010 El búfer de transmisión está lleno. Mientras se ponen en cola los caracteres de envío, el búfer de envío está lleno.

comeventdcb 1011 Se produjo un error inesperado al recuperar el puerto dcb (Device Control Blick).

El evento de comunicación contiene las siguientes configuraciones:

Descripción del valor constante

ComEvSend 1 El número de caracteres en el búfer de envío es menor que el valor de Sthreshold.

ComEvReceive 2 recibió caracteres Rthreshold. Este evento continuará generándose hasta que los datos en el búfer de recepción se eliminen usando la propiedad Entrada.

Cambio de línea ComEvCTS 3 CTS (listo para enviar)

Cambio de línea ComEvDSR 4 DSR (conjunto de datos listo). Este evento ocurre cuando DSR cambia de 1 a 0.

Cambio de línea ComEvCD 5 CD (detección de operador) ComEvRing6 detectó una señal de timbre. Algunos urat(Receptor asíncrono universal-

-Emisor(Receptor asíncrono universal) no admiten este evento.

ComEvEOF 7 recibió un carácter EOF (carácter ASCII 26).

p>

Mensajes de error (control MSComm) La siguiente tabla enumera los mensajes de error que el control MSComm puede capturar:

Descripción del valor constante

ComInvalidPropertyValue 380 Valor de propiedad no válido .

El atributo ComSetNotSupported 383 es ​​de solo lectura

El atributo ComGetNotSupported 394 es de solo lectura

Esta presencia no es válida cuando el puerto ComPortOpen 8000 está abierto.

La configuración del tiempo de espera de 8001 debe ser mayor que el valor 0

ComPortInvalid 8002 Número de puerto no válido

El atributo 8003 solo es válido en tiempo de ejecución.

El atributo 8004 solo es válido en tiempo de ejecución.

Se ha abierto el puerto portaleydopen8005.

8006 El identificador del dispositivo no es válido o no es compatible.

8007 no admite la velocidad en baudios del dispositivo.

8008 El tamaño de byte especificado no es válido.

8009 Error de parámetro predeterminado

8010 Hardware no disponible (bloqueado por otros dispositivos)

8011 La función no puede asignar la cola.

ComNoOpen 8012 El dispositivo no está abierto.

8013 El dispositivo está abierto.

8014 No se puede utilizar la notificación de comunicación.

ComsetCommStateFailed 8015 No se puede establecer el estado de comunicación.

8016 No se puede configurar la máscara de evento de comunicación.

Comprtnotopen8018 Esto existe sólo cuando el puerto está abierto.

8019 Dispositivo ocupado

ComReadError 8020 Error de lectura del dispositivo de comunicaciones

ComDCBError 8021 Se produjo un error interno al recuperar el bloque de control del dispositivo del puerto.

Después de aclarar los atributos básicos anteriores, puede comenzar a escribir el programa de permisos de comunicación. Cree un nuevo archivo de proyecto en VB5.0/6.0. Agregue el grupo Microsoft Comm Control 5.0

, agregue un botón de comando al Form1 simplificado y asígnele el nombre CmdTest, asigne al control MSComm el nombre MSComm1 y agregue el siguiente código de programa.

Private Sub cmdTestClick()'Abre el puerto serie.

MSComml. CommPort = 2 'Establecer Com2.

Si MSComml. Entonces PortOpen = False

MSComm1. Configuraciones = "9600, n, 8, 1"' Velocidad de 9600 baudios, sin paridad, 8 bits de datos, 1 bit de parada.

MSComm1. PortOpen = True 'Abre el puerto serie.

Terminará si...

MSComm1. 'OutBufferCount = 0 'Borra el búfer de envío.

MSComm1. InBufferCount = 0 'Borrar el búfer de recepción.

Al enviar datos de caracteres, asegúrese de finalizar con un retorno de carro (vbcr).

MSComm1. Output= "¡Este es un buen libro!"& ampvbCr

Marca un número de teléfono o envía un comando AT.

MSComm1. salida = "ATDT 05778191898; vbCr

Tenga cuidado al enviar datos de matriz de caracteres. ByteArray debe definirse de antemano.

Dim ByteArray como byte()

Definir una matriz dinámica

ReDim ByteArray(1)

Redefinir el tamaño de la matriz

ByteArray ( 0 ) =0

ByteArray ( 1 ) . = 1

MSComm1. Salida = ByteArray

Conector final

Sub privado MScommEvent()

Seleccione MSCommEvent

Aceptación de caso

Atenuar buffer como variable

MSComm1 = 0

Recibir datos binarios

MSComm1 = ComInputModeBinary

p>

Buffer=MSComm1.Input

Recibir datos de caracteres

MSComm1.InputMode=comInputModeText

Buffer = MSComml.

Entrada

Otras situaciones

Finalizar selección

Finalizar conector

(Procedimiento 1)

2. Problemas de comunicación y soluciones bajo 95/98

1. Los datos recibidos son menores que los datos enviados.

Si se transmiten más datos binarios a través del control MSComm a la vez, es probable que los datos recibidos sean insuficientes. Por ejemplo, cuando la velocidad de transmisión se establece en 24000 bps, se pueden transmitir 2048 caracteres de datos a la vez, en la mayoría de los casos. Sólo se pueden recibir unos 1200 caracteres a la vez. Esta dirección se puede encontrar en la nueva versión de MSComm32. OCX

Un error). Esto afecta la transferencia de datos binarios. Tenga en cuenta que esto no es una característica.

La función API de Windows de 32 bits (en lo sucesivo, API) utiliza varias variables de tiempo limitado representadas por la estructura COMMTIMEOUTS, y WriteTotalTimeOutConstant es una de ellas.

Por un lado, Windows está configurado internamente en 5000 (es decir, 5 segundos). Esta constante determina el tiempo que lleva enviar datos en el búfer antes de que el controlador de comunicaciones deje de transmitir.

5 segundos significa que sólo se pueden enviar 600 caracteres a una velocidad de comunicación de 1200 bps, y sólo se pueden enviar unos 1200 caracteres a 2400 bps. De hecho, en un solo lugar

es muy posible enviar más datos en el búfer a la vez. Incluso en el caso de comunicaciones serie de alta velocidad, este error puede causar problemas incluso si el sistema utiliza control de flujo.

No se considera sistema, flujo de software (Xon/XofI) ni flujo de hardware (CTS/RTS). Si los datos están en el búfer de envío, el control de flujo detiene la transmisión si el tiempo de parada excede los 5

segundos. Entonces los datos se perderán. En algunos casos, 5 segundos pueden resultar breves. Pero no se preocupe, el control MSComm en VB 5.0/6.0 tiene una nueva característica importante.

Este atributo se llama CommID. CommID se refiere al identificador o indicador del puerto serie llamado por la API cuando se abre el puerto serie, lo que significa que puede usar la función de interfaz API para modificar esto.

Sin cambios. Cada vez que cierre el puerto serie, Windows restaurará automáticamente a 5000. Por lo tanto, cada vez que abra el puerto serie, deberá restablecer la siguiente declaración API. Vea el siguiente programa para el código.

Tipo COMMTIMEOUTS

ReadIntervalTimeout es Long

ReadTotalTimeoutMultiplier es de tipo Long

ReadTotalTimeoutConstant tiene la misma longitud

WriteTotalTimeoutMultiplier es tipo largo

WriteTotalTimeoutConstant As Long

Tipo final

Declarar función SetCommTimeouts Lib "Kernel32 "

(BYVal hFile As Long, lpComm time out Como tiempo de espera de comunicación) Mientras

Declare la función GetCommTimeouts Lib "Kernel32 "

(ByVal hFile es Long, lpCommTimeouts es CommTimeouts) como Long

Se mostrará el tiempo de espera Dim Ret As Long

Si Comm1. Entonces PortOpen = False

Comm1. PortOpen = True

Terminará si...

ret = GetCommTimeouts(comm 1. CommID, timeout)

Establece algunos tiempos de espera predeterminados

Pausa. ReadIntervalTimeout = 1

Pausa.

ReadTotalTimeoutMultiplier = 1

Pausa. ReadTotalTimeoutConstant = 1

Pausa. WriteTotalTimeoutMultiplier = 1

Pausa. WriteTotalTimeoutConstant=

(Comm1.OutBufferSize\Val(Comm1.Set))*10001000

ret = SetCommTimeouts(comm 1.CommID, tiempo de espera)

(Programa 2)

2. ¿Cómo enviar datos de caracteres mayores a 128?

En el programa de comunicación, cuando los datos se envían uno por uno en modo de un solo carácter, el rango de cada dato es 0-255 (es decir, 00-FF en hexadecimal). En la versión de un solo carácter de Win95 en inglés o

en la versión DOS del programa BASIC, solo necesita convertir los datos correspondientes en los caracteres correspondientes y enviarlos al puerto de comunicación. Pero no funciona en Win95/98 chino, suponiendo que sea chino

Ejecute el siguiente programa en WIN 95/98:

Dim i

For i =0 a 255

MSComm1. Salida = chr(i)

Siguiente

espero obtener los datos esperados entre 0 y 255 en el extremo receptor, pero el resultado es que los primeros 129 datos se reciben correctamente y es 0 -128, los siguientes 127 datos son 126 ceros y un 255.

La razón de este resultado es que Windows chino utiliza un sistema de juego de caracteres de doble byte (DBCS). Los sistemas DBCS utilizan números entre 0 y 128 para representar caracteres ASCII, que es mayor que .

El número 128 sólo se utiliza como carácter inicial, lo que sólo indica que es un carácter no latino y no representa el significado real. El programa anterior se utiliza al llamar a la función CHR().

Juego de caracteres DBCS, lo que genera este error. Entonces, ¿cómo enviar los datos de 128 personas? La respuesta es usar una matriz de caracteres y cambiar el programa anterior para:

Mostrar cc(255) en bytes

Para i = 0 a 255

cc (i) = i

Siguiente i

MSComm1. Salida = cc

Hacer

Múltiples actividades

Circuito hasta MSComm1. OutBufferCount = 0

Proceso de recepción MSComm 1_on com()

Seleccione el caso MSComm1. CommEvent

Aceptación de caso

Variante Dim buffer, b1, I

MSComm1. InputMode=comInputModeBinery

MSComm1. InputLen = 0

Búfer = MSComm1. Entrada

Para i=LBound(buffer) a UBound(buffer)

Depurar. print buffer(1);

Siguiente yo

caso. . . . .

3. Cómo enviar 0 caracteres (00H, vacío)

Es un poco problemático enviar 0 caracteres usando el control del puerto serie en Visuai C++, pero en VB5.0/6.0. , solo preste atención a los dos puntos siguientes:

(1) Establezca la propiedad NullDiscard = False del control MSComm;.

(2) Utilice recepción binaria, es decir, MSComm1. InputMode = CominputModebinary puede resolver el problema;

4. Cómo enviar cadenas chinas (caracteres DBcS)

Varios libros de referencia en VB5.0/6.0 indican que el control de comunicación MSComm no puede enviar O reciba datos binarios del sistema de juego de caracteres de doble byte (DBCS).

Esto es una gran lástima para los países que utilizan el juego de caracteres DBCS. Pero en la práctica descubrí que los caracteres chinos también se pueden enviar utilizando el control MSComm. Hay dos métodos específicos:

(1) Envío directo

El envío directo equivale a caracteres chinos con caracteres ingleses. Por ejemplo: mscomm1. Input = "¡Esta es una línea de datos chinos!", pero los datos chinos enviados a través de este método no pueden ser demasiado largos

El tamaño del búfer de envío y del búfer de recepción debe establecerse en más del doble. tamaño de los caracteres chinos. Enviar La versión del sistema operativo debe ser coherente con la del sistema receptor; de lo contrario, se producirán errores como el desbordamiento del búfer de recepción o envío

. Este método se utiliza a menudo en situaciones donde los requisitos generales no son demasiado altos.

(2) Transmisión indirecta

En el extremo emisor, convierta caracteres chinos o caracteres en una matriz de datos de códigos internos o códigos de área y luego envíe los datos convertidos al puerto serie. . Después de recibir los datos en el extremo receptor, según.

Los datos obtenidos en orden inverso se convierten a los caracteres o caracteres chinos correspondientes. Durante el proceso de conversión, se requieren operaciones de bits. Por ejemplo, después de obtener el código interno de caracteres chinos, se separan los bytes de orden superior y los bytes de orden inferior.

VB5.0/6.0 no proporciona esta función. A continuación se muestra la función para encontrar el byte alto y el byte bajo de un número entero.

Función pública HiByte (a es un número entero)

Dim b

b= a y & ampHFF00

b = b / 256

Si b & lt0, entonces b = b + 256

Byte alto = b

Función final

Función pública LowByte(a es un número entero)

Dim b

b = a y & ampHFF

Byte bajo = b

Fin de función

5. ¿Cómo utilizar una sola computadora para pruebas de comunicación?

Por lo general, después de escribir el programa de comunicación, se necesitan dos PC o un PC y un microcontrolador. Después de conectar el puerto de comunicación, puede probarlo. Sin embargo, en muchos casos, debido a condiciones limitadas, solo hay una PC.

El proyecto de prueba es muy sencillo, ¿se puede probar? Por supuesto, y el método es sencillo. Para un puerto serie de nueve pines, busque un mouse con puerto serie abandonado, retire el cable del mouse y conéctelo.

Conecte 2 o 3 pines en el punto de acoplamiento; para un puerto serie de 25 pines, busque un clip (preferiblemente con una funda de plástico) y tire de él en línea recta. Después de usar el plástico en ambos extremos, dobla un círculo en ambos extremos.

El pin en el medio del anillo se puede conectar directamente a los enchufes de 2 y 3 pines del puerto serie. Si Shanxin no es lo suficientemente seguro, puede presionar 5 agujas en el suelo.

'''''''''''''''''''''''''''''''' ''''''' ''''''''''''''''''''''''''''''' '''''''''''''' '''''''

Acerca del uso de mscomm, ¿mejorar el artículo [mgwmj]?

El control de MSCOMM es algo bueno. Si puedes entenderlo completamente, te será de gran utilidad.

Leí el tema sobre MSCOMM por la tarde y sentí que era necesario expresar mis pensamientos internos. Por lo general, solo trabajo con hardware y nunca aprendí software de manera sistemática. Solo lo aprendí en mi tiempo libre.

Aprende a usarlo, lo he dominado un poquito y lo jugaré aquí. No sé si hay algún error, pero creo que hice un buen trabajo.

Este es un receptor controlado por eventos en serie universal VB. Reciba un paquete de datos a la vez. El paquete de datos puede ser de cualquier byte, lo que garantiza que no se pierdan datos.

Private Sub MSComm_OnComm()

Mostrar S() como bytes

Atenuar SS(1024) como bytes

Estático N veces más

Prueba estática como variable

Si (MSComm.CommEvent = comEvReceive) entonces

S = MSComm. 'Entrada' Siempre que haya datos, tráigalos, incluso si solo hay uno.

Si (Timer-T & gt; 0.01), entonces el "intervalo" es mayor a 10 milisegundos y se considera un paquete nuevo.

text 1 = " ' el texto 1 se utiliza para recopilar y mostrar la recepción (formato hexadecimal).

N = 0

Terminará si...

T = temporizador

Para i = 0 a UBound(S)', un paquete puede generar varios eventos oncomm

Text1 .Text = Text1.text&right(. "0"&hex(S(I))&"H",3)+"

SS(N+i)= Los paquetes recibidos por S(i)' se almacenan en SS().

N = N+sin consolidar

Siguiente yo

Terminará si...

Finalizar conector