问题标签 [32feet]
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.
c# - 使用独特的服务协议使用 32feet.net 连接到 BTLE 设备
我有一个蓝牙低功耗 (BTLE) 设备,我需要将其连接到我的 PC。为此,我在桌面 WPF 应用程序中使用了 Windows API 参考。
蓝牙设备相当简单:1 个服务,2 个特性(一个读取/通知,一个写入)。
C# 的 Windows API 代码
好吧,它可以工作,有点......它非常不稳定,大多数时候它会产生无法解决的错误:
行:BLEData_ReadNotify.WriteClientCharacteri... 产生 指定的登录会话没有用户会话密钥。(来自 HRESULT 的异常:0x80070572)
并且信号量超时期限已过。(来自 HRESULT 的异常:0x80070079)。第二个错误不太常见,当脚本首先没有收到任何内容时出现,然后通过计时器尝试再次发送 RUN 命令,然后全部崩溃并出现错误。
在stackoverflow和许多网站上搜索,我发现以上两个错误都无法解决。因此我的问题是:
上面的代码可以用 32Feet.net 重写吗?
在 2012 年,根本不可能使用 ble 的链接,但也许现在可以了?使用此答案链接中的扫描方法,我可以在未配对时找到我的 BLE 设备。
所以,我尝试了一些代码
但我被困在 localClient.Connect 行并出现错误: 发生“System.Net.Sockets.SocketException”类型的异常。附加信息:连接尝试失败,因为连接方在一段时间后没有正确响应,或建立连接失败,因为连接的主机没有响应
windows API代码可以在32feet.net中重写吗,如果可以,如何进行?
注意:我尝试使用windows原生.net代码连接BT2.1设备,但是串口不稳定,头疼。使用 32feet.net,它现在可以在 SerialPort 上出色地工作,非常稳定并且每次都能连接!
c# - C# 使用 32feet.NET 连接到已配对的设备
我正在尝试通过蓝牙连接到血压机。该设备已与我的笔记本电脑配对。当我在 TheNet 中使用 nuget 包时。我可以获取附近的设备列表,但无法获取已配对的设备
c# - 使用 C# 中的 32feet.net 库从 Windows 向消息访问服务器发送 bMessage
我正在尝试将 Win7 PC 上的 C# 代码中的 bMessage 发送到三星 Note 2 手机。我有 32feet 蓝牙库,并且正在使用 Visual Studio 2013 社区版。
这是我目前拥有的代码:
btEp 是传递给函数以发送消息的蓝牙端点,并在其他地方定义如下:
这是使用变量构建的:
这两个值都在运行时从设备中获取,并在执行期间获取以下值:
BC20A4164A8C 是设备报告的设备地址。
与电话的连接似乎正在工作并访问正确的服务,因为当我执行代码时,电话会提示我询问我是否愿意接受从我的 PC 到消息服务器的连接。当语句“btClient.Connect(btEp);”时会发生这种情况 被执行。
据我所知,我通过流读取并发送到手机的文本文件是一个格式正确的 bMessage,由蓝牙 MAP 规范定义并在其他地方验证。它的构造如下:
我已将个人身份信息替换为(已编辑),但实际的文本文件包含正确的名称和数字。我住在英国,所以据我所知 SMS_GSM 应该是正确的。
任何帮助将不胜感激!
更新:我在目标手机上安装了一个蓝牙终端,并通过将相同的数据发送到设备上的虚拟端口而不是消息访问服务器来验证正在接收消息。不确定这是否是终端程序的问题,但消息的最后一行被附加到前面并从最后错过。我在文件末尾添加了一个换行符,它解决了这个问题,但是当我将 bMessage 发送到 MAS 时仍然没有任何乐趣。
我也尝试了许多不同的流式写入方法:
1) 删除 StreamWriter Encoding 包装器 - 结果相同 2) 从循环中按顺序发送每个字节 - 类似的结果,在手机上仍然没有任何操作。
如果那里有任何蓝牙通信专家,我真的很感激一些建议!不一定必须是特定于消息访问配置文件的,也不一定是 C#。
我想我的下一步是看看我是否能找到一辆现代汽车,它具有蓝牙配对的 MAP 服务,并且可以连接到手机,并可能在使用类似功能时嗅探数据包???
2016 年 3 月 2 日 - 在我的手机和新车之间嗅探数据包,同时在两个方向发送/接收消息,并将其与我的 PC/代码和手机之间的嗅探数据包进行比较(感谢 Android!开发选项本机允许 BT 数据包记录,并且是能够将其转储到 Wireshark 进行分析)。我的代码使用的是蓝牙客户端,它通过 BT 协议栈中的 RFCOMM 运行,而汽车使用 L2CAP。L2CAP 是 BT 堆栈中低于 RFCOMM 的一个级别,32Feet 有一个等效的 L2CapClient 可以在此级别上运行。已经实现了这一点,但它会引发错误。事实证明,尽管 L2CAP 受支持,但并非所有使用它的配置文件都支持,而 MAP 似乎就是其中之一。
我将回答这个问题,以便为任何偶然发现它的人提供可能的选择。
bluetooth - 32 英尺.NET。如何将 PC 与设备配对?
我为 Windows 窗体编写了一个应用程序。我在将设备与 PC 配对时遇到问题。现在程序以下一个方式工作:打开潜水器,启动程序,将潜水器添加到蓝牙设备,按下连接按钮。我使用下一个功能:
这些功能运作良好。我可以找到并连接所需的设备。但问题是首先我需要将我的设备添加到操作系统中的蓝牙设备并输入 PIN 码。如何改进我的代码来解决这个问题?
我不想添加设备。我想直接使用它。我可以使用哪些方法以编程方式输入 PIN 码?程序必须按以下方式工作:打开设备,启动程序,然后按下连接按钮。
c# - 32feet 库应用程序在 Windows XP 上无法运行,为什么?
我已经使用 32feet 库编写了一个应用程序。它适用于 Windows 7、8、10。我可以找到我的设备、连接到它、发送和接收数据,但该应用程序在 Windows XP 上无法运行。它找不到任何蓝牙设备。我需要让它在 XP 上运行。
这可能是什么原因?有人知道吗?
c# - 32 英尺的异步 HFP 发现
我正在编写一个蓝牙扫描仪来监控我家外面的交通。我了解车载BT设备一般有3种状态,可见(常亮)、受限、不可见。
我正在使用带有 Bluesoleil 驱动程序和 1 类蓝牙加密狗的异步设备发现。
我的问题是设备名称和设备类没有被发现。它正在发现设备地址和范围,但不是设备名称。
我尝试使用 System.Threading.Thread.Sleep(1000) 然后调用 device.Refresh() 无济于事。
它正在获取范围内的一些东西的名称,例如电视和 Fitbit Flexes,但重要的是我可以找到汽车蓝牙设备的名称和 CoD,而不仅仅是 MAC 地址和范围。
我构建的应用程序是一个简单的 WPF 表单,它将找到的设备转储到数据网格(为简单起见,我已将其从代码中删除)。这通常是结果的样子。
当我坐在外面靠近马路的地方时,随着汽车的驶过,它肯定会拾取越来越多的设备,但我不知道它正在检测什么类型的设备。
任何帮助将不胜感激。
c# - 32feet.NET 在 MS Surface 2 平板电脑上挂起后未重新连接
我在后台线程上使用 BluetoothClient 来轮询 BT 客户端并在那里连接一次。我的线程代码如下所示:
只要它没有进入挂起状态,这确实可以在大多数计算机上连接并正常工作,包括带有 Windows 8.1 Pro 的 MS Surface。如果我禁用表面并将其单独放置一段时间以使其进入挂起状态,则在打开所有 Connect() 尝试后会抛出 SocketException 说无效。只有当我关闭并重新启动应用程序时它才会恢复。
如果我在 PC 上设置飞行模式或拉蓝牙加密狗,则不会发生这种情况,它似乎仅在平板电脑暂停后发生。系统是否在连接或断开状态下进入挂起似乎并不重要。
我可以做些什么来避免这种状态或正确恢复?
编辑: API 嗅探显示非托管 WSAConnect 函数不断抛出“WSAEINVAL”错误。
c# - 为什么使用 Write(Byte[]) 而不是使用 foreach 和 Write(Byte) 使用 BinaryWriter 发送数据要快得多?
我正在使用C#
and 32feet
(3.5 版)通过蓝牙 (SPP) 将 250 字节的块发送到我目前正在为其编写固件的嵌入式设备。
我正在使用以下代码建立连接:
我遇到了一些吞吐量非常低的问题,每个块需要大约 100 毫秒才能使用以下代码传输:
将上面的代码块更改为下面的代码后,每个块在 4 ms 内传输。
我很难理解这种“简单”的代码更改如何对吞吐量产生如此大的影响。谁能帮我解释发生了什么?我猜这与 32feet 的底层机制有关?
我来回更改了代码,每次结果都是一样的。传输的数据也是一样的。
我还直接从 Windows 连接到设备,然后在 Realterm 中打开 COM 端口以发送相同的数据。在这种情况下,我得到与使用类似的吞吐量writer.Write(data.ToArray())
。
我正在使用Microsoft Bluetooth Stack
.
c# - 带有 32feet.NET 的 Windows 10 上的蓝牙配对 (SSP)
我刚刚开始了一个项目,该项目需要我将 Windows 10 平板电脑与另一个蓝牙设备配对。
我决定从一个简单的 Windows 窗体应用程序开始,以熟悉该过程。我将 32feet.NET NuGet 包添加到我的解决方案中,并很快成功搜索设备和填充列表框。
然后我添加了一个事件处理程序,这样我就可以选择一个检测到的设备并尝试与之配对。
在我的带有廉价蓝牙 2.0 适配器的 Windows7 台式电脑上,这会导致我的手机上出现一个弹出窗口,要求我输入密码。当我输入“123456”时,配对成功。
然而,这就是问题开始的地方。然后我拿起我的应用程序并在我的 Windows10 平板电脑上运行它,现在当我选择我的手机时,它会导致我的手机上出现一个带有随机 6 位数密码的弹出窗口,并显示一条消息,它应该与我的平板电脑屏幕上显示的内容相匹配,带有配对/取消按钮作为选项。按下任一按钮都会导致失败。
这是我做错了吗?32feet.NET 不支持的驱动程序?
任何建议将不胜感激。
更新:bare_metal 的评论帮助我更进一步
我添加了一个 BluetoothWin32Authentication 事件处理程序并添加了一个按钮来启动 SSP 配对:
当我从手机启动配对时,一切正常,触发事件,弹出消息框,配对成功。
但是,当我从平板电脑启动配对时,永远不会触发事件处理程序,因此配对失败。
c# - 32feet .NET api 拒绝连接“请求的地址在其上下文中无效”
我一直在尝试解决这个问题一个小时,这让我很头疼。我要做的就是使用此页面上的示例将蓝牙设备连接到我的应用程序。调用 .Connect 函数时,会发生 SocketException,提示“请求的地址在其上下文中无效”。
我很肯定我正在配对的设备的地址是正确的;我什至发现了设备并使用了其中一个设备的地址,但我仍然遇到同样的错误。我已经为 Guid 尝试了 BluetoothService.SerialPort 和 MyConsts 类示例,并且都引发了相同的错误。
我正在使用的代码在这里:
我也在使用 Visual Studio 2015。