问题标签 [rfcomm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 蓝牙 RFCOMM / SDP 连接到 android 中的 RS232 适配器
我正在尝试使用谷歌提供的蓝牙聊天示例 API 应用程序连接到连接到另一台设备的蓝牙 RS232 适配器。这是供参考的应用程序:
http://developer.android.com/resources/samples/BluetoothChat/index.html
这里是 RS232 连接器的规格表,仅供参考:
http://serialio.com/download/Docs/BlueSnap-guide-4.77_Commands.pdf
那么问题是当我去连接到设备时:
我总是收到IOException
该方法引发的错误connect()
。当我toString
对异常执行操作时,我得到“服务发现失败”。我的问题主要是什么情况会导致IOException
在连接方法中抛出一个?我知道那些在源代码中的某个地方,但我不确切知道您编写应用程序的 java 层和包含实际堆栈接口的 C/C++ 层。我知道它使用的是用 C/C++ 编写的 bluez 蓝牙堆栈,但不确定它如何与我认为抛出异常的 java 层相关联。任何帮助指出我可以尝试剖析这个问题的地方都是不可思议的。
另外需要注意的是,我可以很好地与 RS232 适配器配对,但我永远无法真正连接。这是 logcat 输出以供更多参考:
我正在尝试连接的设备是00:06:66:03:0C:51
我可以扫描的设备,并且显然可以很好地配对。
下面是从一个类似的问题合并而来的,该问题已通过此处选择的答案成功解决:
如何在 Android 中连接到除另一部手机之外的 rfcomm 设备?
Android API 提供了使用listenUsingRfcommWithServiceRecord()设置套接字和createRfcommSocketToServiceRecord()连接到该套接字的示例。
我正在尝试使用BlueSMiRF Gold芯片连接到嵌入式设备。我想移植到 Android的工作 Python 代码(使用PyBluez库)如下:
...所以要连接的服务被简单地定义为通道 1,没有任何 SDP 查找。
由于我在 Android API 中看到的唯一记录机制是对 UUID 进行 SDP 查找,所以我有点不知所措。在我的 Linux 主机上使用“sdptool browse”是空的,所以我推测有问题的芯片只是缺乏 SDP 支持。
android - SPP Socket createRfcommSocketToServiceRecord 将无法连接
我想使用 Android 2.1 连接到外部蓝牙设备,它为我提供了一个 SPP 端口。在这种情况下,它是一个外部 GPS 单元。当我尝试连接时,在“客户端”模式下无法连接已建立的套接字。然后,如果我尝试设置一个套接字(作为服务器角色),从我的 PC 接收文本,一切正常。计算机可以使用 SSP UUID 或一些随机 UUID 作为客户端通过 SPP 连接到电话上的 Socket。所以问题不在于我使用了错误的 UUID。
但反过来(例如,在已建立的客户端套接字上调用 connect)createRfcommSocketToServiceRecord(UUID uuid)
)是行不通的。遗憾的是,我没有时间进一步检查问题。如果有人能指出我正确的方式,那就太好了。电话:三星 Galaxy Spica I-5700 Android 2.1 在日志文件的以下部分必须是问题所在。
问候菲尔德夫
PS 我将在办公时间出席。
这里是日志文件:
android - 如何防止Android蓝牙RFCOMM连接在.connect()之后立即死亡?
这个问题已经解决了!非常感谢布拉德、丹尼斯和瘾君子!你们是英雄!:)
这是工作代码。它连接到 Zeemote 并从中读取数据。
===== 代码 =====
=====原始问题=====
我正在尝试从运行 2.0.1 固件的 Moto Droid 连接到 Zeemote ( http://zeemote.com/ ) 游戏控制器。下面的测试应用程序确实连接到设备(LED 闪烁),但之后立即断开连接。
我在下面粘贴了两个测试应用程序:一个实际上尝试从输入流中读取,第二个只是坐在那里,等待设备在 5 秒后断开连接。是的,我确实有第三个版本 :) 它首先等待 ACL_CONNECTED 然后打开套接字,但它的行为没有什么新东西。
一些背景信息:我可以使用 bluez 工具(也附有日志)从我的笔记本电脑完美连接到 Zeemote。我确信 Droid也能够与 Zeemote 对话,因为来自 Market 的“Game Pro”可以正常工作(但它是一个驱动程序/服务,所以它可能使用较低级别的 API?)。
我注意到“adb bugreport”既没有报告 Zeemote 的 UUID 也没有报告 RFCOMM 频道,而它对所有其他设备(包括 Moto HS815 耳机,另一个“sdp browse”没有报告任何内容的哑设备)都报告了。此外,当设备启动时,Zeemote 的优先级为 0(其他的优先级为 100+)。
我在这里很茫然,我工作了很长时间,以至于我没有想法,所以非常感谢任何帮助(即使你不知道答案:))
谢谢,马克斯
测试申请号 1
此应用程序尝试从设备中实际读取。
===== 代码 =====
===== 日志 =====
测试申请号 2
此测试连接并等待——对于显示自动断开问题很有用。
===== 代码 =====
===== 日志 =====
系统日志
===== 终端日志 =====
===== adb bugreport 的一部分 =====
===== 启动日志摘录 =====
android - Android 2.0 之前的 RFCOMM?
我有几个使用标准 SDK 编写的应用程序。它们都使用蓝牙连接到 RFCOMM 设备,所以目前我只能支持 2.0 或更新的设备。
有哪些选项可用于将蓝牙应用程序反向移植到 2.0 之前的应用程序,同时尽可能少地重写代码?
谢谢你。
android - 为什么运行 OTA 2.1 的 HTC Droid 无法与 RFCOMM 通信?
昨天我们在我妻子的 HTC Droid 上收到了 OTA Android 2.1 - 万岁!!!我终于可以在她的手机上加载我的 carputer 应用程序了。
好吧,我们加载了它,但它不起作用。具体来说,它连接但看不到 I/O!!!
我配对、重新配对和重新配对,每次都是同样的问题:connect() 表示我们连接成功,但任何发送或接收数据的尝试似乎都有效,但输入缓冲区中没有数据到达。
我要连接的设备使用 AT 命令。ATI
应以设备 ID 响应。当我在我的 Moto Droid 上运行应用程序时效果很好,但在 HTC 机器人上,输入流/缓冲区中不存在任何数据。
就个人而言,我很确定这是 HTC 版本中的错误或限制(因为该应用程序在我的 Moto A855 Droid 上运行良好)。
有人可以评论这个问题吗?
强制性代码片段:
定义我的 RFCOMM UUID 的成员变量
我的部分连接()
然后我发送"ATI\r"
并期待类似的东西,"CAN OBD II"
但我什么也没得到。
mBTInputStream.available()
似乎总是为零,即使数据应该在输入缓冲区中也是如此。
操作系统正在生成 GOBS 的跟踪消息,如下所示adb logcat -v time
一些更有趣的:
android - Android SPP 蓝牙到非 Android 设备
我试图模仿吉利德(这里)的成功,但到目前为止他在我的应用程序中的代码失败了。我尝试了多个 UUID,但没有任何效果。当我跑步时,sdptool records [address]
我得到:
它显示设备在通道 1 上,所以我不明白为什么代码不起作用。我正在运行 Android 2.1。我无法以任何方式访问其他设备,并且在调试 tmpsock 之前具有所有正确的值.connect()
调用之前具有所有正确的值。
我的代码
android - 在 Android 上通过 RFCOMM 接收文件
有人知道如何通过 RFCOMM 在 android 上接收文件吗?我是蓝牙问题的新手,所以请耐心等待。
我正在寻找一种通过 RFCOMM 作为流接收数据并将其存储在我手机上的某个位置的方法。保存数据不是问题,它工作得很好。
主要问题是连接的实现和数据的可靠检索......
这整个过程应该作为一个android服务来实现(这样在接收数据时就不必启动任何活动)。你会建议什么:本地或远程服务?
Greetz, poeschlorn
android - listenUsingRfcommWithServiceRecord 在 Android 2.1 上失败:wrp_sock_create:套接字创建失败(权限被拒绝)
我正在尝试在 Android (GT-I5700 上的 2.1-update1)手机上打开蓝牙服务器套接字,但它失败了。我已经没有想法了。欢迎对我所缺少的内容提出一些建议。蓝牙已打开,所以这应该不是问题。
我也很确定权限没问题:
失败的代码非常简单:
和日志:
这个错误非常难看,谷歌搜索什么也没有。我对整个 Android 世界也很陌生。
android - 在 Android 上通过蓝牙使用 SPP 的数据传输错误
我在 Android 中通过蓝牙使用 RFCOMM 套接字时遇到了数据完整性问题。我没有任何连接问题,但我收到的数据是乱码,与发送的数据不同。数据由 RS232 设备通过手机连接的蓝牙适配器发送。适配器没有问题,因为如果我用笔记本电脑连接,数据可以正确接收。
我的蓝牙连接是根据Android 开发者网站 ( http://developer.android.com/resources/samples/BluetoothChat/index.html ) 上的BluetoothChat示例应用程序处理的,没有任何更改。发送的数据是纯文本和控制字符(在显示给用户之前被剥离)。我遇到的具体问题是一些文本丢失,一些重复等等。有趣的是,如果我用终端应用程序连接到计算机并在那里输入,数据传输良好。此外,如果我使用GetBlue应用程序连接到设备,则可以正常接收数据。
所以我想问题是 GetBlue 可能在处理其蓝牙数据传输方面有什么不同,或者是否有另一种方式通过 Android 上的 RFCOMM 套接字接收蓝牙数据?