【问题标题】:Receive 32 bits in Android Studio在 Android Studio 中接收 32 位
【发布时间】:2017-05-14 10:20:12
【问题描述】:

我使用 Nordic Semiconductor nRF52 在我的 Android 应用程序上发送 32 位值,但并非每次都有效。 在 nRF52 上,我发送一个 4 字节的数组。

例如,当我发送 12345678 时,我在电话上收到 12345678:没关系 当我发送 24 时,也可以。 但是当我发送 7 或 107 时,它不起作用。

你知道为什么吗?

在 Android 应用上,我会这样做:

@Override
    public void onCharacteristicNotified(final BluetoothGatt gatt, final BluetoothGattCharacteristic characteristic) {
        int data = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT32, 0);

        String dataHexadecimal = Integer.toHexString(data);
        byte[] value = hexStringToByteArray(dataHexadecimal);

        int valeurFinale = 0;
        valeurFinale = value[3]*1000000 + value[2]*10000 + value[1]*100 + value[0];

        ControlBlinkyActivity.txtSiReception.setText("Reception : " + String.valueOf(valeurFinale));

        mCallbacks.onDataReceived(data = 1);
    }
};

【问题讨论】:

  • 可能是因为它需要 32 位输入,而不是 7 位
  • valeurFinale = value[3]*1000000 + value[2]*10000 + value[1]*100 + value[0];。这不是 32 位整数的四个字节的构建方式。而且您不需要介于两者之间的十六进制表示。但是,如果您想以这种方式继续,那么也将值设为十六进制。比如 value[3]*0x1000000 等等。
  • String dataHexadecimal。记录该字符串,以便查看输入了哪些四个字节。您只需要将它们按您知道的不同顺序放置。
  • 'Doesn't work"' 不是问题描述。这段代码没有正确接收任何 32 位整数,更不用说 12345678 或 24。data 到底有什么问题?最初收到它?为什么你要摆弄那些不正确的代码?
  • 您确定 int 数据不包含正确的值,并且您必须将 big endian 更改为 little endian 左右?

标签: java android


【解决方案1】:

这是我的功能代码:

@Override
    public void onCharacteristicNotified(final BluetoothGatt gatt, final BluetoothGattCharacteristic characteristic) {

        int data = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT32, 0);
        data = swap(data);
        String dataHexadecimal = Integer.toHexString(data);

        byte[] value = {0,0,0,0};
        value = hexStringToByteArray(dataHexadecimal);

        int finalValue = value[0]*1000000 +  value[1]*10000 +  value[2]*100 +  value[3];

        ControlBlinkyActivity.txtSiReception.setText("Reception : " + String.valueOf(valeurRecue));
        mCallbacks.onDataReceived(data = 1);
}

感谢所有帮助过我的人!

【讨论】:

    猜你喜欢
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 2013-12-17
    • 2015-12-24
    • 2014-12-17
    • 2018-06-25
    相关资源
    最近更新 更多