Table of Contents
Until now, we have only used numerical variables, like headPan.val. This, of course, is not sufficient to transmit images or sounds. Some devices, like for example camera, micro or speaker in Aibo, are binary devices. In that case, the device.val variable is not a numerical value but a binary value.
You might have already tried to evaluate one of those binary variables:
camera; [139464] BIN 5347 jpeg 208 160 .................5347 bytes................. micro; [139464] BIN 2048 wav 2 16000 16 1 .................2048 bytes.................
URBI simply prefixes the binary data with a header starting with the keyword BIN, followed by the size (in octets) and a keyword indicating the type of the data. Optional parameters, like the size of the image or the sampling rate and stero/mono status of a sound might follow. Then, after a carriage return, the actual binary data is returned (displayed above as a series of dots: ....), which might confuse a telnet client but not a software client or URBI Remote[7].
What we call a "software client" is a client or a component written in a language like C++ or Java, as described in detail in the chapter "The liburbi in C++". This is the normal way of handling binary data when you want to do complex signal processing with URBI.