17个员额/ 0个新员额
最后发表
RandyYu
离线
最后看到:2年8个月前
加入:2015-01-28 08:49
DA14580多个从机和DA14580主机通信

您的好,我修改DSPS_5.150.2版本,知道CFG_MAX_CONNECTIONS最多能同时连接6个从机,如何才能实现呢?假设连接好了1个,从机向主机发送数据,主机处理数据,在处理数据过程中,打开另外一个从机,如何实现连接并处理新的从机发送的数据呢?请帮助回答上面两个问题,谢谢!

关键词:
设备:
RandyYu
离线
最后看到:2年8个月前
加入:2015-01-28 08:49
没有人回答吗?我设置#定义CFG_MAX

没有人回答吗?我设置# define CFG_MAX_CONNECTIONS 6,然后我在空白user_on_connection (uint8_t connection_idx, struct gapc_connection_req_ind const * param)函数里末行添加user_scan_start();主机能同时连接两个奴隶,并且能接受到数据,但是接受的时间很短,主机就死掉,然后就断开连接了,有没有什么方法能同时连接的奴隶,数据传输稳定吗?

Gongyu_Dialog
离线
最后看到:4天17小时前
加入:2016-04-27 07:07
因为580设计的限制,一般都是先扫完设备

因为580年设计的限制,一般都是先扫完设备,然后再用direct_connection模式去直连设备,这样的方法去保证连多个。
可以参照SDK5里的host_apps \ windows \接近\监控\ src \ app.c下的app_connect函数。

RandyYu
离线
最后看到:2年8个月前
加入:2015-01-28 08:49
我在user_on_adv_report_ind

我在user_on_adv_report_ind (struct gapm_adv_report_ind const * param)函数体里面,注释掉app_easy_gap_start_connection_to_set和user_gapm_cancel函数,把需要扫描到的奴隶全部保存在一个链表里,我想知道如何把这些链表里的奴隶全部连接主人?我需要如何
修改主里面的user_on_connection回调函数,我把user_on_connection和app_easy_gap_start_connection_to_set添加一个参数(链表中奴隶
的下标),接下来我还需要修改什么地方呢,请多多指教!谢谢!

Gongyu_Dialog
离线
最后看到:4天17小时前
加入:2016-04-27 07:07
做了一个测试版本,你可以参考。我这里挂了2个设备没什么问题

做了一个测试版本,你可以参考。我这里挂了2个设备没什么问题。之前有一点讲错了,是可以连上设备再扫描的。
以地址uint8_t peer_addr [6] = {0 xff 0 xff 0 x00, 0 xca 0 xea, 0 x80}作为过滤,其中前两个0 xff里可以填任何数。

Oliver_Zero
离线
最后看到:2年8个月前
加入:2017-04-05 07:00
你好,我在使用这个工程时,调用user_gapm

你好,我在使用这个工程时,调用user_gapm_cancel()这个函数时也会出现等待十几秒之后跳到wrap_platform_reset()函数中的情况,板子是用的是自己的,上面有32 k晶振,不知道导致的个问题出现的原因是什么,期待解答。

RandyYu
离线
最后看到:2年8个月前
加入:2015-01-28 08:49
你好,非常感谢帮助!

你好,非常感谢帮助!
在你提供的例程中,两个同时连接之后,大约1分钟后,中央进入虚空wrap_platform_reset (uint32_t错误),错误= 0 xf2f2f2f2;然后
程序死掉,无法运行。请问是咋回事?

Gongyu_Dialog
离线
最后看到:4天17小时前
加入:2016-04-27 07:07
现在在出差,手边暂时没环境再确认....

现在在出差,手边暂时没环境再确认…这个错一般是内存分配溢出。应该进HardFault_HandlerC了,你看看保存的
*(volatile unsigned long *)(STATUS_BASE + 0x14) = hardfault_args[5];/ / LR
*(volatile unsigned long *)(STATUS_BASE + 0x18) = hardfault_args[6];/ /电脑

然后再对应的汇编里面找找是在哪里停住的

Gongyu_Dialog
离线
最后看到:4天17小时前
加入:2016-04-27 07:07
你确定吗?我这里重新又跑了一下,没问题啊

你确定吗?我这里重新又跑了一下,没问题啊。你是拿的演示板跑的吗?如果不是,请确认外接有32 k时钟。

附上嗅探捕获数据的文件,大概7 - 8分钟

附件:
RandyYu
离线
最后看到:2年8个月前
加入:2015-01-28 08:49
非常感谢,我把你的项目移植到官网提供的DSPS_V5

非常感谢,我把你的项目移植到官网提供的DSPS_V5.150.2同时连接两个成功了,疑问是否需要把你项目中app_mid.h中line229, KE_MSG_ALLOC_DYN申请内存参数sizeof (struct gap_bdaddr)改为CFG_MAX_CONNECTIONS * sizeof (struct gap_bdaddr)。
参考你的工程,我修改是需求方示例项目,同时连接两个奴隶,分别给中央发送数据,中央能同时正确接收两个奴隶的数据,现在我在收到数据需要给奴隶返回一个应答包,现在只有一个奴隶能收到应答包,另外一个奴隶只能发送数据而接收不到中央应答包,请问我如何能够区分给不同奴隶回指定的应答包,如何修改吗?谢谢!!

蓝宝莹
离线
最后看到:1天16小时前
加入:2020-06-11 15:18
[DSPS_V5.150.2] 598770358 @qq

(DSPS_V5.150.2)598770358 @qq.com]谢谢

蓝宝莹
离线
最后看到:1天16小时前
加入:2020-06-11 15:18
< p >可以把移植好的DSPS_V5.150.2发我一份吗

< p >可以把移植好的DSPS_V5.150.2发我一份吗?邮箱:< a href = "598770358">mailto: 598770358 @qq.com”> 598770358@qq.com < / > |谢谢< / p >

Gongyu_Dialog
离线
最后看到:4天17小时前
加入:2016-04-27 07:07
1.这个看你怎么用,如果你需要只发送一次连接命令

1.这个看你怎么用,如果你需要只发送一次连接命令,连多个地址,就改成CFG_MAX_CONNECTIONS * sizeof(struct gap_bdaddr)。但是demo里面还是一个地址一个地址依次连接,所以sizeof(struct gap_bdaddr)就够了。

2 .不同的奴隶,会有不同的处理,连接的时候会获得。我想可以修改一下user_send_ble_data函数

空白user_send_ble_data (const uint8_t *数据,uint16_t长度,uint16_t conidx) / /添加句柄参数吧

struct sps_client_data_tx_req * req = KE_MSG_ALLOC_DYN(sps_client_data_tx_req,
KE_BUILD_ID(TASK_SPS_CLIENT,conidx), TASK_APP, sps_client_data_tx_req, length);//加一个句柄参数吧

申请- >长度=长度;
memcpy(请求- >[0]的数据,数据长度);

ke_msg_send(要求的);

RandyYu
离线
最后看到:2年8个月前
加入:2015-01-28 08:49
非常感谢帮助!

非常感谢帮助!
我需要在user_sps_client_data_rx_ind_handler (ke_msg_id_t const是否,struct sps_client_data_rx_ind const *参数,ke_task_id_t const dest_id,
ke_task_id_t const src_id)调用空白user_send_ble_data (const uint8_t *数据,uint16_t长度,uint16_t conidx),请问uint16_t conidx为spsc_envs.con_info.conidx的值吗?我调用该如何设置uint16_t conidx参数?不好意思,需求有点紧急,只好多问你了。

Gongyu_Dialog
离线
最后看到:4天17小时前
加入:2016-04-27 07:07
这个conidx就是你在user_on

这个conidx就是你在user_on_connection函数里面拿到的connection_idx,,每个连接都会有一个分配的值。
然后在default_app_on_connection函数里面调用app_prf_enable去使能之前已经分配好内存的数据库。

RandyYu
离线
最后看到:2年8个月前
加入:2015-01-28 08:49
非常感谢帮助,中央同时连接两个奴隶后

非常感谢帮助,中央同时连接两个奴隶后,中央继续一直扫描,这都没问题,Q1:请问断开一个后为啥不执行user_on_disconnect函数?且两个断开都不执行该函数,
Void user_on_disconnect(struct gapc_disconnect_ind const *param)

default_app_on_disconnect(参数);
/ /重新扫描
user_scan_start ();
arch_printf(“设备断开连接\ r \ n”);

Q2:断开一个奴隶后,中央能接收另一个连接状态奴隶的数据,但是中央不能给该奴隶回应答数据,只有把断开的一个连接中央后奴隶才
能接收应答数据,请问是否和修改后user_send_ble_data函数中KE_BUILD_ID (TASK_SPS_CLIENT conidx),有关吗?请问该如何解决?
给奴隶回应答数据在int user_sps_client_data_rx_ind_handler (ke_msg_id_t const是否,struct sps_client_data_rx_ind const *参数,
ke_task_id_t const dest_id ke_task_id_t const src_id)调用user_send_ble_data (ask_buf 7参数- > conhdl);

空白user_send_ble_data (const uint8_t *数据,uint16_t长度,uint16_t conidx) / /添加句柄参数吧

struct sps_client_data_tx_req * req = KE_MSG_ALLOC_DYN(sps_client_data_tx_req,
KE_BUILD_ID(TASK_SPS_CLIENT,conidx), TASK_APP, sps_client_data_tx_req, length);//加一个句柄参数吧

申请- >长度=长度;
memcpy(请求- >[0]的数据,数据长度);

ke_msg_send(要求的);

谢谢帮助!

houjun
离线
最后看到:9个月4个星期前
加入:2019-03-04 06:32
你好当时的需求方的演示还在吗?

你好当时的需求方的演示还在吗?