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

Este objeto se utiliza para enviar eventos *roSequenceMatchEvent* cuando coinciden los patrones de secuencia de bytes especificados. Una vez que un patrón ha coincidido y el evento ha sido publicado, todos los bytes contribuyentes se descartan. Como resultado, si un patrón es un prefijo de otro patrón, entonces el segundo patrón, más largo, nunca coincidirá con el objeto.

Este objeto proporciona tanto una interfaz estándar como una interfaz sobrecargada para enviar eventos a un puerto de mensajes.

## ifMessagePort

### SetPort(port As roMessagePort)

Publica mensajes de tipo *roSequenceMatchEvent* en el puerto de mensajes adjunto.

## ifSequenceMatcher

### SetPort(a As Object)

Especifica el puerto de mensajes donde se publicarán los objetos *roSequenceMatchEvent*.

### Add(pattern As Object, user\_data As Object) As Boolean

Agrega un patrón para que la instancia del objeto *roSequenceMatcher* lo haga coincidir. El patrón debe especificarse como un objeto que pueda convertirse en una secuencia de bytes (por ejemplo, *roByteArray*, *roString*). Para los datos de usuario, pase el objeto que debe devolverse si el patrón especificado coincide.

## Ejemplo

```text
Function FromHex(hex as String) as Object
    bytes = CreateObject("roByteArray")
    bytes.FromHexString(hex)
    return bytes
End Function
 
Sub Main()
    serial = CreateObject("roSerialPort", 1, 115200)
    mp = CreateObject("roMessagePort")
 
    button1_seq = FromHex("080a01040001e000")
    button2_seq = FromHex("080e01040001e000")
 
    matcher = CreateObject("roSequenceMatcher")
    matcher.SetMessagePort(mp)
    matcher.Add(button1_seq, { name: "button1" })
    matcher.Add(button2_seq, { name: "button2" })
    matcher.Add("flibbet", { name: "flibbet" })
    matcher.Add("flobbet", { name: "flobbet" })
 
    if not serial.SetMatcher(matcher) then
       stop
    end if
 
    finished = false
    while not finished
       ev = mp.WaitMessage(10000)
       if ev = invalid then
           finished = true
       else if type(ev) = "roSequenceMatchEvent" then
           print "Got button: "; ev.GetUserData().name
       else
           print "Unexpected event: "; type(ev)
       end if
    end while
End Sub
```

