I'm relatively new to the whole NXT world, but I am about to start using it for my final year university project.

The general idea of our project involves multiple NXT robots (up to about 3 robots) that will be doing their own tasks as well as a PC that provides some information to the robots. The robots themselves need to be able to "talk" to each other via Bluetooth (i.e., send AND receive with any of the other two). As well, they need to be able to talk to the PC.

From what I have read so far, it seems that an NXT brick can only connect with one other DEVICE at a time, be it a PC or NXT brick. Is this right to think?

Also, a brick, at any one time, can send AND receive simultaneously. However sends can be to multiple devices, while receives are limited to one device. Is this also correct?

Finally, the biggest problem I have is with the actual programming environment. While I am personally more adept with Java, I have come to the understanding that for involved projects, RobotC might be the better choice than NXJ, especially for Bluetooth communication. Is this a correct assumption to make?

Hi,
The limitations on Bluetooth connections come from the underlying Bluetooth module that are the same for all NXT environments. They relate to how connections can be established. Once a connection has been established it can communicate in both directions (it can send and receive data).

The limitation is that each NXT can establish up to 3 outbound connections. That is it can initiate the connection by making a connect request. However it can only establish a single inbound connection, that is it can only listen for and accept a single connection made to it. All 4 connections can operate at the same time.

This means that for instance a single nxt can connect to up to 3 other nxt's or PC's, but that it can only accept a single connection made to it.

deeps wrote:Finally, the biggest problem I have is with the actual programming environment. While I am personally more adept with Java, I have come to the understanding that for involved projects, RobotC might be the better choice than NXJ, especially for Bluetooth communication. Is this a correct assumption to make?

If you prefer Java you should stick with leJOS NXJ. The leJOS NXJ API is one of the best out there. I haven't done a side-by-side comparison with RobotC but there's probably nothing RobotC lets you do that NXJ can't. In fact NXJ probably lets you do things you can't do with RobotC, such as play standard .wav files. RobotC is well done, but if you are into Java then give leJOS NXJ a try first.

Out of curiosity, how did you come to understand that RobotC was better for more involved projects?