0

我有一个安装了 RooTooth 的 iRobot,它是一个蓝牙到串行转换器。据说它的操作就像一个串行端口,并且应该这样接收数据。我已经能够使用终端程序通过串行电缆直接向它发送串行命令,并且工作正常。

我还可以使用我编写的应用程序将命令从手机发送到正在监视传入蓝牙命令的计算机,并且它会完全按照预期接收它们。

但是,当我将它从手机发送到 rootooth 时,什么也没有发生。我发送命令的方式有问题吗?下面显示的是我的做法:

这是在处理程序中:

        case SUCCESS_CONNECT:
            ConnectedThread connectedThread = new ConnectedThread((BluetoothSocket)msg.obj);
            String s = "128 131";
            byte[] command = s.getBytes();
            connectedThread.write(command);
            Toast.makeText(getApplicationContext(), s, 0).show();

            s = "137 0 100 128 0";
            byte[] command1 = s.getBytes();
            connectedThread.write(command1);
            Toast.makeText(getApplicationContext(), s, 0).show();

这是我的 write() 函数

        public void write(byte[] bytes) {
            Log.i(tag, "In write");
            try {
                mmOutStream.write(bytes);
            } catch (IOException e) { }
        }

问题一定是格式,不是吗?任何有经验的人在这里,您的帮助将不胜感激!

最近我尝试过这个:

            String [] s = new String[2];
            s[0] = "128";
            s[1] = "131";
            for(int i = 0; i < s.length; i++){
                byte[] command = s[i].getBytes();
                connectedThread.write(command);
                Thread.yield();
            }

            String [] t = new String[5];
            t[0] = "137";
            t[1] = "0";
            t[2] = "100";
            t[3] = "128";
            t[4] = "0";

            for(int i = 0; i < t.length; i++){
                byte[] command = t[i].getBytes();
                connectedThread.write(command);
                Thread.yield();
            }

我也试过这个最近的版本,包括一个“/n”字符串,但也没有做任何事情。

4

1 回答 1

0

对于碰巧遇到此问题的任何其他人,事实证明,来自 OutputStream 的 .write() 将采用整数,即使它说它只会采用 byte[]。为每个命令创建一个整数数组并通过 int 发送它们最终工作。无需包含空格或换行符。

于 2013-11-06T04:14:50.780 回答