In my app, the data is all available at the same time. The data goes to a wireless module that takes it in a specific packetized form. There is a header, control byes address, command bytes, data and a checksum at the end of the packet. If there is too long of a time between bytes in the packet the destinations node may time out. The system will be sending packets to many different nodes in the Wireless Mesh network and all of the nodes will get all of the packets but only act on the ones with it's specific address. The longer between each byte the longer the timeout in the destination nodes needs to be. If the transmitter sends them all back to back I do not need to mess with the default timeout settings in the destination nodes. Right now I only have a total of 3 nodes for development, but eventually there may be hundreds and then more efficient packet spacing may be important. So basically it is more bandwidth efficient to have no delay between bytes.
Also I may have to deal with system power in the future, and the longer the TX is on the more power it uses. A TX time of 200ms is almost 10 times more power than a TX time of 20ms. With only 20 bytes of data at a time , with most of the data is constant values, I don't think memory will be an issue. On Tuesday, November 25, 2014 4:33:12 PM UTC-8, William Hermans wrote: > > John, > > I think the bigger issue is *why* would you do this ? If you're going to > send the data out the serial port anyhow, why not just send the data as its > available ? > > How about an explanation as to why you would do this, and how you would > use it in an application. I will however say this. What you're doing is > terribly inefficient on memory usage. > > On Tue, Nov 25, 2014 at 4:30 PM, John Mladenik <[email protected] > <javascript:>> wrote: > >> I only showed the individual write as an example that also does not work, >> it only performs the very first serialWrite and ignores the rest. >> Your example does work with various delays between each byte, but this >> will work for me. I might still use the: >> >> b.serialWrite(port, [ >> dio6Hi[0] ,dio6Hi[1] ,dio6Hi[2] ,dio6Hi[3] ,dio6Hi[4] ,dio6Hi[5] >> ,dio6Hi[6] ,dio6Hi[7] ,dio6Hi[8] ,dio6Hi[9], >> dio6Hi[10],dio6Hi[11],dio6Hi[12],dio6Hi[13],dio6Hi[14], >> dio6Hi[15],dio6Hi[16],dio6Hi[17],dio6Hi[18],dio6Hi[19] ]); >> >> command since it writes the bytes consecutive with no delay between each >> byte and so is a little more efficient. At 9600 baud it took just over >> 20ms to send out the data without the delays between bytes and just under >> 200ms with the delays. >> >> Thanks for the quick response. I learn something every time you post :) >> >> >> On Tuesday, November 25, 2014 3:14:08 PM UTC-8, Jason Kridner wrote: >>> >>> On Tue, Nov 25, 2014 at 4:23 PM, John Mladenik <[email protected]> >>> wrote: >>> > Does anyone know an easier way to send a packet of hex data out the >>> serial >>> > port. Here is what works for me >>> > >>> > var dio6Hi = [0x7E, 0x00, 0x10, 0x17, 0x01, 0x00, 0x13, 0xA2, >>> 0x00, >>> > 0x40, 0xC0, 0xA9, 0x99, 0xFF, 0xFE, 0x02, 0x44, 0x36, 0x05, 0x72 ]; >>> > >>> > b.serialWrite(port, [ >>> > dio6Hi[0] ,dio6Hi[1] ,dio6Hi[2] ,dio6Hi[3] ,dio6Hi[4] >>> ,dio6Hi[5] >>> > ,dio6Hi[6] ,dio6Hi[7] ,dio6Hi[8] ,dio6Hi[9], >>> > >>> > dio6Hi[10],dio6Hi[11],dio6Hi[12],dio6Hi[13],dio6Hi[14], >>> dio6Hi[15],dio6Hi[16],dio6Hi[17],dio6Hi[18],dio6Hi[19] >>> > ]); >>> > >>> > This will write all of the data in variable dio6Hi out of the UART >>> in >>> > order that I want. But I would like to do this or something like >>> it: >>> > >>> > for (var i = 0; i < dio6Hi.length; i++) { >>> > b.serialWrite(port, [dio6Hi[i]] ); >>> > } >>> > >>> > or even this: >>> > >>> > b.serialWrite(port, [dio6Hi[0]] ); >>> > b.serialWrite(port, [dio6Hi[1]] ); >>> > b.serialWrite(port, [dio6Hi[2]] ); >>> > >>> > . >>> > . >>> > . >>> > b.serialWrite(port, [dio6Hi[18]] ); >>> > b.serialWrite(port, [dio6Hi[19]] ); >>> > >>> > Either of these do not work they only send out the first byte in >>> dio[0] and >>> > then stop. Is there any way with the serialWrite function to index >>> the >>> > variable with a "for" or other command in order to simplify sending >>> out an >>> > array of numbers? >>> >>> I believe your primary issue here is that the calls to b.serialWrite() >>> are asynchronous and you aren't waiting for the writes to complete. >>> I'm not really sure why you'd want to have individual calls to write >>> each byte, but you could try something like: >>> >>> var i = 0; >>> mySerialWrites(); >>> function mySerialWrites() { >>> if(i < dio6Hi.length) { >>> b.serialWrite(port, [dio6Hi[i]], mySerialWrites); >>> i++; >>> } >>> } >>> >>> I haven't tested this, but I think it might be your issue. Let us know. >>> >>> > >>> > -- >>> > For more options, visit http://beagleboard.org/discuss >>> > --- >>> > You received this message because you are subscribed to the Google >>> Groups >>> > "BeagleBoard" group. >>> > To unsubscribe from this group and stop receiving emails from it, send >>> an >>> > email to [email protected]. >>> > For more options, visit https://groups.google.com/d/optout. >>> >> -- >> For more options, visit http://beagleboard.org/discuss >> --- >> You received this message because you are subscribed to the Google Groups >> "BeagleBoard" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
