===== Receive XBee packets in API mode (basics with serial) =====
/*
* Receive XBee packets in API mode (basics with serial)
* from http://www.pobot.org/XBee-API-pour-pilotage-a-distance.html
*/
import processing.serial.*;
import xbee.*;
Serial port;
void setup()
{
println(Serial.list());
port = new Serial(this, Serial.list()[0], 9600);
port.write("+++");
delay(1100);
port.write("ATRE,ID1111,MY1234,DH0,DL0,CN\r\n");
}
void draw()
{
while (port.available() != 0) {
String val = hex(port.readChar());
if (val.equals("007E")) {
println();
}
print(val);
print(" ");
}
}
===== Receive XBee packets in API mode with xbee-api =====
/*
* Receive XBee packets in API mode with xbee-api
* XBee#2 send values from an analog sensor to XBee#1
*
* From http://code.google.com/p/xbee-api/wiki/Processing
*
* Configurations :
* XBEE#1 : ATID1234, ATAP2
* XBEE#2 : ATID5678, ATDL1234, ATAP2
*/
import processing.serial.*;
import java.util.concurrent.*;
import java.util.Queue; // avoid Queue error
XBee xbee;
Queue queue = new ConcurrentLinkedQueue();
boolean message;
XBeeResponse response;
void setup() {
try {
PropertyConfigurator.configure(dataPath("")+"log4j.properties"); // optional.set up logging
xbee = new XBee();
xbee.open("/dev/ttyUSB0", 9600); // replace with your COM port
xbee.addPacketListener(new PacketListener() {
public void processResponse(XBeeResponse response) {
queue.offer(response);
}
}
);
}
catch (Exception e) {
System.out.println("XBee failed to initialize");
e.printStackTrace();
System.exit(1);
}
}
void draw() {
try {
readPackets();
}
catch (Exception e) {
e.printStackTrace();
}
}
void readPackets() throws Exception {
while ((response = queue.poll()) != null) {
// we got something!
try {
RxResponseIoSample ioSample = (RxResponseIoSample) response;
println("We received a sample from " + ioSample.getSourceAddress());
if (ioSample.containsAnalog()) {
println("Sensor port 20 (10 bits) : " +
ioSample.getSamples()[0].getAnalog0());
}
}
catch (ClassCastException e) {
// not an IO Sample
}
}
}