ch579如何通过按键触发发送数据

我想请教一下。两个蓝牙(ch579)已经连接成功了并且上电能发送并接收到一次数据,现在我想通过按键触发的方式实现发送数据,请问一在central例程的哪里修改呢。

CH579主从连接后,主机会给从机发送一次0x55,从机会给主机发送0x88,需要进行发送,只需要在按键按下的时候调用发送的函数就可以了。

image.png

image.png

需注意TMOS结合中断可以通过置标志查询的方式处理。


您好我还想请教一下现在已经可以实现用按键触发发送数据了。但是主机发送的时候需要按两次,从机才会接收到一次数据这是什么原因呢?   而且数据发送和接收的时候会有大概1s的延时需要怎么做才能降低延时呢?

1676008252294174.png

1676008252547696.png1676008252379005.png

1676008252140766.png



按键两次才发送,可以加点打印看看代码运行逻辑,

有一秒的延时是因为主机和从机发送数据调用的tmos任务是延时1s后触发的: tmos_start_task(centralTaskId, START_READ_OR_WRITE_EVT, DEFAULT_READ_OR_WRITE_DELAY);

tmos_start_task(Peripheral_TaskID, SBP_PERIODIC_EVT, SBP_PERIODIC_EVT_PERIOD);

修改第三个参数,默认例程设置为1600,单位0.625ms,1600*0.625=1000ms





又遇到问题了,调用的tmos任务的时间我已经改了,但是接收时还是有很大的延时这是什么原因呢?



1676437519135538.png


如果想要发送数组,或者同时发送两个不同的数据需要需修改那里呢?


1676437519160759.png




1676437519464076.png






如果还有延时,如主机接受notify有延时,那么就是主机打开从机notify开关慢了,此参数DEFAULT_WRITE_CCCD_DELAY也需同步调小。

主机发送多个数据给从机需修改:

uint8_t CmdHead[8]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38};

根据需求赋值需发送的长度req.len = 8;

tmos_memcpy(req.pValue, CmdHead, 8);

从机端也需修改:

#define SIMPLEPROFILE_CHAR1_LEN 8


只有登录才能回复,可以选择微信账号登录