roSerialPort
17 min
este objeto controla el puerto serie del reproductor, permitiéndole transmitir y recibir datos seriales el equivalente en javascript es bsserialport docid 7cjtmabb2 kiezhiwqkp 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 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 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 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 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