微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > BLE串口发送数据的疑问

BLE串口发送数据的疑问

时间:10-02 整理:3721RD 点击:

我想用一块主机模块扫描周围的从机模块并把扫描到的蓝牙的mac地址发送到上位机观看,附上代码:

case GAP_DEVICE_DISCOVERY_EVENT: //设备扫描完成时,产生GAP_DEVICE_DISCOVERY_EVENT事件
{
simpleBLEScanning = FALSE;
if ( simpleBLEFindSvcUuid( SIMPLEPROFILE_SERV_UUID,
pEvent->deviceInfo.pEvtData,
pEvent->deviceInfo.dataLen ))
{
osal_memcpy(simpleBLEDevList, pEvent->discCmpl.pDevList,
(sizeof( gapDevRec_t ) * pEvent->discCmpl.numDevs) );
}
if(simpleBLEScanRes > 0)
{
 NPI_WriteTransport("*\"mac address\"\:",15);
for(simpleBLEScanIdx=0;simpleBLEScanIdx< simpleBLEScanRes;simpleBLEScanIdx++)
{
NPI_WriteTransport(bdAddr2Str(simpleBLEDevList[simpleBLEScanIdx_i].addr),16);

//   for(i=0;i<=0xffff;i++){}
}
NPI_WriteTransport(";\0",2);

}

else
NPI_WriteTransport("*\"no\"\n",6);

simpleBLEScanIdx=0;
}

用一个for循环将扫描到的设备全部打印出来。刚开始用上位机观看的时候只打印出一个设备,后来我在调试中用单步运行时就一切ok,可以把所有的mac地址都打印出来,但是一旦全速运行就出问题了,只能打印一个设备,在for循环里加上延时也没有用,调试窗口里simpleBLEDevList[]数组的确保存了所有设备的mac地址,但是打印出来时就是只有一个,不知道为什么,还请各位帮忙~

串口输出会占用很多的时间,放在这里会使消息处理函数的速度减慢,建议你用异步的方式来做,尝试把打字输出的操作放到外部去做,不要让这个处理占用过长消息处理函数的时间

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top