使用DA14531实现简单多线程

⚠️
大家好. .谢谢你来参加论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,并包含在主对话网站中。所有的帖子和账号都已迁移。我们现在只接受新论坛的流量-请张贴任何新的线程在//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
9个帖子/ 0个新
最后发表
joachimkr
离线
最后看到:7个月前1个星期
加入:2018-07-06 08:58
使用DA14531实现简单多线程

你好,

我用Keil IDE编写了一个应用程序,通过订阅节点的通知传输RFID阅读器结果。阅读器是我硬件系统的一部分。在客户端请求通过其读取器上的值更改通知之后,启动硬件处理。
这是有效的,但它阻碍了任何其他活动。
现在,我需要一个提示/简单的例子,我可以实现以下:

另一个相同的节点可能被指示使用这个节点作为中继。这是网格的替代品,需要适合小RAM,太。因此,我想构建一个树,其中靠近根的节点具有某种程度的优先级,但允许转发源和读取结果信息。DA14531不支持MESH,这对我来说是完全OK的。我只需要使用同一个连接服务多个GATT服务通道。而且,我需要支持3个或更多的连接,其中我使用一个节点监督网络,该节点使用GATT服务来指示连接。没有自动化,我想控制连接并接受结果优先级。
我想,我需要能够,使用另一个GATT通道/服务,放置我的参数和启动活动,而我的主要活动继续。
我已经观察到的是,在我的用于检测rfid的主循环启动后,没有其他GATT服务再工作了。
我试过打开或关闭LED开关。一切正常,直到我开始取消通知。当它启动时,LED切换GATT服务是不可达的。
我注意到,服务广告也停止了——这在原则上是好的。但我认为这是一个迹象,其他任何活动都是不可能的。我的连接数被设置为1。但这是最精彩的,还是更多?
这两种服务都使用了相同的连接,但我的RFID循环消耗了任何东西。我怎样才能暂停它,以继续为关贸总协定服务?
为什么我的第一个通知服务占用了整个系统?(代码具有轮询性质,从RFID前端中断目前不可用)
作为第一步,我希望能够,在RFID阅读器运行时,使用我的LED切换服务。

谢谢你的帮助和提示!
约阿希姆

附注:任何像PC或树莓这样的节点似乎都限制了连接的数量。有些人发现,这是在7个连接的范围内,同时。我需要连接大约100个设备。流量将足够小,以传递来自伙伴的通知。

设备:
PM_Dialog
离线
最后看到:5个月4个星期前
工作人员
加入:2018-02-08 11:03
嗨Joachimm,

嗨Joachimm,

感谢您的在线问题和您对我们BLE产品的兴趣。亚博电竞菠菜

让我检查一下,然后再给你答复。

DA14531是作为中心还是作为外围?

与此同时,请您看一下DA14585/DA14586 - DA14531多外设举例西南的例子。

此示例演示如何将单个外设连接到多个中心。DA14531能够支持最多3个。此外,它还演示了如何根据不同的连接保持不同的特征值。

谢谢,PM_Dialog

joachimkr
离线
最后看到:7个月前1个星期
加入:2018-07-06 08:58
你好,

你好,
这实际上是一个有趣的例子,它显示了在sdkrom函数重载时预期的困难。我的第一个回答是:
我的设备可以充当外围设备的角色,宣传所有的服务,一个(完全有能力的)设备,比如树莓派,可以将整个乐团的连接参数写入所有设备,所以任何设备都可以建立并保持最多3个连接。一个向上,两个向下。从下方向接收到的数据向上转发。
这能解释我的想法吗?两个向下的设备连接向上的设备。

你看到我的设备的单线程行为的困难了吗?我需要一种方法将控制返回到库代码,这样它将服务于多个GATT服务,我的轮询代码,目前永远和独占运行。

非常感谢,
约阿希姆

PM_Dialog
离线
最后看到:5个月4个星期前
工作人员
加入:2018-02-08 11:03
嗨,约阿希姆,

嗨,约阿希姆,

>>可以将整个乐团的连接参数写入所有设备,因此任何设备都将建立并保持最多3个连接。

关于这一说法,你能否予以澄清?所以,一个外设将同时连接到3个中心。所以,外围设备应该更新连接参数到所有3个连接的Central?

谢谢,PM_Dialog

嗨,约阿希姆,

>>可以将整个乐团的连接参数写入所有设备,因此任何设备都将建立并保持最多3个连接。

关于这一说法,你能否予以澄清?所以,一个外设将同时连接到3个中心。所以,外围设备应该更新连接参数到所有3个连接的Central?

谢谢,PM_Dialog

joachimkr
离线
最后看到:7个月前1个星期
加入:2018-07-06 08:58
你好,

你好,

你误解了一点,我的意图是,在每个设备上有3个并发连接。2作为中心,以便从下面有序的外围设备转发信息,1作为外围设备的角色向下一级转发信息。结果是一个树形结构,我有一个“网格”的基本功能——在这里,更高的级别将他们的信息更快地发送到最终的中心。
正如我所发现的,最高级别的限制似乎接近7个并发连接。这意味着,我可以建立一个二叉树。
这种树形结构的建立需要一个主控装置,它负责组织网络。

任何DA14531都需要支持两个外围设备和一个上中心节点。
配置(根据蓝牙MAC地址)将由专门的应用程序设置,并保存在非易失性内存中。

这样讲清楚了吗?
谢谢你的支持,
约阿希姆

PM_Dialog
离线
最后看到:5个月4个星期前
工作人员
加入:2018-02-08 11:03
嗨joachimkr,

嗨joachimkr,

是否可以分享您的应用程序的高级框图,以便我们更好地理解它?

谢谢,PM_Dialog

joachimkr
离线
最后看到:7个月前1个星期
加入:2018-07-06 08:58
你好,

你好,
是的,当然。DA14531不支持网格,所以我搜索了一个规避。我可以和一棵设备树一起生活,其中一些是靠近中心的,一些是叶子。叶子将他们的事件,值的变化发送给上一层。在那里,它被转发到下一个,以此类推。最后,消费设备(非da14531)旁边的设备发送来自较低级别的任何内容——它自己的值也会发生变化。我的规避实现需要一个配置,在网络设置。管理设备将此设置中的连接数据和角色发送到任何设备。它们将数据存储在非易失性存储器中。这是可以接受的,因为它通常只做一次。 Does this make sense ?

问候,
约阿希姆

PM_Dialog
离线
最后看到:5个月4个星期前
工作人员
加入:2018-02-08 11:03
嗨joachimkr,

嗨joachimkr,

抱歉耽搁了。DA14531最多支持3个连接。然而,不可能同时充当外围和中央。您可以执行角色切换。

谢谢,PM_Dialog

joachimkr
离线
最后看到:7个月前1个星期
加入:2018-07-06 08:58
你好,

你好,
谢谢你的角色转换建议。我可能会知道这意味着什么。

目前,我的计划是,提供GATT服务,它允许叶节点向两个服务(左和右)交付事件/值,其中值被接受,另一个服务(父节点(两者具有相同的角色)可以注册以获得通知)。
结果是一个二叉树,其中根节点为/所有子树单元的/in权限发送通知。

每个单元充当转发器,可以通过通知生成自己的值。
Bandwith不是问题。我还可以将每个通知的数据压缩到20个字节。

这个树的设置可能需要切换,但我假设(如果我错了,请告诉我)所有树单元都可以保持外围模式(Peripheral mode),连接建立除外。我想要一个解决方案,在安装阶段分配树单位的mac,并触发树单位存储这些永久。我有一个闪光装置。

顺便说一句。TI也有一份类似的申请说明。但我不理解安装阶段,想要自己详细的手动安装。

最好的问候,
约阿希姆