roIRReceiver
This object supports receiving arbitrary Infrared remote control codes using the NEC and RC5 protocols. The JavaScript equivalent is BSIRReceiver.
Object Creation: The roIRReceiver object is created with an associative array.
CreateObject("roIRReceiver", config As roAssociativeArray)
The associative array can contain the following parameters:
source
: A string value indicating the source of the input."IR-in": The 3.5mm IR input/output connector (available on 4Kx42 and XDx32 models)
"GPIO": Pin 1 of the GPIO connector
"Iguana": The Iguanaworks IR transceiver. This source can support both NEC and RC5 encodings simultaneously.
“tvcontroller” : This virtual IR driver is only available on BrightSign built-in products. It reads the IR messages from UART and drives the roIRReceiver object like other IR receivers. See the Examples section.
encodings
: An array indicating the required encodings."NEC"
"RC5" (supported on the Iguanaworks IR transceiver only)
NEC codes are expressed in 24 bits:
Bits 0-7: Button code
Bits 8-23: Manufacturer code
If the manufacturer code is zero, then the code is considered to be intended for the Roku SoundBridge remote control.
The roIRReceiver object can generate the following events:
roIRDownEvent: Generates when a button is pressed.
roIRRepeatEvent: Generates when a button repeats.
roIRUpEvent (Iguanaworks IR transceiver only): Generates when a button is released
ifUserData
SetUserData(user_data As Object)
Sets the user data that will be returned when events are raised.
GetUserData() As Object
Returns the user data that has previously been set via SetUserData()
. It will return Invalid if no data has been set.
ifMessagePort
SetPort(port As roMessagePort)
Specifies the port that will receive events generated by the roIRReceiver instance.
Examples
Connecting a USB-C port to an IR receiver
The LS424 is the only platform where IR input is supported on the Type C connector. Also, a special cable is required: either an adapter (3.5mm plug to 3.5mm socket crossover), or custom all-in-one cable (LiteOn PN 306300009327).
'2-3-23 - V1.12 Test IR input, output to system log
Sub Main()
scriptlog = CreateObject("roSystemLog") 'display messages in system log
msgPort = CreateObject("roMessagePort")
gpioPort = CreateObject("roGpioControlPort")
gpioPort.SetPort(msgPort)
configIR = CreateObject("roAssociativeArray")
'Built-in IR via usb c
configIR.source = "TypeC"
configIR.encodings = CreateObject("roArray", 1, false)
configIR.encodings[0] = "NEC"
IRRecep = CreateObject("roIRReceiver", configIR)
if (type(IRRecep) = "roIRReceiver") then
IRRecep.SetPort(msgPort)
scriptlog.SendLine(" @@@@ Please press a button on remote control to display IR code... ")
else if IRRecep = invalid then
scriptlog.SendLine(" @@@@ IR receiver not detected, Please connect IR receiver and reboot player... ")
end if
Eventloop(msgport)
End Sub
Sub Eventloop(msgport as object)
scriptlog = CreateObject("roSystemLog") 'display messages in system log
while true
event = wait(0, msgPort)
scriptlog.SendLine("@@@@ Received event"+ type(event))
if (type(event) = "roIRDownEvent") then
IrData$ = stri(event)
scriptlog.SendLine(" @@@@ "+IrData$)
end If
End while
end Sub
Creating a tvcontoller IR Receiver
configIR = CreateObject("roAssociativeArray")
'tvcontroller IR type
configIR.source = "tvcontroller"
configIR.encodings = CreateObject("roArray", 0, false)
IRRecep = CreateObject("roIRReceiver", configIR)