roControlPort
24 min
este objeto proporciona soporte para las placas de botones usb bp200/bp900, los puertos gpio y los botones laterales en el reproductor brightsign las pulsaciones de botones se devuelven como eventos rocontrolup y rocontroldown el objeto se utiliza para configurar niveles de salida en el conector de e/s y supervisar entradas normalmente, los led y botones se conectan al conector gpio en el reproductor brightsign o en el brightsign expansion module el equivalente en javascript es puerto de control docid\ lftxxkmgwnlvqkddmddqc creación del objeto el objeto rocontrolport se crea con un único parámetro que especifica el puerto que se está utilizando createobject("rocontrolport", port as string) el parámetro port puede ser uno de los siguientes brightsign especifica el conector gpio integrado (incluido el botón svc (gpio12)) expander gpio especifica el conector db 25 en el brightsign expansion module si no hay ningún brightsign expansion module conectado, la creación del objeto fallará y se devolverá invalid expander \<n> gpio especifica un dispositivo usb to gpio https //www brightsign biz/digital signage products/accessories/usb c cables conectado al reproductor se pueden controlar múltiples dispositivos usb to gpio utilizando instancias separadas de rocontrolport el primer dispositivo corresponde a "expander 0 gpio" , el segundo a "expander 1 gpio" , etc expander dip especifica los ocho interruptores dip en el brightsign expansion module si no hay ningún brightsign expansion module conectado, la creación del objeto fallará y se devolverá inválido la conexión en caliente del brightsign expansion module no es compatible touchboard \<n> gpio recupera eventos de la placa de botones bp200/bp900 especificada los eventos se manejan de la misma manera que los eventos del puerto brightsign touchboard \<n> led setup configura varias opciones de salida led para la placa de botones bp200/bp900 especificada touchboard \<n> led configura los bits para cada botón en la placa de botones bp200/bp900 especificada los bits indican si el led asociado debe estar encendido o apagado dado que se pueden conectar varias placas de botones bp200/bp900 a un reproductor simultáneamente, el valor \<n> especifica la enumeración de puerto de cada placa este valor corresponde al valor \<raw> o \<fid> devuelto por el método rodeviceinfo getusbtopology() docid\ yudjoipuduw rc3fyb zz un valor de enumeración no especificado es sinónimo de una placa de botones con un valor de enumeración de 0 (por ejemplo, touchboard gpio y touchboard 0 gpio son idénticos) ifcontrolport los números de "button" descritos a continuación no son los mismos que los números de "pin" gpio algunos pines actúan como fuente de alimentación o tierra, por lo que no se incluyen en el esquema de numeración de botones consulte el manual de hardware docid\ uyyjyej6qojy1hksbrlpu asociado con su modelo de reproductor para ver una asignación de botones a pines getversion() as string devuelve el número de versión del firmware (ya sea el firmware principal brightsign o el firmware del brightsign expansion module) responsable del puerto de control enableoutput(button as integer) as boolean marca el botón especificado como una salida si se pasa un número de botón no válido, falso será devuelto si la operación es exitosa, la función devuelve verdadero la salida se establecerá en alto o bajo dependiendo del estado de salida actual del pin enableinput(button as integer) as boolean marca el botón especificado como una entrada si se pasa un número de botón no válido, falso será devuelto si la operación es exitosa, la función devuelve verdadero el botón quedará en estado tri state y podrá ser llevado a alto o bajo externamente enablealternatefunction(button as integer, pin function as string) as boolean habilita una función alternativa en un botón gpio este método se aplica al conector gpio integrado y actualmente es compatible con los modelos xtx44, xtx43, xdx34, xdx33, hdx24, hdx23 y ho523 el primer argumento especifica el número del botón gpio (entre 0 y 7) el segundo argumento especifica la configuración de función alternativa; la siguiente tabla describe la posible configuración alternativa para cada pin pin gpio número de botón función alternativa 3 0 "serial1" (rx) 4 1 "irin1" 5 2 "irout" (solo hdx23, ho523) 6 3 n/a 9 4 "serial0" (rx puerto de consola) 10 5 "serial0" (tx) 11 6 "serial1" (tx) 12 7 n/a los modelos que no tienen un puerto serie de 3,5 mm (p ej , hd223, xd233) no admiten el puerto serie 0 para revertir un botón gpio a su función principal, especifique pin function como "gpio" getwholestate() as integer devuelve el estado de todas las entradas conectadas al puerto de control como bits en un entero los botones individuales se pueden comprobar mediante operaciones binarias, aunque normalmente es más fácil llamar a isinputactive() en su lugar isinputactive(button as integer) as boolean devuelve el estado de la entrada especificada si el botón no está configurado como una entrada, el resultado no está definido setwholestate(state as integer) as boolean especifica el estado deseado de todas las salidas conectadas al puerto de control como bits en un entero los botones individuales se pueden configurar mediante operaciones binarias, aunque normalmente es más fácil llamar a setoutputstate() en su lugar ejemplo port = createobject("rocontrolport", "brightsign") gpio1 = 2 '2^1 gpio3 = 8 '2^3 gpio5 = 32 '2^5 gpio7 = 128 '2^7 port setwholestate(gpio1 + gpio2 + gpio5 + gpio7) 'turns on ports 1, 3, 5, and 7 setoutputstate(button as integer, level as boolean) as boolean configura la salida del pin especificado, que puede ser "off" (0) o "on" (1) si el botón no está configurado como una salida, el nivel resultante no está definido este método también se puede utilizar para configurar el comportamiento de salida led en placas de botones bp200/b900; consulte la sección configuración de bp200/bp900 docid jdqhtyue7bpjpvhzg95q a continuación para obtener más detalles setoutputvalue(offset as integer, bit mask as integer) as boolean configura un botón en una placa de botones bp200/bp900 este método solo se puede utilizar cuando el objeto rocontrolport se instancia con el parámetro touchboard \<n> led setup o touchboard \<n> led consulte la sección configuración de bp200/bp900 docid jdqhtyue7bpjpvhzg95q a continuación para obtener más detalles setoutputvalues(values as roassociativearray) as boolean configura botones en una placa de botones bp200/bp900 este método solo se puede utilizar cuando el objeto rocontrolport se instancia con el parámetro touchboard \<n> led setup o touchboard \<n> led consulte la sección configuración de bp200/bp900 docid jdqhtyue7bpjpvhzg95q a continuación para obtener más detalles getproperties() as roassociativearray devuelve una matriz asociativa de valores relacionados con la placa de botones bp200/bp900 conectada, incluidos hardware, encabezado y revisión este método solo se puede utilizar con un rocontrolport instanciado con el parámetro touchboard \<n> gpio setpulseparams(parameters as roassociativearray) as boolean especifica un período de tiempo, así como los segmentos de tiempo dentro de ese período, para pulsar leds gpio estas propiedades se aplican a todas las salidas gpio a este método se le pasa una matriz asociativa con los siguientes parámetros milisegundos un entero que especifica el período de tiempo (en ms) para el pulso rebanadas un entero que especifica el número de divisiones dentro del período de tiempo de milliseconds por ejemplo, un período de 500 ms con slices 2 se divide en dos segmentos de 250 ms setpulse(button as integer, bit field as integer) as boolean establece el campo de bits off/on para un gpio en particular utilice el parámetro rebanadas del método setpulseparams() para determinar el número de bits en el campo de bits por ejemplo, especificar milisegundos 500, segmentos 2 , y un campo de bits de 10 hará que el botón se encienda cada dos períodos de 250 milisegundos removepulse(button as integer) as boolean elimina el gpio especificado del conjunto afectado por el pulso ifmessageport setport(port as object) publica mensajes de tipo rocontrolup y rocontroldown y rocontroldown docid 9lhh2q1n2bhq06 i vm 7 al puerto de mensajes adjunto ifuserdata setuserdata(user data as object) establece los datos del usuario que se devolverán cuando se activen eventos getuserdata() as object devuelve los datos del usuario que se establecieron previamente mediante setuserdata() devolverá inválido si no se ha establecido ningún dato ifidentity getidentity() as integer devuelve un valor de identidad que se puede utilizar para asociar eventos rocontrolup y rocontroldown con este puerto de control la interfaz ifidentity ha quedado obsoleta recomendamos utilizar la interfaz ifuserdata en su lugar ejemplos este script de ejemplo aplica pulsos temporizados a un conjunto de gpio ' set up button 2 and 3 to flash at 2hz (i e on & off twice in a second) in an alternating ' fashion gpioport = createobject("rocontrolport", "brightsign") gpioport enableoutput(2) gpioport setoutputstate(2, true) gpioport enableoutput(3) gpioport setoutputstate(3, true) ' set up pulse to have two time slices of 250ms each gpioport setpulseparams({ milliseconds 500, slices 2 }) ' button 2 will have slice 1 on and slice 2 off gpioport setpulse(2, \&h01) ' button 3 will have the reverse of button 2 gpioport setpulse(3, \&h02) ' wait for a bit sleep(10000) ' stop pulsing on button 2 gpioport removepulse(2) este script de ejemplo habilita varias funciones alternativas en el gpio c = createobject("rocontrolport", "brightsign") 'enable serial port 1 on the gpio c enablealternatefunction(0, "serial1") c enablealternatefunction(6, "serial1") s1 = createobject("roserialport", 1, 115200) s1 sendline("this is serial port 1") mp = createobject("romessageport") s1 setlineeventport(mp) ? wait(10000, mp) 'switch serial port 0 from the 3 5mm serial port to the gpio '\[note it is advised use telnet/ssh or a script when testing this] c enablealternatefunction(4, "serial0") c enablealternatefunction(5, "serial0") s = createobject("roserialport", 0, 115200) s sendline("hello on the console?") mp = createobject("romessageport") s setlineeventport(mp) ? wait(10000, mp) 'restore normal operation on serial port 0 c enablealternatefunction(4, "gpio") c enablealternatefunction(5, "gpio") 'enable ir input on the gpio c = createobject("rocontrolport", "brightsign") ? c enablealternatefunction(1, "irin1") nexus encodings = \[ "nec", "nec32" ] ir gpio = createobject("roirreceiver", { source "gpio", encodings nexus encodings }) mp = createobject("romessageport") ir gpio setport(mp) m = wait(10000, mp) 'enable ir output on the gpio (hdx23, ho523 only the xt/xd models have a dedicated 3 5mm ir socket) c enablealternatefunction(2, "irout") ir = createobject("roirtransmitter", { destination "gpio"} ) ir send("nec32", \&h12345) configuración de bp200/bp900 para enviar una configuración a la placa de botones bp200/bp900, cree una instancia de rocontrolport con el parámetro touchboard \<n> led setup y llame al método setoutputvalue() este método acepta dos enteros el primer entero especifica uno de los tres tipos de comando (offsets); el segundo entero es un campo de bits compuesto por 32 bits offset 0 configura la placa de botones usando un campo de bits que se divide en cuatro bytes de ocho bits cada uno cada byte es una parte independiente de la configuración en el script, estos bytes deben enumerarse de derecha a izquierda en valor hexadecimal (es decir, byte 1 + byte 2 + byte 3 + byte 4) byte 1 especifica el tipo de configuración para la placa de botones actualmente, el único tipo de configuración es para salida led, que se especifica con el valor \&ha0 byte 2 el número o los números de botón que se configurarán los botones se numeran comenzando desde 1 el valor se establece en 0 (\&h00) si este comando no es necesario byte 3 la configuración del campo de bits led este valor especifica cuántos bits de encendido/apagado deben usarse (hasta 32 bits) cuando se llama a setoutputvalue() en una instancia de touchboard \<n> led (consulte la sección salida led de bp200/bp900 a continuación para obtener detalles) establezca el valor en 0 (\&h00) si este comando no es necesario (el campo de bits se establecerá en ocho bits de forma predeterminada) byte 4 este valor actualmente siempre se establece en 0 (\&h00) offset 1 deshabilita botones en la placa de botones según los valores del campo de bits cada botón se deshabilita individualmente estableciendo los bits 0 10 por ejemplo, pasar el valor hexadecimal \&h00000008 deshabilitará solo el botón 4 offset 2 deshabilita led en la placa de botones según los valores del campo de bits cada led se deshabilita individualmente estableciendo los bits 0 10 por ejemplo, pasar el valor hexadecimal \&h00000080 deshabilitará solo el led del botón 8 deshabilitar un led de botón no deshabilitará automáticamente el botón en sí (y viceversa) para deshabilitar tanto el botón como el led, haga llamadas independientes a setoutputvalue() para offset 1 y offset 2 salida led de bp200/bp900 para controlar el comportamiento de los led de botones individuales, cree una instancia de rocontrolport con el parámetro touchboard \<n> led y luego pase campos de bits por led al método setoutputvalue() este método acepta dos enteros el primer entero especifica el número de botón (0 11), mientras que el segundo entero usa un campo de bits para especificar el comportamiento de encendido/apagado del led del botón el tamaño del campo de bits (hasta 32 bits) se determina con el valor offset 0 – byte 3 descrito en la sección anterior cada bit especifica el comportamiento de encendido/apagado de un único ciclo, y las placas de botones bp200/bp900 funcionan aproximadamente a 11hz por ejemplo, si desea que un led realice un ciclo cada dos segundos, deberá establecer el valor offset 0 – byte 3 en \&h16 (22 bits) y el propio campo de bits en \&h3ff800 (0000000000011111111111) este script de ejemplo configura un bp900 para que “parpadee” apagando cada led de botón en un punto diferente del ciclo led=createobject("rocontrolport", "touchboard 0 led") led setup=createobject("rocontrolport", "touchboard 0 led setup") led setup setoutputvalue(0, \&h000b00a0) led setoutputvalue(0, \&h07fe) led setoutputvalue(1, \&h07fd) led setoutputvalue(2, \&h07fb) led setoutputvalue(3, \&h07f7) led setoutputvalue(4, \&h07ef) led setoutputvalue(5, \&h07df) led setoutputvalue(6, \&h07bf) led setoutputvalue(7, \&h077f) led setoutputvalue(8, \&h06ff) led setoutputvalue(9, \&h05ff) led setoutputvalue(10, \&h03ff) consulte controlport docid\ lftxxkmgwnlvqkddmddqc para ver el ejemplo equivalente (configurar un bp900 para que parpadee) en javascript