问题标签 [l2cap]

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.

0 投票
0 回答
792 浏览

ios - CoreBluetooth / L2CAP 通道,不工作

我最近一直在尝试很多CoreBluetooth,现在我想使用 L2CAP 通道。

为此,我设置了两个 iOS 应用程序,一个是外围应用程序,另一个是中央应用程序。

此时,当我运行它们时,这是我在Xcode调试控制台中看到的。

在外围方面,我得到了这个:

在中央,我明白了:

问题是:我做错了什么来得到这个看起来很糟糕的信息?

后来:我需要在这个代码中添加什么来在中央和终端之间进行实际的数据传输。例如发送消息:“ Hello world!新年快乐。

我将 Xcode 10.1 版与 Swift 4.2 一起使用。

下面是相关的源代码。

对于外围设备:

对于中央:

0 投票
1 回答
829 浏览

ios - 将 L2CAP 通道与 CoreBluetooth 一起使用

我需要将 L2CAP 通道与 CoreBluetooth 一起使用。因此,我将不得不实现 StreamDelegate 协议并进行第一次测试,将一条消息从发送应用程序发送到侦听应用程序。

有没有我可以遵循的好的教程。到目前为止,我发现的信息太笼统了。

当然,我看过 WWDC 2017 视频: https ://developer.apple.com/videos/play/wwdc2017/712/ 。

但我想找到基本示例(带代码)来开始。

我已经开始写一些东西(CoreBluetooth / L2CAP 通道,不工作),但它还没有工作。

任何提示或反馈,来自已经做过的人,将不胜感激。

0 投票
1 回答
2066 浏览

ios - 使用 CoreBluetooth / L2CAP 通道传输数据

尝试在CoreBluetooth使用L2CAP通道中设置数据传输时。我有问题。在发送端,我可以通过点击按钮触发此功能:

当它执行时,我在 Xcode 调试控制台中看到:

在接收端,我有这个功能,也可以通过点击按钮触发:

仍然在接收方我也有这个代码:

启动接收应用程序时(当发送应用程序正在运行时)我在 Xcode 调试控制台中看到了这一点:

在发送端,事情似乎按预期进行,写入了 26 个字节。另一方面,在接收端,我们看不到 26 个字节进来。

怎么了?我以前从未使用过L2CAP频道,所以我肯定在做一些不好的事情,但我不知道是什么。任何关于检查什么或在哪里看的建议都将非常感激。

.....在深入研究该主题之后,这里有更多信息。

以下是 stream(_ :handle:) 函数的代码:

在中央应用程序启动后,在尝试编写任何内容之前,可以在调试器中看到以下内容:

0 投票
1 回答
1407 浏览

ios - L2CAP IOS + Linux (Bluez)

我正在尝试在 IOS 和 Linux PC 之间进行简单的 L2CAP Socket 通信。

我已经能够:

在那个 IOS 示例中,他们使用一些 PSM 广告来为 L2CAP 通道选择正确的 PSM。在集成上,我在两边都设置了一个固定的 PSM。Iphone 正在连接到 Linux 机器固定 PSM。我尝试了多个 PSM (0x1001, 0x25)。

问题是,我无法连接,也无法获得有关广播中正在发生的事情的任何信息。

我的问题是,我是否需要在 Linux 应用程序上实现动态/广告 PSM?我需要选择特定的 PSM 吗?你能完成这项工作吗?你有什么建议吗?

提前致谢!

服务器代码:

客户端基于(来自https://github.com/bluekitchen/CBL2CAPChannel-Demo)。

0 投票
0 回答
618 浏览

uwp - 如何在 Windows 10 GATT 服务中打开 L2CAP 通道?

我们正在尝试将 iOS 设备连接到我们在 Windows 10 中的 BLE 应用程序以发送大量数据。

我们已经能够成功写入数据。为了增加吞吐量,我们希望在两个设备之间实现 L2CAP 通道。虽然在 iOS 端我们有一个界面,但我在 Microsoft 文档中找不到有关此主题的任何文档。我们目前正在开发 Windows 10 的 1803 更新,根据微软的这份出版物,应该支持 L2CAP:https: //support.microsoft.com/de-de/help/10568/windows-10-supported-bluetooth-简介

使用以下代码,我们可以发布一个特征以允许在没有响应的情况下进行写入:

有没有人有更多关于如何在 UWP 应用程序中使用 L2CAP 的信息?

0 投票
0 回答
76 浏览

ios - 使用 CoreBluetooth CBL2CAPChannel

我正在尝试CoreBluetooth CBL2CAPChannel在 Swift iOS 应用程序中使用 设置一些数据传输功能。

我的问题是关于StreamDelegate功能:

我该怎么开火?或者什么时候被解雇?

事实是,当我在我的应用程序中预先设置一些测试数据以查看信息传输是否正常时,一切都很好(调用了func stream(:handle:))。

  • 一次使用:Stream.Event.hasSpaceAvailable(我可以在其中开始一些数据传输)
  • 最后(通常)带有:Stream.Event.endEncountered

但实际上,我想在用户采取一些行动之后传输数据。这就是问题所在。此时func stream(:handle:)永远不会被调用。

这是为什么?我应该做些什么?

这里的问题是要知道如何进入(或返回)使用Stream.Event.hasSpaceAvailable调用的func stream(:handle:)

0 投票
0 回答
199 浏览

ios - 使用 CoreBluetooth CBL2CAPChannel 移动数据

CoreBluetooth CBL2CAPChannel我已经在应用程序中使用 ,设置了一些数据传输功能Swift iOS。下面是发送数据的函数:

这是接收数据的函数:

我可以说,它正在工作,因为这允许我传输数据。但是有一个问题:我接收数据的方式与发送数据的方式不同。例如,假设我以 3 个数据包发送数据,如下所示:

我希望在这种情况下以 3 个数据包的形式接收数据,其速度与我发送它们的速度大致相同:

但相反,我收到一个数据包:

而且很多时候,出于某种我不知道的原因,只有当我杀死发送应用程序时。

我想知道我需要改变什么才能以我期望的方式接收数据。

0 投票
0 回答
303 浏览

ios - 使用 CoreBlueTooth L2CAP 通道传输音频文件

我需要一些示例代码来了解如何使用 CoreBlueTooth L2CAP 通道传输音频文件(或任何其他二进制数据)。假设文件不是那么小,让我们说它是几百千字节。

我正在开发一个小型 iOS 应用程序,但它只工作了一半。

在这一点上,我可以传输几千字节,但它并没有走得更远。

以防万一,这是我在发送端的相关代码:

在接收方:

我显然没有显示太多细节,但是我的代码无论如何都缺少一些关键部分,这就是为什么我很高兴找到一些小的工作示例来看看它是如何工作的。

0 投票
1 回答
285 浏览

ios - 试图了解 L2CAP 通道

现在面临一些使用CoreBlueTooth L2CAP channel. 为了更好地理解事物是如何运作的。我从 GitHub 获取了 L2CapDemo (master) ( https://github.com/paulw11/L2CapDemo ) 并尝试使用它。这是我所做的,还有一个问题。

用这个替换了 sendTextTapped 函数:

并且执行结果是:

这让我可以看到在 bytesWritten < data.count 的情况下会发生什么。换句话说,不能在一个块中发送所有字节。

现在问题来了。问题是我什么也没看到,剩下的字节似乎被忽略了。如果我不想忽略这些字节,我想知道该怎么做。关心其余字节的方法是什么?在某些情况下,我们需要传输数万甚至数十万字节。

0 投票
1 回答
100 浏览

ios - L2CAP 通道,已发送但未到达的字节

在 iOS 应用程序中,我正在使用CoreBlueTooth L2CAP channel, 在一台设备和另一台设备之间进行音频文件传输。它已经工作了一半,但还没有完全工作。此时我已经转移了文件名,但是来到文件内容,情况是这样的。

在发送端,所有字节都被发送(几十万字节)分布在几个块中。但在接收端,似乎只有前几千个字节到达目的地。

功能:

被调用一次(使用 Stream.Event.hasBytesAvailable)并获取前几千个字节。但后来它再也没有被调用过。这可能是什么原因?我希望在收到所有字节之前尽可能多次调用它。