My sketch looks like this:
Code: Select all
/*
XBee Communication Prototype
XBee API Library by Daniel Shiffman and Rob Faludi: http://www.faludi.com/code/xbee-api-library-for-processing/
Sample XBee communication code adapted from Tom Igoe: http://www.tigoe.net/pcomp/code/category/Processing/148
*/
//import the xbee and serial libraries:
import xbee.*;
import processing.serial.*;
// set up Xbee parameters:
Serial port;
XBeeReader xbee;
int rssi = 0; // received signal strength
int address = 0; // sender's address
int samples = 0; // total number of samples
int[] analog; // values from the analog I/O pins
void setup() {
// set up xbee
port = new Serial(this, Serial.list()[0], 9600);
xbee = new XBeeReader(this, port);
xbee.startXBee();
}
void draw() {}
// called every time an XBee event is received: every 2s in the case of the Tweet A Watt
public void xBeeEvent(XBeeReader xbee) {
// Grab a frame of data
XBeeDataFrame data = xbee.getXBeeReading();
println("");
println("LOOP " + hour() + ":" + minute() + ":" + second());
// Get the transmitter address
address = data.getAddress16();
println("API ID: " + address);
// Get the RSSI
rssi = data.getRSSI();
println("RSSI: " + rssi);
// Get total number of samples
samples = data.getTotalSamples();
println("Total Samples: " + samples);
// Output the Analog readings for each sample
// ONLY GETS FIRST SAMPLE - How do I access all samples?
for (int i=0; i < samples; i++) {
analog = data.getAnalog(i);
print("[");
for (int j=0; j < analog.length; j++) {
print(analog[j]);
if (j < analog.length - 1) { print(", "); }
}
print("]");
if (i < samples - 1) { print(", "); }
else { println(""); }
}
}
Code: Select all
LOOP 10:37:59
API ID: 1
RSSI: -61
Total Samples: 19
[512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1], [512, -1, -1, -1, 688, -1]
LOOP 10:38:1
API ID: 1
RSSI: -61
Total Samples: 19
[503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1], [503, -1, -1, -1, 561, -1]
LOOP 10:38:3
API ID: 1
RSSI: -62
Total Samples: 19
[495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1], [495, -1, -1, -1, 411, -1]
LOOP 10:38:5
API ID: 1
RSSI: -62
Total Samples: 19
[493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1], [493, -1, -1, -1, 271, -1]
In the XBee API Library, the getAnalog() and getAnalog(n) functions are defined as follows:
Code: Select all
getAnalog() – returns an array of integers that represents the current state of each analog channel with -1 indicating that the channel is not configured for analog. Use this when there is only one sample per frame.
getAnalog(int n) – returns the nth sample of analog data as an array of integers with -1 indicating that the channel is not configured for analog.
I've also tried reading the Serial packet directly without using the XBee API Library (with reference to http://www.tigoe.net/pcomp/code/category/Processing/8, http://processing.org/reference/librari ... erial.html, and http://ssdl.stanford.edu/ssdl/images/st ... manual.pdf, but my lack of experience in this area makes this a bit of a non-starter.
If anyone familiar with the XBee packet, the XBee API Library, or reading Serial data in Processing can assist, it would be greatly appreciated. I expect that the data is there, I'm just not accessing it correctly.
If I've left out anything that would be helpful, please let me know. Thanks in advance for your help.