我需要使用 Android ble 类发送以下结构,但不幸的是 java 不支持结构类型,我必须将我的结构转换为类。实际上我可以创建一个类似结构的类,但我的大问题是,java 也不支持 uint8 和 uint32 类型。
我在 BluethootGattChracteristic 下找到了 Format_UINT32 和 Format_UINT8 方法,但它无法运行我的代码。我总是使用以下代码将相同的数组发送到目标设备
我的标准 C 结构如下
struct test{
Time1 uint32;
Time2 uint32;
Time3 uint32;
Time4 uint32;
Time5 uint32;
Time6 uint32;
Speed uint8;
Speed2 uint8;
Speed3 uint8;
}
我在 java 中创建相同的类型,如下所示
long Time1= 4000000000L;
long Time2= 1500L;
long Time3= 0L;
long Time4= 0L;
long Time5= 0L;
long Time6= 0L;
int speed = 01;
int speed2 = 02;
int speed3 = 04;
然后我尝试用这样的 ble write 方法发送这些数据;
Time1= BluetoothGattCharacteristic.FORMAT_UINT32;
Time2= BluetoothGattCharacteristic.FORMAT_UINT32;
Time3= BluetoothGattCharacteristic.FORMAT_UINT32;
Time4= BluetoothGattCharacteristic.FORMAT_UINT32;
Time5= BluetoothGattCharacteristic.FORMAT_UINT32;
Time6= BluetoothGattCharacteristic.FORMAT_UINT32;
speed= BluetoothGattCharacteristic.FORMAT_UINT8;
speed2= BluetoothGattCharacteristic.FORMAT_UINT8;
speed3= BluetoothGattCharacteristic.FORMAT_UINT8;
ByteBuffer buffer = ByteBuffer.allocate(27);
buffer.put((byte)Time1);
buffer.put((byte)Time2);
buffer.put((byte)Time3);
buffer.put((byte)Time4);
buffer.put((byte)Time5);
buffer.put((byte)Time6);
buffer.put((byte)speed);
buffer.put((byte)speed2);
buffer.put((byte)speed3);
buffer.order(ByteOrder.LITTLE_ENDIAN);
charac.setValue(buffer.array());
这段代码以某种方式发送数据数组,如 0x1414141411111110000 ……但这是完全错误的。
如何解决这个问题?或者我怎样才能创建一个像我上面的结构的类?
慕斯王
相关分类