for loop: connect/do something/disconnect
Posted: 01:36, 04 Nov 2015
Hi,
I want to get data from several (generally unknown number) of rfduinos.
Found this thread on the forum: viewtopic.php?t=1473#p3838
According to the answer:
I struggled for several days to make it work.
Results:
1. For some reason can only read data from one device most of the time;
2. If I have N devices on the list - the app reads data from the device N times (not one time from each device as I want to);
3. Sometimes the reading suddenly switches (I have the loop executed each second) to another device (this behaviour very rare - only saw once).
4. Getting connect error: "null" - this happens often.
Please help with functional code.
Details of my buggy code are below:
Code:
I want to get data from several (generally unknown number) of rfduinos.
Found this thread on the forum: viewtopic.php?t=1473#p3838
According to the answer:
another point to note - you can only have a single device connected at any time; if you want to connect to both, you'll need to build some fancy logic to connect/do something/disconnect and move along to another device. great if you want to cycle through a few devices and collect information from them
I struggled for several days to make it work.
Results:
1. For some reason can only read data from one device most of the time;
2. If I have N devices on the list - the app reads data from the device N times (not one time from each device as I want to);
3. Sometimes the reading suddenly switches (I have the loop executed each second) to another device (this behaviour very rare - only saw once).
4. Getting connect error: "null" - this happens often.
Please help with functional code.
Details of my buggy code are below:
Code:
Code: Select all
for (var i = 0; i < app.activeDevices.length; i++)
{
app.connect(app.activeDevices[i]);
app.measure(app.device);
}
- activeDevices - stores names for devices to connect to - it populates correctly;
- connect(deviceName) is function from rfduino LED On/Off example (includes rfduinoble.close() in the beginning)
- measure(device) - is my function that makes graphical display of the data - works properly for single device.
Code: Select all
connect: function(deviceName)
{
rfduinoble.close();
//app.showMessage("Connecting...");
setTimeout(function()
{
rfduinoble.connect(
deviceName,
function(device)
{
//app.showMessage(deviceName + " connected");
app.device = device;
},
function(errorCode)
{
app.showMessage("Connect error: " + errorCode);
});
},
500);
},