亚历杭德罗(Alejandro Monsalve Krause)
我想通过串行蓝牙从Arduino向Android应用程序发送一个数字。
我设法在C ++中使用以下代码发送了1个字节:
int number = 255;
SerialBT.write((uint8_t*)&number,1);
SerialBT.flush();
这可以正常工作,但是由于Arduino不允许int16或任何其他大于1字节的指针,因此我需要将数字“压缩”为8位部分,并一次发送每个“压缩”。
例如,如果我需要发送数字“ 725”(二进制为10 1101 0101),则需要发送2个字节:
如何将数字分为“ 8位块”?
奥克都
就像是:
uint16_t number = 1000;
uint8_t lByte = number & 0b11111111;
uint8_t hByte = number >> 8;
也有lowByte()
和highByte()
功能可用,但我不知道他们的具体行为。
但是,为什么不使用SerialBT.print()
或SerialBT.println()
将收到的内容转换为数字呢?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句