Android和乐高Mindstorm NXT之间的蓝牙连接
有人知道如何在Android和乐高Mindstorm NXT之间建立蓝牙连接吗? 两个NXT之间的连接工作正常。但另一种连接类型不太容易。Android和乐高Mindstorm NXT之间的蓝牙连接,android,bluetooth,lego,mindstorms,nxt,Android,Bluetooth,Lego,Mindstorms,Nxt,有人知道如何在Android和乐高Mindstorm NXT之间建立蓝牙连接吗? 两个NXT之间的连接工作正常。但另一种连接类型不太容易。 我正在使用LeJOS固件0.85和Android SDK工具(2.2 Froyo)。因此我已经解决了它,并将展示它的所有工作原理,因为我看到很多人都有这方面的问题 该类包括4个功能: 如果在->enableBT()之前未启用蓝牙,则启用蓝牙功能 连接到2个NXT->connectToNXTs() 将消息写入其中一个nxt->writeMessage(字节消
我正在使用LeJOS固件0.85和Android SDK工具(2.2 Froyo)。因此我已经解决了它,并将展示它的所有工作原理,因为我看到很多人都有这方面的问题 该类包括4个功能:
- 如果在->enableBT()之前未启用蓝牙,则启用蓝牙功能
- 连接到2个NXT->connectToNXTs()
- 将消息写入其中一个nxt->writeMessage(字节消息,字符串nxt)
- 从nxt之一读取消息->读取消息(字符串nxt)
Boolean isrunning = true;
// Main loop
while (true)
{
LCD.drawString(waiting,0,0);
LCD.refresh();
// Listen for incoming connection
NXTConnection btc = Bluetooth.waitForConnection();
btc.setIOMode(NXTConnection.RAW);
LCD.clear();
LCD.drawString(connected,0,0);
LCD.refresh();
// The InputStream for read data
DataInputStream dis = btc.openDataInputStream();
// Loop for read data
while (isrunning) {
Byte n = dis.readByte();
LCD.clear();
LCD.drawInt(n, 4, 4);
}
dis.close();
// Wait for data to drain
Thread.sleep(100);
LCD.clear();
LCD.drawString(closing,0,0);
LCD.refresh();
btc.close();
LCD.clear();
}
希望这能帮助其他人 我发现有一个文档非常有用
github上的MINDdroid软件包是一个很好的起点。您是否成功地首先将Android和LEGO Mindstorm NXT配对?请参阅下面我的答案,了解它的工作原理。在第一次运行或第一次连接到NXT时,智能手机将自动与NXT配对,并要求您从NXT中获取密钥以与之配对。我在HTC Desire上遇到了createRfcommSocketToServiceRecord问题,如果您计划编辑代码,您可能希望了解这些问题。请看(有人留下评论说,您应该使用OutputStream vs OutputStreamWriter作为OutputStream编码到unicode,并且对于大于127的VAL将中断…不知道这意味着什么,但删除该答案这确实帮助了我。如果我能多次投票支持您,我会的!
Boolean isrunning = true;
// Main loop
while (true)
{
LCD.drawString(waiting,0,0);
LCD.refresh();
// Listen for incoming connection
NXTConnection btc = Bluetooth.waitForConnection();
btc.setIOMode(NXTConnection.RAW);
LCD.clear();
LCD.drawString(connected,0,0);
LCD.refresh();
// The InputStream for read data
DataInputStream dis = btc.openDataInputStream();
// Loop for read data
while (isrunning) {
Byte n = dis.readByte();
LCD.clear();
LCD.drawInt(n, 4, 4);
}
dis.close();
// Wait for data to drain
Thread.sleep(100);
LCD.clear();
LCD.drawString(closing,0,0);
LCD.refresh();
btc.close();
LCD.clear();
}