我想用一块主机模块扫描周围的从机模块并把扫描到的蓝牙的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地址,但是打印出来时就是只有一个,不知道为什么,还请各位帮忙~
Barbara Wu:
串口输出会占用很多的时间,放在这里会使消息处理函数的速度减慢,建议你用异步的方式来做,尝试把打字输出的操作放到外部去做,不要让这个处理占用过长消息处理函数的时间