CH582作為客戶端發(fā)送數(shù)據(jù)給服務(wù)端,服務(wù)端收到數(shù)據(jù)一直都是錯(cuò)的?。。。?!這是什么情況???

我無(wú)論怎么改主機(jī)端的req.pValue這個(gè)值,服務(wù)端收到的第一位數(shù)據(jù)永遠(yuǎn)都是0x5a。服務(wù)端跟客戶端代碼都是官方例子


這里的客戶端使用的是手機(jī)還是MCU呢,

如果使用的是手機(jī)需要在手機(jī)端主動(dòng)使能notify的功能;如果想要從機(jī)自己使能notify的功能可以添加這樣一個(gè)函數(shù):

uint8 enable_notify(uint16 connection_handle,uint8 enable) {
uint16 cccd = 0;
if(enable) {
cccd |= GATT_CLIENT_CFG_NOTIFY;
}else {
cccd &= ~GATT_CLIENT_CFG_NOTIFY;
}
return GATTServApp_WriteCharCfg( connection_handle, simpleProfileChar4Config, cccd );
}

在連接后此函數(shù)(Peripheral_LinkEstablished)調(diào)用就可以了。?

enable_notify( peripheralConnList.connHandle,ENABLE);


如果使用的是我們的CH582充當(dāng)主機(jī);可以在Central例程中,連接成功后會(huì)去找服務(wù)的句柄,找到notify的句柄后進(jìn)行一個(gè)寫操作就可以了:

else if(centralDiscState == BLE_DISC_STATE_CCCD)
{
if(pMsg->method == ATT_READ_BY_TYPE_RSP &&
pMsg->msg.readByTypeRsp.numPairs > 0)
{
centralCCCDHdl = BUILD_UINT16(pMsg->msg.readByTypeRsp.pDataList[0],
pMsg->msg.readByTypeRsp.pDataList[1]);
centralProcedureInProgress = FALSE;

// Start do write CCCD
tmos_start_task(centralTaskId, START_WRITE_CCCD_EVT, DEFAULT_WRITE_CCCD_DELAY);? ? ? ? ? ?//通過(guò)這個(gè)寫任務(wù)打開(kāi)notify

// Display Characteristic 1 handle
PRINT("Found client characteristic configuration handle : %x \n", centralCCCDHdl);
}
centralDiscState = BLE_DISC_STATE_IDLE;
}

主機(jī)代碼獲取notify數(shù)據(jù)位置:

else if(pMsg->method == ATT_HANDLE_VALUE_NOTI)
{
PRINT("Receive noti: %x\n", *pMsg->msg.handleValueNoti.pValue);
}




已解決


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频