我想请教一下。两个蓝牙(ch579)已经连接成功了并且上电能发送并接收到一次数据,现在我想通过按键触发的方式实现发送数据,请问一在central例程的哪里修改呢。
CH579主从连接后,主机会给从机发送一次0x55,从机会给主机发送0x88,需要进行发送,只需要在按键按下的时候调用发送的函数就可以了。
需注意TMOS结合中断可以通过置标志查询的方式处理。
您好我还想请教一下现在已经可以实现用按键触发发送数据了。但是主机发送的时候需要按两次,从机才会接收到一次数据这是什么原因呢? 而且数据发送和接收的时候会有大概1s的延时需要怎么做才能降低延时呢?
按键两次才发送,可以加点打印看看代码运行逻辑,
有一秒的延时是因为主机和从机发送数据调用的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任务的时间我已经改了,但是接收时还是有很大的延时这是什么原因呢?
如果想要发送数组,或者同时发送两个不同的数据需要需修改那里呢?
如果还有延时,如主机接受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