我的程序:


if(CYBLE_CLIENT_STATE_CONNECTED == CyBle_GetClientState())
{
/*Discover all server DB items*/
if(CYBLE_ERROR_OK != CyBle_GattcStartDiscovery(cyBle_connHandle))
{
}

/* Enable notifications on the server side */
uint8 value = CYBLE_CCCD_NOTIFICATION;
CYBLE_GATTC_WRITE_CMD_REQ_T write_server;

write_server.attrHandle = BLE_LOCK_CCCD_HANDLE;
write_server.value.len = 1;
write_server.value.val = &value;

CyBle_GattcWriteWithoutResponse(connHandle,&write_server);

u_Send_Flag=0;


}
```      

主机向从机发送数据函数当连接成功时 主机给从机发送数据 从机用notify回主机 但是现在就是发不过去

void SendWriteData(uint8* bufferData)
{
    CYBLE_GATTC_WRITE_REQ_T write_server;
        write_server.attrHandle = BLE_WRITE_LOCK_CCCD_HANDLE;
        write_server.value.len = 4;
        write_server.value.val = bufferData;
        CyBle_GattcWriteCharacteristicValue(connHandle,&write_server);
}

    我找到问题了 这个例程是可以用的 我还在调试 之后会和大家分享一下

      Wireless-Tech 我找到问题了 这个例程是可以用的 我还在调试 之后会和大家分享一下

      看看写特征值的时候,查看下返回的状态

        Wireless-Tech 看看写特征值的时候,查看下返回的状态

        现在还有一个问题我主机使能Notify
        Notify函数:

        void EnableNotification(void)
        {
                uint8 value = CYBLE_CCCD_NOTIFICATION;
                CYBLE_GATTC_WRITE_CMD_REQ_T write_server;
                
                write_server.attrHandle = BLE_LOCK_CCCD_HANDLE;
                write_server.value.len = 1;
                write_server.value.val = &value;
                
                CyBle_GattcWriteWithoutResponse(connHandle,&write_server);   
        }

        但是收到的数据只有一位 我从机发送的是4个字节 手机测试没有问题,这个是接收从机 notify的函数 测试结果是 接收的数据个数是4个 但是数组值只有一个

                case CYBLE_EVT_GATTC_HANDLE_VALUE_NTF:
                                /*Got data from server */
                                
                        if(g_notification)
                        {
        //                    GetNotification(Server_Data,g_Len,eventParam);
                                CYBLE_GATTC_HANDLE_VALUE_NTF_PARAM_T *UART_RX_data = (CYBLE_GATTC_HANDLE_VALUE_NTF_PARAM_T *)eventParam;
                                    *Server_Data=*UART_RX_data->handleValPair.value.val;
                                 g_Len =UART_RX_data->handleValPair.value.len;
                            UART_SpiUartPutArray(Server_Data,g_Len);     
                        }
                        
                    break;

          Wireless-Tech 现在还有一个问题我主机使能Notify

          你的API函数用错了,从机发送给主机用的是以下这个API函数:

          CYBLE_API_RESULT_T CyBle_GattsNotification  ( CYBLE_CONN_HANDLE_T  connHandle,  
            CYBLE_GATTS_HANDLE_VALUE_NTF_T *  ntfParam  
           ) 

            我靠,一大早精神状态不好,看错了,问题在这里如下:

            CYBLE_GATTC_HANDLE_VALUE_NTF_PARAM_T *UART_RX_data = (CYBLE_GATTC_HANDLE_VALUE_NTF_PARAM_T *)eventParam;
                                        *Server_Data=*UART_RX_data->handleValPair.value.val;
                                     g_Len =UART_RX_data->handleValPair.value.len;

              已解决!!!

                撰写回复...