CH58X/CH59X通过handle直接通信

通常从机程序固定之后,他的特征值的handle值就是固定的。这时候我们主从机(都是MCU)进行通信的时候可以直接通过handle值,不用再去枚举服务。

下面以notify为例。

一、获取句柄

1、最直白,最简单的方式通过WCH的BLEDEBUG连接上从机之后可以直接获取handle值。

image

2、通过主机获取,详细方式可见CH58X/CH59X/CH32V20X主机枚举所有服务,MTU交互(多连接版) - 小舟从此逝_1 - 博客园

3、连接上之后从机自己去获取,如下图在simpleProfile_WriteAttrCB中获取方式相同,

image

 二:主机端程序

if(events & START_WRITE_CCCD_EVT)
    {
        PRINT("Procedure : %x\n",centralProcedureInProgress);
        if(centralProcedureInProgress == FALSE)//等待上一次流程结束
        {
            // Do a write
            attWriteReq_t req;
            req.cmd = FALSE;
            req.sig = FALSE;
    
                    req.handle = 0x43;

                    return (events ^ START_WRITE_CCCD_EVT);
                    break;

            }
            req.len = 2;
            req.pValue = GATT_bm_alloc(centralConnHandle, ATT_WRITE_REQ, req.len, NULL, 0);
            if(req.pValue != NULL)
            {
                req.pValue[0] = 1;
                req.pValue[1] = 0;

                if(GATT_WriteCharValue(centralConnHandle, &req, centralTaskId) == SUCCESS)
                {
                    centralProcedureInProgress = TRUE;//执行完一次任务后将标志写1
                }
                else
                {
                    GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);
                }
            }
        }
        return (events ^ START_WRITE_CCCD_EVT);
    }

2、打开通知后进入回调,可以通过下面的哈桑农户将数据打印出来

image

 

posted @ 2026-08-31 14:17  小舟从此逝_1  阅读(18)  评论(0)    收藏  举报