【问题标题】:Interfacing Android Nexus One with Arduino + BlueSmirf将 Android Nexus One 与 Arduino + BlueSmirf 连接
【发布时间】:2010-04-09 20:44:16
【问题描述】:

我对这一切有点陌生,所以请耐心等待 - 非常感谢您的帮助。

我正在尝试将 Android Nexus One 与连接到 BlueSmirf 的 arduino (Duemilanove) 链接。我有一个程序,它只是将字符串“Hello Bluetooth”输出到 BlueSmirf 连接的任何设备。这是 Arduino 程序:

无效设置(){ 序列号.开始(115200); 诠释我; }

void loop(){Serial.print("Hello Bluetooth!"); 延迟(1000); }

一个我的电脑BT终端我可以看到消息并且连接没有问题。问题出在我的android代码上。我可以使用 android 连接到设备,但是当我查看日志时,它没有显示“Hello Bluetooth”。这是调试日志:


04-09 16:27:49.022:错误/BTArduino(17288):FireFly-2583 已连接
04-09 16:27:49.022:错误/BTArduino(17288):开始连接套接字
04-09 16:27:55.705: 错误/BTArduino(17288): 收到: 16
04-09 16:27:56.702: 错误/BTArduino(17288): 收到: 1
04-09 16:27:56.712: 错误/BTArduino(17288): 收到: 15
04-09 16:27:57.702: 错误/BTArduino(17288): 收到: 1
04-09 16:27:57.702: 错误/BTArduino(17288): 收到: 15
04-09 16:27:58.704: 错误/BTArduino(17288): 收到: 1
04-09 16:27:58.704:错误/BTArduino(17288):收到:15

等等……

这里是代码,我试图只放相关代码,但如果您需要更多,请告诉我:

private class ConnectThread extends Thread {
    private final BluetoothSocket mySocket;
    private final BluetoothDevice myDevice;

    public ConnectThread(BluetoothDevice device) {
        myDevice = device;
        BluetoothSocket tmp = null;
        try {
            tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
        } catch (IOException e) {
            Log.e(TAG, "CONNECTION IN THREAD DIDNT WORK");
        }
        mySocket = tmp;
    }
    public void run() {
        Log.e(TAG, "STARTING TO CONNECT THE SOCKET");
        InputStream inStream = null;
        boolean run = false;
        //...More Connection code here...

更相关的代码在这里:

        byte[] buffer = new byte[1024];
        int bytes;

        // handle Connection
        try {
            inStream = mySocket.getInputStream();
            while (run) {
                try {
                    bytes = inStream.read(buffer);
                    Log.e(TAG, "Received: " + bytes);
                } catch (IOException e3) {
                    Log.e(TAG, "disconnected");
                }
            }

我正在读取字节 = inStream.read(buffer)。我知道字节是一个整数,所以我尝试通过蓝牙发送整数,因为“字节”是一个整数,但它仍然没有意义。

似乎发送的波特率不正确。这是真的吗?

任何帮助将不胜感激。非常感谢。

【问题讨论】:

  • 改用 writeln/readln 组合试试。

标签: android bluetooth arduino bluesmirf


【解决方案1】:

你看到这个项目了吗? http://code.google.com/p/android-arduino/

干杯

【讨论】:

    【解决方案2】:

    read() 返回它成功读入缓冲区的字节数。因此,在这行代码中:

    bytes = inStream.read(buffer);
    

    ...您的消息将在buffer 的第一个bytes 字节中找到(假设其他所有内容都正确)。您可以像这样将它们转换为字符串:

    String message = new String(buffer, 0, bytes);
    

    我在这里略过了很多事情(编码、连接多个缓冲区等),但这应该可以帮助您入门。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多