我目前正在从我的RaspberryPi向每个蓝牙的Android智能手机发送CAN消息。我应该每秒获得200-1300条消息。不幸的是,我每秒平均只有80条消息。我希望你能帮助我实现更多的目标。
我在Raspberry上实现连接的步骤是:
sudo hciconfig hci0 piscan
sudo sdptool add sp
sudo ./rfcomm listen hci0
这确定了智能手机和Raspberry之间的蓝牙连接。我将在can0上收到的所有CAN消息写入rfcomm0。
sudo candump -c can0 > /dev/rfcomm0 &
现在我不确定如何让这个过程更有效率。我不知道我在哪里丢失了我的信息。
我知道所有邮件都会到达Raspberry。我用candump -n检查了一下。
我在智能手机上收到的信息是ASCII编码的。我在Android智能手机上收到的每一条消息都是ASCII CR和LF。我想如果我能摆脱这一点,那么我会把信息翻到智能手机上。 每个Can Message包含35个HEX字符,通过蓝牙向智能手机发送每个字符2字节最有效。我怎样才能做到这一点?
感谢您的帮助。
编辑:
更正的问题
EDIT2:
在Raspberry上,我通过像这样的蜜糖消息(40个字符)收到:
can0 10C [8] F4 4D B0 94 A7 08 EA 00
290是ID,8是内容的字节。 ID和内容以十六进制表示。
如果像上面提到的那样将数据写入rfcomm0而不是我在Android智能手机上收到的消息:
[1m[34mcan0[0m 10C [8] F4 4D B0 94 A7 08 EA 00
我收到的53字节是:
32 32 27 91 49 109 27 91 51 52 109 99 97 110 48 27 91 48 109 32 32 49 48 67 32 32 91 56 93 32 70 52 32 52 68 32 66 48 32 57 52 32 65 55 32 48 56 32 69 65 32 48 48
为什么我会在智能手机上收到其他信息?如果我修改消息以便我只有上下文和ID,理论上只需要10个字节来存储信息。这是对的吗?