首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Nexus One与Arduino + BlueSmirf的接口

Android Nexus One与Arduino + BlueSmirf的接口
EN

Stack Overflow用户
提问于 2010-04-10 04:44:16
回答 2查看 4.2K关注 0票数 11

我是个新手,所以请耐心听我说--我真的很感谢你的帮助。

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

void setup(){ Serial.begin(115200);int i;}

void loop(){Serial.print("Hello Bluetooth!");delay(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

ect...

这里是代码,我试着只放置相关的代码,但如果你需要更多,请让我知道:

代码语言:javascript
复制
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...

这里有更多相关的代码:

代码语言:javascript
复制
        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(缓冲区)。我知道字节是一个整数,所以我尝试通过蓝牙发送整数,因为" bytes“是一个整数,但它仍然没有意义。

几乎可以看出发送的波特率不正确。这是真的吗?

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

EN

回答 2

Stack Overflow用户

发布于 2010-04-11 23:59:53

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

干杯

票数 1
EN

Stack Overflow用户

发布于 2010-05-02 04:07:25

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

代码语言:javascript
复制
bytes = inStream.read(buffer);

…您的消息将在buffer的第一个bytes字节中找到(假设其他内容都是正确的)。您可以将它们转换为字符串,如下所示:

代码语言:javascript
复制
String message = new String(buffer, 0, bytes);

我在这里介绍了一些事情(编码,连接多个缓冲区,等等),但这应该能让你入门。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2610783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档