android 蓝牙发送串口,【基本解决】android中是否支持蓝牙的串口的RTS/CTS

【背景】

需要折腾在android上通过蓝牙模块,然后外接HART猫,连接HART设备。

想要发送HART数据的话,需要物理上支持流控制。

所以需要去搞懂Android中的蓝牙,是否支持RTS/CTS。

【折腾过程】

1.网上找了半天,关于蓝牙支持串口的,好像是

RFCOMM

相关的内容:

得知:

蓝牙的SSP中,本身协议上是支持,模拟出来串口的各个引脚的功能的,包括流控制:PinCircuit Name

102Signal Common

103Transmit Data (TD)

104Received Data (RD)

105Request to Send (RTS)

106Clear to Send (CTS)

107Data Set Ready (DSR)

108Data Terminal Ready (DTR)

109Data Carrier Detect (CD)

125Ring Indicator (RI)

但是却不知道具体如何使用。

2.android中的蓝牙的解释:

其中,默认好像就是:RFCOMM

但是后面,没搞懂:

两个设备,wired配对后,如何传输数据的。

3.去API:

中找RTS等信息,也找不到。

4.貌似这里:

提到的就是:

"The F2M01 does support RTS/CTS signals for local hardware flow control. The Bluetooth specification has no support for sending the RTS/CTS signals over the air interface and this is because the RTS/CTS signals are only used locally. Each end is responsible for controlling the UART flow to prevent buffers from being overwritten."

即,蓝牙协议中的串口,不支持通过软件协议来控制RTS/CTS,而是要你自己的硬件这一端自己去控制。

不过,貌似看到协议中的解释,也没有完全看懂:

或许,本身也是可以通过协议控制RTS/CTS的,只是自己暂时没搞懂如何去做而已。

5.看了:

中的“ COM port interface (virtual COM port in Windows) using Windows Bluetooth Serial Port Profile (SPP)”

才知道:

原来前面看到的Bluetooth Serial Port Profile,就是SSP。

然后再去找了下,结果还是找不到相关的资料,没有找到介绍如何在android中的用SSP这个profile去实现RTS/CTS的控制的。

6.唯一一个相关的帖子只有一个人去问的:

但是没有有效的解决办法。

7.最后的最后是:

在android上使用蓝牙的ssp协议,当做串口处理,直接发送和接受数据即可。

而对应的HART协议所需要的流控制处理,本身已经有外接的蓝牙接口的HART猫,自动处理了。无需程序关心,即可正常的实现:

发送HART的command 0的数据,然后接收到对应的command 0返回的数据。

【总结】

目前的结论是:

无需android的app操心蓝牙的SSP中的流控制,即可写程序发送和接受HART协议的数据。

至于其他组合中,是否需要操心SSP模拟的出来的串口的流控制,就不太清楚了。

注:

已经实现的可工作的代码,可参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值