|
|
买了几片蓝牙模块(HC-05 及 HC-06), 想测试高速的传送大量资料.
首先尝试设定速度, 就出了问题.
用 AT 指令, 我可以设定蓝牙的通讯速度为 115200 (AT+UART:115200,0,0), 蓝牙之间通讯没问题了.
但当我测试要资料送到 arduino 时, 以串口连接, 才发觉 AT 指令只能更改两个蓝牙模块之间的通讯速度.
但蓝牙模块跟 arduino 的串口通讯, 依然是 9600. 即只可以用 Serial.begin(9600) 连接.
如果我改用 Serial.begin(115200) 就会出现问题.
再三用 AT+UART? 检查过, 蓝牙速度是 115200 没错.
问题就来了, 如果蓝牙之间以 115200bps 传送, 之後用 9600bps 传给 arduino, 当中相差 12 倍的速度.
蓝牙接收了的资料, 必须先放到 buffer 再送出来. 但如果 buffer 满了, 就会遗失资料.
经测试後, 这个 buffer 只有 128 byte 左右. 如果一次发送 128 byte 以上, 就会有问题.
用蓝牙发送 128 byte, 只需 128 * 8 / 115200 = 0.009 秒
但要把资料经串口送给 arduino, 就要 0.11 秒. 同样时间, 蓝牙可以发送 1.5K 资料了.
即是说如果有 1.5K 资料要传送, 结果只可以收到 128byte.
再三找寻 HC-05 模块的资料, 都没有提及如何修改 serial 连线的速度.
是否有什麽地方我搅错了, 为什麽 蓝牙通讯 跟 串口通讯 的速度会不同步的?
请问有没有朋友试过用 HC-05 以 9600 以上的速度作通讯, 而发送的资料超过 128 byte, 如何解决 串口 跟 蓝牙 传送速度上的差距问题? |
|