Barco UDX-W40 FLEX User guide

Type
User guide
RS232 and Network Command Catalog
For JSON RPC/Pulse Based Projectors
For UDX
End User
Reference guide
1.7
2019-03-04
Table of contents
Pulse API 3
Introduction 3
Connecting to Pulse services 3
Quick start guide 4
Object and method naming 5
Type support 5
Parameters 6
Authentication 6
Service API 7
Methods 7
Properties 7
Signals 10
Notications 12
Introspection API 13
Object changed signal 16
File endpoints 17
Programmers guide 19
Basic operation 19
Sources 21
Illumination 27
Picture settings 31
Warping with grid les 34
Blending with images 35
Black level adjustment with images 37
Environment information 38
ECO mode 41
Important note about the API documentation 41
Properties 42
Methods 169
Signals 233
Files 240
Property index 243
Method index 249
Signal index 252
File index 253
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 2 of 253
Pulse API
This document describes the application programmers interface to Pulse projectors.
How to connect to the projector, the communication protocol and a programmers guide is presented in the following
section.
Introduction
The facade API is based on the JSON-RPC 2.0 protocol and provides access to Pulse services to clients. The services
can be accessed through the network using the TCP/IP protocol, or using a RS232 serial cable.
Connecting to Pulse services
Network
If the projector is on a network, TCP/IP can be used to connect to Pulse services. The service is available on port
number 9090.
Serial port
A serial cable can be connected to the projector in order to access the Pulse services.
Connect the projector and host using a standard serial cable with 9-pin female to the host, and 9-pin male to the
projector. Pin 2 connects to pin 2, pin 3 connects to pin 3 and pin 5 connects to pin 5.
RS232 Communication Parameters
Parameter Value
Baud rate 19200
Parity None
Data bits 8
Stop bits 1
Flow control None
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 3 of 253
Quick start guide
The following sections are examples of frequently used commands, just to get you started. This assumes that the
connection is set up as described in the previous chapter. The type of connection is not important. The same
commands are available for all connection types.
Power on projector
Request
{
"jsonrpc": "2.0",
"method": "system.poweron"
}
Power off projector
Request
{
"jsonrpc": "2.0",
"method": "system.poweroff"
}
Select DisplayPort 1 as input source
Request
{
"jsonrpc": "2.0",
"method": "property.set",
"params": {
"property": "image.window.main.source",
"value": "DisplayPort 1"
}
}
Select HDMI as input source
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 4 of 253
Request
{
"jsonrpc": "2.0",
"method": "property.set",
"params": {
"property": "image.window.main.source",
"value": "HDMI"
}
}
Object and method naming
Objects and members are named usingdot notation in lowercase format (JavaScript-like notation). Members are
either a method, property, signal or object. A typical method part of an invocation will then look like:
method: "foo.echo"
If there are more than one object of a "kind", it may be modeled and notated like:
tempctrl.fans
tempctrl.fans.mainfan
tempctrl.fans.lampblower
In the example above it is possible to get all fans by introspecting the object represented by temptrl.fans. Example:
accessing the rpm property of the mainfan:
tempctrl.fans.mainfan.rpm
Type support
Basic types
string (e.g. "hello")
integer (e.g 114)
float (e.g 3.141592653589793)
boolean (e.g true)
Container types
array (e.g ["hello", "world"] )
object (e.g {"name": "Johnny", "age": 30, "children": ["Agnes", "Tim"] } )
dictionary with string key (e.g gold medals in 2018 Winter Olympics Peyongchang {"Norway": 13, "Germany": 13 } )
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 5 of 253
Parameters
All parameters are passed by name, but the position or order of the parameters doesn't matter.
Thus:
{
"jsonrpc": "2.0",
"method": "property.set",
"params": {
"property": "image.window.main.source",
"value": "DisplayPort 1"
}
}
is exactly the same as:
{
"method": "property.set",
"jsonrpc": "2.0",
"params": {
"value": "DisplayPort 1",
"property": "image.window.main.source"
}
}
Authentication
A client session must start with an authentication request containing a secret pass code. The purpose of the
authentication protocol is to set the user access level. Authentication is only necessary when a higher level than
normal end user is required. For normal end user access the authentication can be skipped. To authenticate with the
server use the following type of request.
Request Response
{
"jsonrpc": "2.0",
"method": "authenticate",
"params": {
"code": 98765
},
"id": 1
}
{
"jsonrpc": "2.0",
"result": true,
"id": 1
}
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 6 of 253
Service API
Property Type Required Comments
jsonrpc string
yes
2.0
method string
yes see below
params
see below
id string | number
no Request identier
error object
yes, if error Error object - see JSON-RPC 2.0
Methods
Method invocation API
Request Response
{
"jsonrpc": "2.0",
"method": "ledctrl.blink",
"params": {
"led": "systemstatus",
"color": "red",
"period": 42
},
"id": 3
}
{
"jsonrpc": "2.0",
"result": 0,
"id": 3
}
Properties
API for setting and getting property values
Set value of a property
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 7 of 253
Request Response
{
"jsonrpc": "2.0",
"method": "property.set",
"params": {
"property": "objectname.propertyname",
"value": 100
},
"id": 3
}
{
"jsonrpc": "2.0",
"result": true,
"id": 3
}
It is best practice to wait for the conrmation of the property.set before setting the same property again.
Continuously setting the same property without waiting for conrmation may flood the server with unnecessary
request and may reduce performance.
Read the value of a property
Request Response
{
"jsonrpc": "2.0",
"method": "property.get",
"params": {
"property": "objectname.propertyname"
},
"id": 4
}
{
"jsonrpc": "2.0",
"result": 100,
"id": 4
}
Read values of multiple properties
Request Response
{
"jsonrpc": "2.0",
"method": "property.get",
"params": {
"property": [
"image.brightness",
"image.contrast"
]
},
"id": 5
}
{
"jsonrpc": "2.0",
"result": {
"image.brightness": 0,
"image.contrast": 1
},
"id": 5
}
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 8 of 253
Observe changes on one property
For change notications, see Notications
Request Response
{
"jsonrpc": "2.0",
"method": "property.subscribe",
"params": {
"property": "image.brightness"
},
"id": 6
}
{
"jsonrpc": "2.0",
"result": true,
"id": 6
}
Observe changes on multiple properties
For change notications, see Notications
Request Response
{
"jsonrpc": "2.0",
"method": "property.subscribe",
"params": {
"property": [
"image.brightness",
"image.contrast"
]
},
"id": 7
}
{
"jsonrpc": "2.0",
"result": true,
"id": 7
}
Stop observing one property
For change notications, see Notications
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 9 of 253
Request Response
{
"jsonrpc": "2.0",
"method": "property.unsubscribe",
"params": {
"property": "image.brightness"
},
"id": 8
}
{
"jsonrpc": "2.0",
"result": true,
"id": 8
}
Stop observing multiple properties
For change notications, see Notications
Request Response
{
"jsonrpc": "2.0",
"method": "property.unsubscribe",
"params": {
"property": [
"image.brightness",
"image.contrast"
]
},
"id": 9
}
{
"jsonrpc": "2.0",
"result": true,
"id": 9
}
Signals
Subscribe to a signal
For change notications, see Notications
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 10 of 253
Request Response
{
"jsonrpc": "2.0",
"method": "signal.subscribe",
"params": {
"signal": "modelupdated"
},
"id": 10
}
{
"jsonrpc": "2.0",
"result": true,
"id": 10
}
Subscribe to multiple signals
For change notications, see Notications
Request Response
{
"jsonrpc": "2.0",
"method": "signal.subscribe",
"params": {
"signal": [
"modelupdated",
"image.processing.warp.gridchanged"
]
},
"id": 11
}
{
"jsonrpc": "2.0",
"result": true,
"id": 11
}
Unsubscribe from a signal
For change notications, see Notications
Request Response
{
"jsonrpc": "2.0",
"method": "signal.unsubscribe",
"params": {
"signal": "modelupdated"
},
"id": 12
}
{
"jsonrpc": "2.0",
"result": true,
"id": 12
}
Unsubscribe from multiple signals
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 11 of 253
For change notications, see Notications
Request Response
{
"jsonrpc": "2.0",
"method": "signal.unsubscribe",
"params": {
"signal": [
"modelupdated",
"image.processing.warp.gridchanged"
]
},
"id": 13
}
{
"jsonrpc": "2.0",
"result": true,
"id": 13
}
Notications
The client has to implement the notication API to retrieve notications. Notication messages will not have an id and
no response message must be returned.
Properties
The client must implement the property.changed function which receives an array of property/value pairs.
Notication
{
"jsonrpc": "2.0",
"method": "property.changed",
"params": {
"property": [
{
"objectname.propertyname": 100
},
{
"otherobject.otherproperty": "bar"
}
]
}
}
Signals
The client must implement the signal.callback function which receives an array of signal/argument-list pairs.
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 12 of 253
Notication
{
"jsonrpc": "2.0",
"method": "signal.callback",
"params": {
"signal": [
{
"objectname.signalname": {
"arg1": 100,
"arg2": "cat"
}
},
{
"otherobject.othersignal": {
"foo": "bar"
}
}
]
}
}
Introspection API
Read metadata method
Metadata of available objects (methods, properties, signals) can be read out. The data is restricted by the client's
authenticated access level. A typical usage for metadata is to set up OSD menus, etc. The format of the metadata is
described here:API introspection data format.
Introspection API (recursive)
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 13 of 253
Request Response
{
"jsonrpc": "2.0",
"method": "introspect",
"params": {
"object": "foo",
"recursive": true,
"id": 1
}
}
{
"jsonrpc": "2.0",
"result": {
"object": "foo",
"methods": [
{
"name": "echo"
}
],
"more": ".... see API introspection data "
},
"id": 1
}
- or -
{
"jsonrpc": "2.0",
"method": "introspect",
"params": [
"foo",
true
],
"id": 1
}
Introspection API (non recursive)
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 14 of 253
Request Response
{
"jsonrpc": "2.0",
"method": "introspect",
"params": {
"object": "motors",
"recursive": false,
"id": 2
}
}
{
"jsonrpc": "2.0",
"result": {
"name": "motors",
"objects": [
{
"name": "motors.motor1"
},
{
"name": "motors.motor2"
},
{
"name": "motors.motor3"
}
]
},
"id": 2
}
- or -
{
"jsonrpc": "2.0",
"method": "introspect",
"params": [
"motors",
false
],
"id": 2
}
Property Type Required Comments
jsonrpc string
yes
2.0
method string
yes
introspect
params object {"object":
string}
no (default =
"")
"object": name of object to introspect (dot notation allowed),
default/empty will introspect everything. The object and string
notations are equivalents.
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 15 of 253
Property Type Required Comments
{"recursive":
bool}
no
(default=true)
recursive": if false then only object names are listed (one level).
This is convenient if you want to list collections of objects
id string | number
no Request identier
result object
yes The full format of the result is described here API Introspection
data format
error object
if error Error object - see JSON-RPC 2.0
Object changed signal
The introspect API provides asignal that triggers when new objects arrive, or when objects are removed. The name of
the signal is: modelupdated.(See sectionSignals on how to subscribe and unsubscribe to signals.)
Subscribe to the model updated signal
Request Response
{
"jsonrpc": "2.0",
"method": "signal.subscribe",
"params": {
"signal": "modelupdated"
},
"id": 2
}
{
"jsonrpc": "2.0",
"result": true,
"id": 2
}
Callback method on client side
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 16 of 253
Notication
{
"jsonrpc": "2.0",
"method": "signal.callback",
"params": {
"signal": [
{
"introspect.objectchanged": {
"object": "motors.motor1",
"newobject": true
}
}
]
}
}
Argument Type Decription
object string
Name of object
isnew bool
true: object is new, false: object is lost
File endpoints
Some objects provide endpoints for uploading or downloading various data types. For example, a warp grid can be
uploaded to the warp engine.The objects that provide end points are found in the documentation below under the File
endpoints headings.
To download a le from the projector, you must enter its URL. The URL is constructed from the following parts:
http://
Address of the projector. E.g: 192.168.1.100
/api
File endpoint. E.g: /image/processing/warp/file/transfer
This will give you a URL that looks like this: http://192.168.100/api/image/processing/warp/file/transfer
Entering this URL in a browser will trigger a download from the projector and save the current warp grid to your
download folder.
You can also use the curl program to do the same. E.g: curl -O -J http://api/image/processing/warp/file/
transfer
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 17 of 253
Note that not all endpoints supports downloading the current le. In those cases you need to specify which le to
download. E.g: http://192.168.1.100/api/image/processing/warp/file/transfer/warpgrid.xml
To upload a le to the projector, use the curl program, or some other tool that supports HTTP upload.To upload a
warp grid to the projector from your local drive, enter the following command:
curl -F [email protected] http://192.168.1.100/api/image/processing/warp/file/transfer
You can also specify -X POST to the command, but in this case that's implied.
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 18 of 253
Programmers guide
This section describes common tasks for controlling the projector. For example, selecting input source and adjusting
image properties.
Basic operation
This chapter describes basic operation such as powering on/off the projector.
Projector state
To get the current operation state from the projector, use the following command.
Request Response
{
"jsonrpc": "2.0",
"method": "property.get",
"params": {
"property": "system.state"
},
"id": 1
}
{
"jsonrpc": "2.0",
"result": "on",
"id": 1
}
The resulting value will be one of the following:
"boot" - the projector is booting up
"eco" - the projector is in ECO/power save mode
"standby" - the projector is in standby mode
"ready" - the projector is in ready mode
"conditioning" - the projector is warming up
"on" - the projector is on
"deconditioning" - the projector is cooling down
To be notied when the state changes, a subscription must be requested, as shown in the following example.
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 19 of 253
Request Response
{
"jsonrpc": "2.0",
"method": "property.subscribe",
"params": {
"property": "system.state"
},
"id": 2
}
{
"jsonrpc": "2.0",
"result": true,
"id": 2
}
When ever there is a change in the state, the server will notify the client as shown in the next example.
Notication
{
"jsonrpc": "2.0",
"method": "property.changed",
"params": {
"property": [
{
"system.state": "ready"
}
]
}
}
Power on
To power on the projector, issue the following request.
Request Response
{
"jsonrpc": "2.0",
"method": "system.poweron",
"params": {
"property": "system.state"
},
"id": 3
}
{
"jsonrpc": "2.0",
"result": null,
"id": 3
}
Notice that the result is null. This is not an error, it's just that the method does not return a proper result. If there
was an error, the response would contain an error member that contains information about the error that
Pulse API Reference Guide Version 1.7
Pulse API Reference Guide 20 of 253
  • Page 1 1
  • Page 2 2
  • Page 3 3
  • Page 4 4
  • Page 5 5
  • Page 6 6
  • Page 7 7
  • Page 8 8
  • Page 9 9
  • Page 10 10
  • Page 11 11
  • Page 12 12
  • Page 13 13
  • Page 14 14
  • Page 15 15
  • Page 16 16
  • Page 17 17
  • Page 18 18
  • Page 19 19
  • Page 20 20
  • Page 21 21
  • Page 22 22
  • Page 23 23
  • Page 24 24
  • Page 25 25
  • Page 26 26
  • Page 27 27
  • Page 28 28
  • Page 29 29
  • Page 30 30
  • Page 31 31
  • Page 32 32
  • Page 33 33
  • Page 34 34
  • Page 35 35
  • Page 36 36
  • Page 37 37
  • Page 38 38
  • Page 39 39
  • Page 40 40
  • Page 41 41
  • Page 42 42
  • Page 43 43
  • Page 44 44
  • Page 45 45
  • Page 46 46
  • Page 47 47
  • Page 48 48
  • Page 49 49
  • Page 50 50
  • Page 51 51
  • Page 52 52
  • Page 53 53
  • Page 54 54
  • Page 55 55
  • Page 56 56
  • Page 57 57
  • Page 58 58
  • Page 59 59
  • Page 60 60
  • Page 61 61
  • Page 62 62
  • Page 63 63
  • Page 64 64
  • Page 65 65
  • Page 66 66
  • Page 67 67
  • Page 68 68
  • Page 69 69
  • Page 70 70
  • Page 71 71
  • Page 72 72
  • Page 73 73
  • Page 74 74
  • Page 75 75
  • Page 76 76
  • Page 77 77
  • Page 78 78
  • Page 79 79
  • Page 80 80
  • Page 81 81
  • Page 82 82
  • Page 83 83
  • Page 84 84
  • Page 85 85
  • Page 86 86
  • Page 87 87
  • Page 88 88
  • Page 89 89
  • Page 90 90
  • Page 91 91
  • Page 92 92
  • Page 93 93
  • Page 94 94
  • Page 95 95
  • Page 96 96
  • Page 97 97
  • Page 98 98
  • Page 99 99
  • Page 100 100
  • Page 101 101
  • Page 102 102
  • Page 103 103
  • Page 104 104
  • Page 105 105
  • Page 106 106
  • Page 107 107
  • Page 108 108
  • Page 109 109
  • Page 110 110
  • Page 111 111
  • Page 112 112
  • Page 113 113
  • Page 114 114
  • Page 115 115
  • Page 116 116
  • Page 117 117
  • Page 118 118
  • Page 119 119
  • Page 120 120
  • Page 121 121
  • Page 122 122
  • Page 123 123
  • Page 124 124
  • Page 125 125
  • Page 126 126
  • Page 127 127
  • Page 128 128
  • Page 129 129
  • Page 130 130
  • Page 131 131
  • Page 132 132
  • Page 133 133
  • Page 134 134
  • Page 135 135
  • Page 136 136
  • Page 137 137
  • Page 138 138
  • Page 139 139
  • Page 140 140
  • Page 141 141
  • Page 142 142
  • Page 143 143
  • Page 144 144
  • Page 145 145
  • Page 146 146
  • Page 147 147
  • Page 148 148
  • Page 149 149
  • Page 150 150
  • Page 151 151
  • Page 152 152
  • Page 153 153
  • Page 154 154
  • Page 155 155
  • Page 156 156
  • Page 157 157
  • Page 158 158
  • Page 159 159
  • Page 160 160
  • Page 161 161
  • Page 162 162
  • Page 163 163
  • Page 164 164
  • Page 165 165
  • Page 166 166
  • Page 167 167
  • Page 168 168
  • Page 169 169
  • Page 170 170
  • Page 171 171
  • Page 172 172
  • Page 173 173
  • Page 174 174
  • Page 175 175
  • Page 176 176
  • Page 177 177
  • Page 178 178
  • Page 179 179
  • Page 180 180
  • Page 181 181
  • Page 182 182
  • Page 183 183
  • Page 184 184
  • Page 185 185
  • Page 186 186
  • Page 187 187
  • Page 188 188
  • Page 189 189
  • Page 190 190
  • Page 191 191
  • Page 192 192
  • Page 193 193
  • Page 194 194
  • Page 195 195
  • Page 196 196
  • Page 197 197
  • Page 198 198
  • Page 199 199
  • Page 200 200
  • Page 201 201
  • Page 202 202
  • Page 203 203
  • Page 204 204
  • Page 205 205
  • Page 206 206
  • Page 207 207
  • Page 208 208
  • Page 209 209
  • Page 210 210
  • Page 211 211
  • Page 212 212
  • Page 213 213
  • Page 214 214
  • Page 215 215
  • Page 216 216
  • Page 217 217
  • Page 218 218
  • Page 219 219
  • Page 220 220
  • Page 221 221
  • Page 222 222
  • Page 223 223
  • Page 224 224
  • Page 225 225
  • Page 226 226
  • Page 227 227
  • Page 228 228
  • Page 229 229
  • Page 230 230
  • Page 231 231
  • Page 232 232
  • Page 233 233
  • Page 234 234
  • Page 235 235
  • Page 236 236
  • Page 237 237
  • Page 238 238
  • Page 239 239
  • Page 240 240
  • Page 241 241
  • Page 242 242
  • Page 243 243
  • Page 244 244
  • Page 245 245
  • Page 246 246
  • Page 247 247
  • Page 248 248
  • Page 249 249
  • Page 250 250
  • Page 251 251
  • Page 252 252
  • Page 253 253

Barco UDX-W40 FLEX User guide

Type
User guide

Ask a question and I''ll find the answer in the document

Finding information in a document is now easier with AI