---
title: roSerialPort
slug: develop/es/roserialport
docTags: 
createdAt: 2025-03-11T07:07:18.732Z
---

Este objeto controla el puerto serie del reproductor, permitiéndole transmitir y recibir datos seriales. El equivalente en JavaScript es [BSSerialPort](docId:7CjtmABB2-kIEzHIWQkP_).

:::hint{type="info"}
Si la clave de registro *serial\_with\_telnet* está configurada en 1, la comunicación serial mediante roSerialPort en scripts será muy poco confiable. Consulte [esta página](docId\:IMFiloBbD-Kj_czFnr2rq) para obtener más información sobre *serial\_with\_telnet*.
:::

Creación del objeto: El objeto *roSerialPort* se crea con dos parámetros.

```text
CreateObject("roSerialPort", port As Dynamic, baud_rate As Integer)
```

- `puerto como entero`: La enumeración de puertos del dispositivo serial:
  - La mayoría de los dispositivos seriales estándar (incluido el puerto USB-serial en el [LS424](docId\:pfX3ZfrOOwIm0gPElVl68)) se enumeran en el puerto 0, aunque el puerto 1 puede estar disponible en el conector GPIO en algunos modelos si está habilitado. Consulte [roControlPort](docId:-jdQHtyuE7bPjpvhzg95Q).
  - Si hay conectado más de un dispositivo serial USB, entonces el primero será el puerto 2, el segundo será el puerto 3, etc.
  - Para comunicarse con el puerto serial de una pantalla OPS (es decir, con el HO523), use el puerto 1.
  - Para comunicarse con un dispositivo USB-serial (como un receptor GPS), use el puerto 2.
- `port As String`: Si hay varios dispositivos USB-serial conectados al reproductor, el dispositivo puede especificarse con un nombre descriptivo (`"USB:<friendly_name>"`). Este valor corresponde al valor `<fid>` devuelto por el método [roDeviceInfo.GetUSBTopology](docId\:YuDJoiPUdUw_RC3FYb_ZZ) . El comando de shell de BrightSign `usblist` puede usarse para descubrir nombres descriptivos. Tenga en cuenta que no se garantiza que los nombres RAW permanezcan iguales entre productos o versiones del SO, por lo que no se recomiendan.
- `velocidad_de_baudios como entero`: La velocidad en baudios para la comunicación serial. El puerto serial admite las siguientes velocidades en baudios: 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400.

### Ejemplo

```text
serial1 = CreateObject("roSerialPort", 0, 115200)
serial2 = CreateObject("roSerialPort", "USB:A/1", 57600) 
```

El objeto *roSerialPort* envía los siguientes tipos de eventos:

- *roStreamLineEvent*: El evento de línea se genera cada vez que se encuentra la cadena de final de línea establecida mediante *SetEol* y contiene una cadena para toda la línea. Este objeto implementa las interfaces *ifString* e *ifUserData*.
- *roStreamByteEvent*: El evento de byte se genera con cada byte recibido. Este objeto implementa las interfaces *ifInt* e *ifUserData*.

## ifStreamSend

### SetSendEol(eol\_sequence As String) As Void

Establece la secuencia EOL al escribir en el flujo. El valor predeterminado es CR (valor ASCII 13). Si necesita establecer este valor en un carácter no imprimible, use la `chr()` [función global](docId:8ViuBcC3f1MPXOoS0i8yf).

### SendByte(byte As Integer) As Void

Escribe el byte especificado en el flujo.

### SendLine(string As String) As Void

Escribe los caracteres especificados en el flujo seguidos de la secuencia EOL actual.

### SendBlock(a As Dynamic) As Void

Escribe los caracteres especificados en el flujo. Este método puede admitir una cadena o un *roByteArray*. Si el bloque es una cadena, cualquier byte nulo terminará el bloque.

### Flush()

## ifStreamReceive

### SetLineEventPort(port As Object) As Void

Establece el puerto de mensajes al que se publicarán los eventos de *roStreamLineEvent* .

### SetByteEventPort(port As Object) As Void

Establece el puerto de mensajes al que se publicarán los eventos de *roStreamByteEvent* .

### SetByteArrayEventPort(port As Object) As Void

Este método funciona como *SetByteEventPort* pero provoca que los mensajes de *roStreamByteArrayEvent* se publiquen en el puerto de mensajes cuando se reciben datos. Para algunos tipos de objetos (por ejemplo, *roTCPStream*), esto puede ser mucho más eficiente ya que los datos ya no necesitan entregarse a BrightScript un byte a la vez, pero dado que los puertos seriales son comparativamente lentos, es posible que cada evento siga conteniendo solo un único carácter. 

### SetReceiveEol(eol\_sequence As String)

Establece la secuencia que indicará el final de línea y hará que se entregue un *roStreamLineEvent* al puerto de mensajes establecido por *SetLineEventPort*. Si necesita establecer este valor en un carácter no imprimible, use la `chr()` [función global](docId:8ViuBcC3f1MPXOoS0i8yf) o un *roByteArray*. Si la secuencia contiene bytes NUL, debe pasarse como un *roByteArray* ya que las cadenas pueden no contener bytes NUL.

Para usar un byte NUL como terminador de línea:

```text
eol = CreateObject("roByteArray")
eol.Push(0)
mp = CreateObject("roMessagePort")
client = CreateObject("roSerialPort", 0, 115200)
client.SetReceiveEol(eol)
client.SetLineEventPort(mp)
```

### SetMatcher(matcher As Object) As Boolean

Indica al stream que use el matcher especificado. Este método devuelve `Verdadero` si tiene éxito. Pase `Inválido` a este método para dejar de usar el matcher especificado.

## ifSerialControl

### SetBaudRate(baud\_rate As Integer) As Boolean

Establece la velocidad en baudios del dispositivo. Las velocidades en baudios compatibles son las siguientes: 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400.

### SetMode(mode As String) As Boolean

Establece el modo serial usando la sintaxis "8N1". El primer carácter es el número de bits de datos. Puede ser 5, 6, 7 u 8. El segundo carácter es la paridad. Puede ser "N"one, "O"dd o "E"ven. El tercero es el número de bits de parada. Puede ser 1 o 2.

### SetEcho(enable As Boolean) As Boolean

Habilita o deshabilita el eco serial. Devuelve `Verdadero` en caso de éxito y `Falso` en caso de error.

### SetEol(a As String)

### SetFlowControl(enable As Boolean) As Boolean

Habilita o deshabilita el protocolo RTS/CTS a través del puerto serial. Esta función actualmente solo está disponible en los modelos 4Kx42, XDx32 y HDx22.

### SetInverted(inverted As Boolean) As Boolean

Invierte los niveles de señal TX/RX en el puerto serial. Esto permite que el reproductor se comunique con dispositivos que usan señalización de -12V a 12V. La inversión es compatible solo con los puertos DE-9 (más comúnmente conocidos como DB-9) y USB. Pasar True al método habilita la inversión, mientras que pasar False la deshabilita.

### SendBreak(duration\_in\_ms As Integer) as Boolean

Envía una interrupción serial o establece la condición de interrupción serial. Este método devuelve `Verdadero` en caso de éxito y `Falso` en caso de error.

- `duration_in_ms = -1`: Envía una interrupción continua.
- `duration_in_ms = 0`: Borra el estado de interrupción.
- `duration_in_ms >= 100`: Establece la condición de interrupción durante el período especificado de milisegundos (tenga en cuenta que este entero solo es preciso hasta una décima de segundo).

## ifUserData

### SetUserData(user\_data As Object)

Establece los datos de usuario que se devolverán cuando se generen eventos.

### GetUserData() As Object

Devuelve los datos de usuario que se han establecido previamente mediante `SetUserData()`. Devolverá `Inválido` si no se ha establecido ningún dato.

## Ejemplo

Este script de ejemplo espera un evento serial y devuelve la entrada recibida en el puerto serial al shell:

```text
serial = CreateObject("roSerialPort", 0, 9600)
p = CreateObject("roMessagePort")
serial.SetLineEventPort(p)

serial_only:
msg = Wait(0,p) ' Wait forever for a message.
if(type(msg) <> "roStreamLineEvent") goto serial_only 'Accept serial messages only.
serial.SendLine(msg) ' Echo the message back to serial.
```

