MSComm (Control)

El control MSComm proporciona comunicaciones serie para que su aplicación pueda transmitir y recibir datos a través de un puerto serie.

Sintaxis

MSComm

Comentarios

El control MSComm proporciona dos formas diferentes de tratamiento de las comunicaciones:

  • Las comunicaciones controladas por eventos son un método muy poderoso para el tratamiento de interacciones con el puerto serie. En muchas situaciones deseará que se le notifique cuándo tiene lugar un evento; por ejemplo, cuándo llega un carácter o cuándo se produce un cambio en las líneas de Detección de portadora (CD) o Petición de envío (RTS). En tales casos se utiliza el evento OnComm del control MSComm para interceptar y tratar estos eventos de comunicaciones. El evento OnComm también detecta y trata los errores en las comunicaciones. En la propiedad CommEvent puede ver una lista completa de todos los eventos y errores posibles en las comunicaciones.

  • También puede sondear los eventos y errores si comprueba el valor de la propiedad CommEvent después de cada función crítica de su programa. Esta alternativa es preferible si la aplicación es pequeña y autónoma. Por ejemplo, si está escribiendo un marcador telefónico sencillo, no tiene sentido generar un evento después de recibir cada carácter, ya que los únicos caracteres que piensa recibir son las respuestas de aceptación que envía el módem.

Cada uno de los controles MSComm que use corresponde a un puerto serie. Si necesita tener acceso a más de un puerto serie en su aplicación, debe usar más de un control MSComm. La dirección del puerto y la dirección de la interrupción pueden cambiarse desde el Panel de control de Windows.

Aunque el control MSComm tiene muchas propiedades importantes, hay algunas con las que debe familiarizarse primero.

Propiedades | Descripción
CommPort | Establece y devuelve el número del puerto de comunicaciones.
Settings | Establece y devuelve la velocidad en baudios, paridad, bits de datos y bits de parada en forma de cadena.
PortOpen | Establece y devuelve el estado de un puerto de comunicaciones. También abre y cierra un puerto.
Input | Devuelve y quita caracteres del búfer de recepción.
Output | Escribe una cadena de caracteres en el búfer de transmisión.


No se encuentra el tema

No se halló el tema correspondiente. A continuación enumeramos algunas posibles razones y sus soluciones:

  • El archivo (.chm) que contiene el tema de destino no se encuentra en la ubicación esperada.

    Solución: vuelva a ejecutar la instalación de la Biblioteca MSDN.

  • El archivo (.chm) que contiene el tema actual o el de destino no está actualizado y el vínculo ya no es válido.

    Solución: instale la última versión de la Biblioteca MSDN.

  • El CD de la Biblioteca MSDN no está en la unidad de CD-ROM.

    Solución: inserte el CD en la unidad.


Mensajes de error (Control MS Comm)

La siguiente tabla muestra los errores interceptables del control MSComm.

Constante | Valor | Descripción del mensaje
comInvalidPropertyValue | 380 | Valor de la propiedad no válido
comSetNotSupported | 383 | Propiedad de sólo lectura
comGetNotSupported | 394 | Propiedad de sólo lectura
comPortOpen | 8000 | Operación no válida mientras esté abierto el puerto
 | 8001 | El valor de tiempo de espera debe ser mayor que cero
comPortInvalid | 8002 | Número de puerto no válido
 | 8003 | Propiedad disponible sólo en tiempo de ejecución
 | 8004 | Propiedad de sólo lectura en tiempo de ejecución
comPortAlreadyOpen | 8005 | El puerto ya está abierto
 | 8006 | El identificador del dispositivo no es válido o no está permitido
 | 8007 | La velocidad en baudios del dispositivo no está permitida
 | 8008 | El tamaño en bytes especificado no es válido
 | 8009 | Los parámetros predeterminados son incorrectos
 | 8010 | El hardware no está disponible (está bloqueado por otro dispositivo)
 | 8011 | La función no puede asignar las colas
comNoOpen | 8012 | El dispositivo no está abierto
 | 8013 | El dispositivo ya está abierto
 | 8014 | No se puede activar la notificación de comunicación
comSetCommStateFailed | 8015 | No se puede establecer el estado de comunicación
 | 8016 | No se puede establecer la máscara de eventos de comunicación
comPortNotOpen | 8018 | Operación válida sólo cuando el puerto está abierto
 | 8019 | Dispositivo ocupado
comReadError | 8020 | Error al leer el dispositivo de comunicación
comDCBError | 8021 | Error interno al recuperar el bloque de control de dispositivos para el puerto


OnComm (Evento)

El evento OnComm se genera siempre que cambia el valor de la propiedad CommEvent e indica que se ha producido un evento o un error en la comunicación.

Sintaxis

Private Sub objeto_OnComm ()

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Se aplica a.

Comentarios

La propiedad CommEvent contiene el código numérico del error o el evento real que ha generado el evento OnComm. Tenga en cuenta que si asigna a las propiedades RThreshold o SThreshold el valor 0, se desactiva la interceptación de los eventos comEvReceive y comEvSend, respectivamente.


Constantes del control MSComm

Constantes de protocolo de conexión

Constante | Valor | Descripción
comNone | 0 | Sin protocolo.
comXonXoff | 1 | Protocolo XON/XOFF.
comRTS | 2 | Protocolo RTS/CTS (Petición de envío/Preparado para enviar).
comRTSXOnXOff | 3 | Ambos protocolos (RTS y XON/XOFF).

Constantes de OnComm

Constante | Valor | Descripción
comEvSend | 1 | Evento Send.
comEvReceive | 2 | Evento Receive.
comEvCTS | 3 | Cambio en la línea Preparado para enviar (CTS).
comEvDSR | 4 | Cambio en la línea Equipo de datos preparado (DSR).
comEvCD | 5 | Cambio en la línea Detección de portadora (CD).
comEvRing | 6 | Detección de llamada.
comEvEOF | 7 | Fin de archivo.

Constantes de errores

Constante | Valor | Descripción
comEventBreak | 1001 | Recibida señal de interrupción
comEventFrame | 1004 | Error de trama
comEventOverrun | 1006 | Pérdida de información en puerto
comEventRxOver | 1008 | Desbordamiento del búfer de recepción
comEventRxParity | 1009 | Error de paridad
comEventTxFull | 1010 | Búfer de transmisión lleno
comEventDCB | 1011 | Error inesperado al recuperar Bloque de control de dispositivos (DCB) para el puerto

Constantes de InputMode

Constante | Valor | Descripción
comInputModeText | 0 | (Predeterminado) Los datos se recuperan como texto mediante la propiedad Input.
comInputModeBinary | 1 | Los datos se recuperan como datos binarios mediante la propiedad Input.


Ejemplo de la propiedad Break

El siguiente ejemplo muestra cómo enviar una señal de interrupción durante una décima de segundo:

' Activar la condición Break.
MSComm1.Break = True
' Establecer una duración de 1/10 de segundo.
Duration! = Timer + .1
' Esperar a que termine el intervalo.
Do Until Timer > Duration!
   Dummy = DoEvents()
Loop
' Desactivar la condición Break.
MSComm1.Break = False


Ejemplo del control MSComm

Este sencillo ejemplo muestra cómo efectuar las comunicaciones básicas del puerto serie mediante un módem:

Private Sub Form_Load ()
   ' Búfer para almacenar la cadena de entrada
   Dim Instring As String
   ' Usar COM1.
   MSComm1.CommPort = 1
   ' 9600 baudios, sin paridad, 8 bits de datos y 1
    ' bit de parada.
   MSComm1.Settings = "9600,N,8,1"
   ' Indicar al control que lea todo el búfer al usar
    ' Input.
   MSComm1.InputLen = 0
   ' Abrir el puerto.
   MSComm1.PortOpen = True
   ' Enviar al módem el comando de atención.
   MSComm1.Output = "ATV1Q0" & Chr$(13) ' Asegúrese de que
   ' el módem responde con "OK".
   ' Esperar a que vuelvan los datos al puerto serie.
   Do
      DoEvents
   Buffer$ = Buffer$ & MSComm1.Input
   Loop Until InStr(Buffer$, "OK" & vbCRLF)
   ' Leer los datos de respuesta de aceptación en el
   ' puerto serie.
   ' Cerrar el puerto serie.
   MSComm1.PortOpen = False
End Sub

Nota El control MSComm puede usar el método de sondeo o el controlado por eventos para recuperar datos del puerto. Este sencillo ejemplo usa el método de sondeo. Para ver un ejemplo del método controlado por eventos, vea en la Ayuda el evento OnComm.


Ejemplo de la propiedad Input

Este ejemplo muestra cómo recuperar datos del búfer de recepción:

Private Sub Command1_Click()
Dim InString as String
' Recuperar todos los datos disponibles.
MSComm1.InputLen = 0

' Comprobar los datos.
If MSComm1.InBufferCount Then
   ' Leer los datos.
   InString = MSComm1.Input
End If
End Sub


Ejemplo de la propiedad InputLen

Este ejemplo muestra cómo leer 10 caracteres de datos:

Private Command1_Click()
Dim CommData as String
' Especificar un bloque de datos de 10 caracteres.
MSComm1.InputLen = 10
' Leer los datos.
CommData = MSComm1.Input
End Sub


Ejemplo del evento OnComm

El siguiente ejemplo muestra cómo controlar los eventos y errores en la comunicación. Después de cada instrucción Case relacionada puede insertar código para controlar un error o evento en particular.

Private Sub MSComm_OnComm ()
   Select Case MSComm1.CommEvent
   ' Controlar cada evento o error escribiendo
   ' código en cada instrucción Case

   ' Errores
      Case comBreak   ' Se ha recibido una interrupción.
      Case comEventFrame   ' Error de trama
      Case comEventOverrun   ' Datos perdidos.
      Case comEventRxOver   ' Desbordamiento del búfer
                           ' de recepción.
      Case comEventRxParity   ' Error de paridad.
      Case comEventTxFull   ' Búfer de transmisión lleno.
      Case comEventDCB   ' Error inesperado al recuperar DCB.

   ' Eventos
      Case comEvCD   ' Cambio en la línea CD.
      Case comEvCTS   ' Cambio en la línea CTS.
      Case comEvDSR   ' Cambio en la línea DSR.
      Case comEvRing   ' Cambio en el indicador de
                     ' llamadas.
      Case comEvReceive   ' Recibido nº SThreshold de
                        ' caracteres.
      Case comEvSend   ' Hay un SThreshold
                     ' caracteres en el búfer
                     ' de transmisión.
      Case comEvEof   ' Se ha encontrado un carácter
                     ' EOF en la entrada.
   End Select
End Sub


Ejemplo de la propiedad Output

El siguiente ejemplo muestra cómo enviar al puerto serie cada carácter que escribe el usuario:

Private Sub Form_KeyPress (KeyAscii As Integer)
   Dim Buffer as Variant

   ' Establecer y abrir el puerto
   MSComm1.CommPort = 1
   MSComm1.PortOpen = True

   Buffer = Chr$(KeyAscii)
   MSComm1.Output = Buffer
End Sub


Ejemplo de la propiedad PortOpen

El siguiente ejemplo abre el puerto de comunicaciones número 1 a 9600 baudios sin comprobación de paridad, 8 bits de datos y 1 bit de parada:

MSComm1.Settings = "9600,n,8,1"
MSComm1.CommPort = 1
MSComm1.PortOpen = True


Ejemplo de la propiedad Settings

El siguiente ejemplo establece que el puerto del control se comunica a 9600 baudios sin comprobación de paridad, 8 bits de datos y 1 bit de parada:

MSComm1.Settings = "9600,N,8,1"


Break (Propiedad)

Activa o desactiva el estado de señal de interrupción. Esta propiedad no está disponible en tiempo de diseño.

Sintaxis

objeto.Break [ = valor]

La sintaxis de la propiedad Break consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión booleana que especifica si está activa la señal de interrupción, como se describe en Valores.

Valores

Los valores admitidos para valor son:

Valor | Descripción
True | Activa el estado de señal de interrupción.
False | Desactiva el estado de señal de interrupción.

Comentarios

Cuando es True, la propiedad Break envía una señal de interrupción. Esta señal suspende la transmisión de caracteres y pone la línea de transmisión en estado de pausa hasta que se asigna el valor False a la propiedad Break.

Generalmente el estado de interrupción se establece durante un breve intervalo de tiempo y sólo si el dispositivo con el que se establece la comunicación requiere que haya una señal de interrupción.

Tipo de datos

Boolean


CDHolding (Propiedad)

Determina si está presente la portadora; para ello, consulta el estado de la línea CD (Detección de portadora). CD es una señal que envía el módem al equipo para indicar que está conectado. Esta propiedad no está disponible en tiempo de diseño y es de sólo lectura en tiempo de ejecución.

Sintaxis

objeto.CDHolding

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Se aplica a.

Valores

Los valores admitidos para la propiedad CDHolding son:

Valores | Descripción
True | La línea de Detección de portadora está alta
False | La línea de Detección de portadora está baja

Comentarios

Nota Es especialmente importante interceptar las pérdidas de la portadora en una aplicación anfitriona, como un boletín electrónico, porque quien llama puede colgar (eliminar la portadora) en cualquier momento.

La señal Detección de portadora (CD) se conoce también como Detección de señal de línea de recepción (RLSD).

Tipo de datos

Boolean


CommID (Propiedad)

Devuelve un controlador que identifica el dispositivo de comunicación. Esta propiedad no está disponible en tiempo de diseño y es de sólo lectura en tiempo de ejecución.

Sintaxis

objeto.CommID

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Se aplica a.

Comentarios

Es el mismo valor que devuelve la función CreateFile de la API de Windows. Utilice este valor cuando llame a cualquier rutina de comunicación de la API de Windows.

Tipo de datos

Long


CommPort (Propiedad)

Establece y devuelve el número del puerto de comunicaciones.

Sintaxis

objeto.CommPort[ = valor ]

La sintaxis de la propiedad CommPort consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Un valor entero que especifica el número de puerto.

Comentarios

Puede especificar para valor cualquier número entre 1 y 16 (el valor predeterminado es 1) en tiempo de diseño. Sin embargo, el control MSComm genera el error 68 (El dispositivo no está disponible) si no existe el puerto cuando intenta abrirlo con la propiedad PortOpen.

Advertencia Debe establecer la propiedad CommPort antes de abrir el puerto.

Tipo de datos

Integer


CommEvent (Propiedad)

Devuelve el evento o el error de comunicación más reciente. Esta propiedad no está disponible en tiempo de diseño y es de sólo lectura en tiempo de ejecución.

Sintaxis

objeto.CommEvent

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Se aplica a.

Comentarios

Aunque el evento OnComm se genera siempre que se produce un error o un evento de comunicaciones, la propiedad CommEvent almacena el código numérico de dicho error o evento. Para determinar el error o el evento real que ha ocasionado el evento OnComm, debe consultar la propiedad CommEvent.

La propiedad CommEvent devuelve uno de los siguientes valores para eventos o errores de comunicación. Estas constantes también se encuentran en la biblioteca de objetos para este mismo control.

Los errores de comunicación incluyen los siguientes valores:

Constante | Valor | Descripción
comEventBreak | 1001 | Se ha recibido una señal de interrupción.
comEventFrame | 1004 | Error de trama. El hardware ha detectado un error de trama.
comEventOverrun | 1006 | Pérdida de información en puerto. El hardware no ha terminado de leer un carácter antes de llegar el siguiente y lo ha perdido.
comEventRxOver | 1008 | Desbordamiento del búfer de recepción. No hay espacio para más datos en el búfer de recepción.
comEventRxParity | 1009 | Error de paridad. El hardware ha detectado un error de paridad.
comEventTxFull | 1010 | Búfer de transmisión lleno. El búfer de transmisión estaba lleno cuando se ha intentado agregar un carácter a la cola de transmisión.
comEventDCB | 1011 | Error inesperado al recuperar el Bloque de control de dispositivos (DCB) para el puerto.

Los eventos de comunicación incluyen los valores siguientes:

Constante | Valor | Descripción
comEvSend | 1 | Hay menos caracteres en el búfer de transmisión de los que indica el número SThreshold.
comEvReceive | 2 | Número de caracteres RThreshold recibido. Este evento se genera continuamente hasta que se usa la propiedad Input para quitar datos del búfer de recepción.
comEvCTS | 3 | Cambio en la línea Preparado para enviar.
comEvDSR | 4 | Cambio en la línea Equipo de datos preparado. Este evento sólo se desencadena cuando la línea DSR cambia de 1 a 0.
comEvCD | 5 | Cambio en la línea Detección de portadora.
comEvRing | 6 | Detectada llamada. Algunos UART (transmisores-receptores asíncronos universales) no aceptan este evento.
comEvEOF | 7 | Carácter de fin de archivo (carácter ASCII 26) recibido.

Tipo de datos

Integer


CTSHolding (Propiedad)

Determina si puede enviar datos; para ello, consulta el estado de la línea Preparado para enviar (CTS). Normalmente, la señal CTS se envía desde un módem al equipo conectado para indicar que puede continuar la transmisión. Esta propiedad no está disponible en tiempo de diseño y es de sólo lectura en tiempo de ejecución.

Sintaxis

objeto.CTSHolding

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Se aplica a.

La siguiente tabla muestra los valores de la propiedad CTSHolding para el control MSComm.

Valor | Descripción
True | Línea Preparado para enviar alta.
False | Línea Preparado para enviar baja.

Comentarios

La línea CTS se usa en el protocolo de hardware RTS/CTS (Petición de envío/Preparado para enviar). La propiedad CTSHolding le ofrece un medio de sondear manualmente la línea CTS cuando necesite determinar su estado.

Para obtener más información acerca de los protocolos de conexión, vea la propiedad Handshaking.

Tipo de datos

Boolean


DSRHolding (Propiedad)

Determina el estado de la línea Equipo de datos preparado (DSR). Normalmente, un módem envía la señal DSR al equipo conectado para indicar que está preparado. Esta propiedad no está disponible en tiempo de diseño y es de sólo lectura en tiempo de ejecución.

Sintaxis

objeto.DSRHolding

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Se aplica a.

La propiedad DSRHolding devuelve los siguientes valores:

Valor | Descripción
True | Línea Equipo de datos preparado alta.
False | Línea Equipo de datos preparado baja.

Comentarios

Esta propiedad es útil para escribir una rutina del protocolo DSR/DTR (Equipo de datos preparado/Terminal de datos preparado) para una máquina Equipo terminal de datos (DTE).

Tipo de datos

Boolean


DTREnable (Propiedad)

Determina si hay que activar la línea Terminal de datos preparado (DTR) durante las comunicaciones. Normalmente, DTR es la señal que envía un equipo a su módem para indicar que está preparado para aceptar la transmisión que va a recibir.

Sintaxis

objeto.DTREnable[ = valor ]

La sintaxis de la propiedad DTREnable consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión booleana que especifica si se activará la línea Terminal de datos preparado (DTR), como se describe en Valores.

Valores

Los valores admitidos para valor son:

Valor | Descripción
True | Activa la línea Terminal de datos preparado.
False | (Predeterminado) Desactiva la línea Terminal de datos preparado.

Comentarios

Si DTREnable es True, la línea DTR está alta (activada) cuando se abre el puerto y baja (desactivada) cuando se cierra el puerto. Cuando DTREnable es False, la línea DTR está siempre baja.

Nota En la mayoría de los casos, al poner la línea DTR baja se cuelga el teléfono.

Tipo de datos

Boolean


EOFEnable (Propiedad)

La propiedad EOFEnable determina si el control MSComm debe buscar caracteres de Fin de archivo (EOF) durante la entrada. Si se encuentra un carácter EOF, se detendrá la entrada y se producirá el evento OnComm con la propiedad CommEvent asignada al valor comEvEOF.

Sintaxis

objeto.EOFEnable [ = valor ]

La sintaxis de la propiedad EOFEnable consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión booleana que determina si se desencadenará el evento OnComm cuando se encuentre un carácter EOF, como se describe en Valores.

Valores

Los valores admitidos para valor son:

Valor | Descripción
True | Se desencadena el evento OnComm cuando se encuentra un carácter EOF.
False | (Predeterminado) No se desencadena el evento OnComm cuando se encuentra un carácter EOF.

Comentarios

Cuando la propiedad EOFEnable tiene el valor False, el control no busca en la entrada caracteres EOF.


Handshaking (Propiedad)

Establece y devuelve el protocolo de conexión del hardware.

Sintaxis

objeto.Handshaking [ = valor ]

La propiedad Handshaking consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión de tipo Integer que especifica el protocolo de conexión de hardware, como se describe en Valores.

Valores

Los valores admitidos para valor son:

Opción | Valor | Descripción
comNone | 0 | (Predeterminado) Sin protocolo.
comXOnXOff | 1 | Protocolo XON/XOFF.
comRTS | 2 | Protocolo RTS/CTS (Petición de envío/Preparado para enviar).
comRTSXOnXOff | 3 | Ambos protocolos (RTS y XON/XOFF).

Comentarios

El protocolo de conexión se refiere al protocolo de comunicaciones internas por el que se transfieren datos del puerto de hardware al búfer de recepción. Cuando llega un carácter de datos al puerto serie, el dispositivo de comunicaciones tiene que llevarlo al búfer de recepción para que el programa pueda leerlo. Si no hay ningún búfer de recepción y el programa espera leer todos los caracteres directamente del hardware, es muy probable que se pierdan datos porque los caracteres llegan muy rápido.

Un protocolo de conexión asegura que los datos no se pierdan a causa de una sobrecarga del búfer, en los casos en que los datos llegan tan rápido al puerto que el dispositivo de comunicaciones no tiene tiempo de llevar los datos al búfer de recepción.

Tipo de datos

Integer


InBufferCount (Propiedad)

Devuelve el número de caracteres que hay en espera en el búfer de recepción. Esta propiedad no está disponible en tiempo de diseño.

Sintaxis

objeto.InBufferCount[ = valor ]

La sintaxis de la propiedad InBufferCount consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión de tipo Integer que especifica el número de caracteres que hay en espera en el búfer de recepción.

Comentarios

InBufferCount se refiere al número de caracteres que ha recibido el módem y que están en espera en el búfer de recepción. Puede borrar el búfer de recepción si asigna el valor 0 a la propiedad InBufferCount.

Nota No confunda esta propiedad con InBufferSize, que refleja el tamaño total del búfer de recepción.

Tipo de datos

Integer


InBufferSize (Propiedad)

Establece y devuelve el tamaño del búfer de recepción, en bytes.

Sintaxis

objeto.InBufferSize[ = valor ]

La sintaxis de la propiedad InBufferSize consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión de tipo Integer que especifica el tamaño del búfer de recepción, en bytes.

Comentarios

InBufferSize se refiere al tamaño total del búfer de recepción. El tamaño predeterminado es 1024 bytes. No confunda esta propiedad con InBufferCount, la cual refleja el número de caracteres que hay en espera en ese momento en el búfer de recepción.

Nota Observe que cuanto mayor sea el búfer de recepción, menos memoria quedará disponible para su aplicación. Sin embargo, si el búfer es demasiado pequeño, corre el riesgo de perder datos por desbordamiento, a menos que use el protocolo de conexión. Como norma general, comience con un búfer de 1024 bytes. Si se produce un error por desbordamiento, aumente el tamaño del búfer para controlar la velocidad de transmisión de su aplicación.

Tipo de datos

Integer


Input (Propiedad)

Devuelve y quita una cadena de datos del búfer de recepción. Esta propiedad no está disponible en tiempo de diseño y es de sólo lectura en tiempo de ejecución.

Sintaxis

objeto.Input

El marcador de posición objeto representa una expresión de objeto que da como resultado un objeto de la lista Se aplica a.

Comentarios

La propiedad InputLen determina el número de caracteres leídos por la propiedad Input. Asignar a InputLen el valor 0 hace que la propiedad Input lea todo el contenido del búfer de recepción.

La propiedad InputMode determina el tipo de datos que se recuperan mediante la propiedad Input. Si InputMode es comInputModeText, la propiedad Input devuelve datos de texto en una variable de tipo Variant. Si InputMode es comInputModeBinary, la propiedad Input devuelve datos binarios en una matriz de bytes de tipo Variant.

Tipo de datos

Variant


InputLen (Propiedad)

Establece y devuelve el número de caracteres leídos por la propiedad Input del búfer de recepción.

Sintaxis

objeto.InputLen [ = valor ]

La sintaxis de la propiedad InputLen consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión de tipo Integer que especifica el número de caracteres leídos por la propiedad Input del búfer de recepción.

Comentarios

El valor predeterminado de la propiedad InputLen es 0. Este valor hace que el control MSComm lea todo el contenido del búfer de recepción cuando se usa Input.

Si no hay caracteres InputLen disponibles en el búfer de recepción, la propiedad Input devuelve una cadena de longitud cero (""). Si lo desea, el usuario puede comprobar la propiedad InBufferCount para determinar si está presente el número necesario de caracteres antes de usar Input.

Esta propiedad es útil para leer datos de las máquinas cuyo resultado tiene un formato de bloques de datos de longitud fija.

Tipo de datos

Integer


InputMode (Propiedad)

Establece o devuelve el tipo de datos recuperados por la propiedad Input.

Sintaxis

objeto.InputMode [ = valor ]

La sintaxis de la propiedad InputMode consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Un valor o una constante que especifica el modo de entrada, como se describe en Valores.

Valores

Los valores admitidos para valor son:

Constante | Valor | Descripción
comInputModeText | 0 | (Predeterminado) Los datos se recuperan como texto mediante la propiedad Input.
comInputModeBinary | 1 | Los datos se recuperan como datos binarios mediante la propiedad Input.

Comentarios

La propiedad InputMode determina cómo se recuperarán los datos mediante la propiedad Input. Los datos se recuperarán como cadenas o como datos binarios en una matriz de bytes.

Use comInputModeText para datos que utilicen el juego de caracteres ANSI. Utilice comInputModeBinary para todos los demás datos, como los que incluyen caracteres de control, nulos, etc.


Ejemplo de la propiedad InputMode

Este ejemplo lee 10 bytes de datos binarios del puerto de comunicaciones y los asigna a una matriz de bytes.

Private Sub Command1_Click()
Dim Buffer as Variant
Dim Arr() as Byte

' Establecer y abrir el puerto
MSComm1.CommPort = 1
MSComm1.PortOpen = True

' Establecer InputMode para leer datos binarios
MSComm1.InputMode = comInputModeBinary

' Esperar hasta que haya 10 bytes en el búfer de
' entrada
Do Until MSComm1.InBufferCount < 10
    DoEvents
Loop

' Almacenar los datos binarios en el búfer
Buffer = MSComm1.Input

' Asignar el búfer a una matriz de bytes para procesarlo
Arr = Buffer

End Sub


NullDiscard (Propiedad)

Determina si se transfieren caracteres nulos desde el puerto al búfer de recepción.

Sintaxis

objeto.NullDiscard [ = valor ]

La sintaxis de la propiedad NullDiscard consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión booleana que especifica si se transfieren caracteres nulos desde el puerto hasta el búfer de recepción, como se describe en Valores

Valores

Los valores admitidos para valor son:

Valor | Descripción
True | No se transfieren los caracteres nulos desde el puerto al búfer de recepción.
False | (Predeterminado) Se transfieren caracteres nulos desde el puerto al búfer de recepción.

Comentarios

Un carácter nulo se define como el carácter ASCII 0, Chr$(0).

Tipo de datos

Boolean


OutBufferCount (Propiedad)

Devuelve el número de caracteres que hay en espera en el búfer de transmisión. Puede usarla también para borrar el búfer de transmisión. Esta propiedad no está disponible en tiempo de diseño.

Sintaxis

objeto.OutBufferCount [ = valor ]

La sintaxis de la propiedad OutBufferCount consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión de tipo Integer que especifica el número de caracteres que hay en espera en el búfer de transmisión.

Comentarios

Puede borrar el búfer de transmisión si asigna el valor 0 a la propiedad OutBufferCount.

Nota No confunda la propiedad OutBufferCount con OutBufferSize, que refleja el tamaño total del búfer de transmisión.

Tipo de datos

Integer


OutBufferSize (Propiedad)

Establece y devuelve el tamaño, en bytes, del búfer de transmisión.

Sintaxis

objeto.OutBufferSize [ = objeto ]

La sintaxis de la propiedad OutBufferSize consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión de tipo Integer que especifica el tamaño del búfer de transmisión.

Comentarios

OutBufferSize se refiere al tamaño total del búfer de transmisión. El tamaño predeterminado es 512 bytes. No confunda esta propiedad con OutBufferCount, que refleja el número de bytes que hay en espera en ese momento en el búfer de transmisión.

Nota Cuanto mayor sea el búfer de transmisión, menos memoria quedará disponible para su aplicación. Sin embargo, si el búfer es demasiado pequeño, corre el riesgo de perder datos por desbordamiento a menos que use el protocolo de conexión. Como norma general, comience con un búfer de 512 bytes. Si se produce un error por desbordamiento, aumente el tamaño del búfer para controlar la velocidad de transmisión de su aplicación.

Tipo de datos

Integer


Output (Propiedad)

Escribe una cadena de datos en el búfer de transmisión. Esta propiedad no está disponible en tiempo de diseño y es de sólo lectura en tiempo de ejecución.

Sintaxis

objeto.Output [ = valor ]

La sintaxis de la propiedad Output consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una cadena de caracteres que se va a escribir en el búfer de transmisión.

Comentarios

La propiedad Output puede transmitir datos binarios o de texto. Para enviar texto mediante la propiedad Output, debe especificar una variable de tipo Variant que contenga una cadena. Para enviar datos binarios, debe pasar a la propiedad Output un Variant que contenga una matriz de bytes.

Generalmente, si envía a una aplicación una cadena ANSI, puede enviarla como datos de texto. Si tiene datos que contengan caracteres de control, nulos, etc., debe pasarlos como datos binarios.

Tipo de datos

Variant


ParityReplace (Propiedad)

Establece y devuelve el carácter que reemplaza a un carácter no válido en el flujo de datos cuando se produce un error de paridad.

Sintaxis

objeto.ParityReplace [ = valor ]

La sintaxis de la propiedad ParityReplace consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión de cadena que representa un carácter, como se describe en Comentarios.

Comentarios

El bit de paridad es un bit que se transmite junto con un número especificado de bits de datos para proporcionar cierta comprobación de errores. Cuando se usa un bit de paridad, el control MSComm suma todos los bits que se han establecido (que tienen el valor 1) en los datos y comprueba que la suma sea par o impar (según el valor de paridad que se haya utilizado al abrir el puerto).

De forma predeterminada, el control usa un signo de interrogación (?) para reemplazar los caracteres no válidos. Si asigna a ParityReplace una cadena vacía (""), desactivará el reemplazo del carácter donde ocurre un error de paridad. Se desencadenará el evento OnComm y se asignará a la propiedad CommEvent el valor comEventRXParity.

El carácter ParityReplace se utiliza en una operación orientada a bytes y debe ser un carácter de un único byte. Puede especificar cualquier código de carácter ANSI entre 0 y 255.

Tipo de datos

String


PortOpen (Propiedad)

Establece y devuelve el estado del puerto de comunicaciones (abierto o cerrado). Esta propiedad no está disponible en tiempo de diseño.

Sintaxis

objeto.PortOpen [ = valor ]

La sintaxis de la propiedad PortOpen consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión booleana que especifica el estado del puerto de comunicaciones.

Valores

Los valores admitidos para valor son:

Valor | Descripción
True | El puerto está abierto
False | El puerto está cerrado

Comentarios

Cuando la propiedad PortOpen es True se abre el puerto. Si le asigna el valor False se cierra el puerto y se borra el contenido de los búferes de recepción y de transmisión. El control MSComm cierra automáticamente el puerto serie cuando finaliza la aplicación.

Asegúrese de que la propiedad CommPort contenga un número de puerto válido antes de abrir el puerto. Si la propiedad CommPort es un número de puerto no válido, cuando intente abrir el puerto el control MSComm generará el error 68 (El dispositivo no está disponible).

Además, el dispositivo del puerto serie tiene que aceptar los valores actuales de la propiedad Settings. Si la propiedad Settings contiene una configuración de comunicaciones que el hardware no admite, es posible que el hardware no funcione correctamente.

Si cualquiera de las propiedades DTREnable o RTSEnable tiene el valor True antes de que se abra el puerto, tendrán el valor False cuando se cierre el puerto. De lo contrario, las líneas DTR y RTS permanecerán en su estado anterior.

Tipo de datos

Boolean


RThreshold (Propiedad)

Establece y devuelve el número de caracteres que se van a recibir antes de que el control MSComm asigne a la propiedad CommEvent el valor comEvReceive y genere el evento OnComm.

Sintaxis

objeto.RThreshold [ = valor ]

La sintaxis de la propiedad RThreshold consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión de tipo Integer que especifica el número de caracteres que se van a recibir antes de generar el evento OnComm.

Comentarios

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.

Tipo de datos

Integer


RTSEnable (Propiedad)

Determina si hay que activar la línea Petición de envío (RTS). Normalmente, la señal RTS, que pide permiso para transmitir datos, se envía desde un equipo al módem conectado.

Sintaxis

objeto.RTSEnable[ = valor ]

La sintaxis de la propiedad RTSEnable consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión booleana que especifica si está activa la línea Petición de envío (RTS), como se describe en Valores.

Valores

Los valores admitidos para valor son:

Valor | Descripción
True | Activa la línea Petición de envío.
False | (Predeterminado) Desactiva la línea Petición de envío.

Comentarios

Si RTSEnable es True, la línea Petición de envío cambia a alta (activada) cuando se abre el puerto y a baja (desactivada) cuando se cierra el puerto.

La línea Petición de envío se utiliza en el protocolo de conexión del hardware RTS/CTS. La propiedad RTSEnable le permite sondear manualmente la línea Petición de envío si necesita determinar su estado.

Para obtener más información acerca de los protocolos de conexión, vea la propiedad Handshaking.

Tipo de datos

Boolean


Settings (Propiedad)

Establece y devuelve los parámetros de velocidad en baudios, paridad, bits de datos y bits de parada.

Sintaxis

objeto.Settings [ = valor ]

La sintaxis de la propiedad Settings consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión de cadena que representa el valor del puerto de comunicaciones, como se describe a continuación.

Comentarios

Si valor no es válido cuando se abre el puerto, el control MSComm genera el error 380 (El valor de la propiedad no es válido).

Valor está compuesto por cuatro valores y tiene el formato siguiente:

"BBBB,P,D,S"

Donde 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 de valor es:

"9600,N,8,1"

La siguiente lista muestra las velocidades en baudios válidas.

Valor
110
300
600
1200
2400
9600 (predeterminado)
14400
19200
28800
38400
56000
128000
256000

La siguiente tabla describe los valores de paridad válidos.

Valor | Descripción
E | Par
M | Marca
N | (Predeterminado) Ninguno
O | Impar
S | Espacio

La siguiente lista muestra los valores válidos de bits de datos.

Valor |
4 |
5 |
6 |
7 |
8 | (Predeterminado)

La siguiente lista muestra los valores válidos de bits de parada.

Valor |
1 | (Predeterminado)
1.5 |
2 |

Tipo de datos

String


SThreshold (Propiedad)

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 asigne a la propiedad CommEvent el valor comEvSend y genere el evento OnComm.

Sintaxis

objeto.SThreshold [ = valor ]

La sintaxis de la propiedad SThreshold consta de las siguientes partes:

Parte | Descripción
objeto | Una expresión de objeto que da como resultado un objeto de la lista Se aplica a.
valor | Una expresión de tipo Integer que representa el número mínimo de caracteres del búfer de transmisión antes de que se genere el evento OnComm.

Comentarios

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.

Si el número de caracteres que contiene el búfer de transmisión es menor que valor, la propiedad CommEvent será comEvSend y se generará el evento OnComm. El evento comEvSend sólo se desencadena una vez, cuando se llega al número de caracteres establecido en SThreshold. Por ejemplo, si SThreshold es cinco, el evento comEvSend sólo se produce cuando el número de caracteres baja de cinco a cuatro en la cola de salida. Si en la cola de salida nunca hay más caracteres que los establecidos en SThreshold, nunca se desencadenará el evento.

Tipo de datos

Integer