Skip to content
4ntoine edited this page Dec 12, 2011 · 6 revisions

Now it is implemented in object-oriented style, so use message object to perform command.

Messages

See name.antonsmirnov.firmata.message package for the message types.

// ... (serial init)
Firmata firmata = new Firmata(serial);

// implement all messages from the board listener
firmata.setListener(new Firmata.Listener() {
    public void onAnalogMessageReceived(AnalogMessage message) {}
    public void onDigitalMessageReceived(DigitalMessage message) {}
    public void onFirmwareVersionMessageReceived(FirmwareVersionMessage message) {}
    public void onProtocolVersionMessageReceived(ProtocolVersionMessage message) {}
    public void onSysexMessageReceived(SysexMessage message) {}
    public void onStringSysexMessageReceived(StringSysexMessage message) {}
    public void onUnknownByteReceived(int byteValue) {}
});

// .. or extend Stub to override few methods only
firmata.setListener(new Firmata.StubListener() {
     public void onSysexMessageReceived(SysexMessage message) {
         // do something
     }
});

// send commands to the board
firmata.send(new SetPinModeMessage(pin, SetPinModeMessage.PIN_MODE.PWM.getMode()));
firmata.send(new AnalogMessage(pin, value));

Message factories

Use concrete name.antonsmirnov.firmata.message.factory.MessageFactory inheriters to build commands with validating against concrete Arduino board:

MessageFactory board = new Duemilanove(); // Arduino Duemilanove board
final int invalid_pin = 1;
firmata.send(board.pinMode(invalid_pin, SetPinModeMessage.PIN_MODE.PWM.getMode()));

In case of invalid arguments (pins, values, inaccording pin mode and operation) you'll get MessageValidationException: name.antonsmirnov.firmata.message.factory.MessageValidationException: Allowed analog out (PWM) pins are [3, 5, 6, 9, 10, 11]

Tests

See tests as usage examples.

Clone this wiki locally