This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

其他特征值怎么用



我想直接用定义的其他特征值,找不到方法,是不是应用只能用特征值1,要使用其他的特征值就只能修改特征值1里面的设置吗?那位大侠能帮忙解决

  • goobegin,

    你是说simpleBLEPeriaheral工程吗?

    所有特征值都是可以用的。

    请参考iOS上的multiTool 或者PC上的device monitor, 或者Android上的device motnitor 

  • yan

    我用SimpleBLECentral和SimpleBLEPeripheral下载到两块开发板上面通信的,不知道怎么使用其他特征值

  • central的程序里,按键只对char1有效,这是例程里这么写的,就是一个例子而已。你可以在central中自行修改这部分的程序。

    1

  • shen

    你好,simpleBLECharHdl这个句柄在simpleBLECharHdl = BUILD_UINT16( pMsg->msg.readByTypeRsp.dataList[0],pMsg->msg.readByTypeRsp.dataList[1] );处获取值,具体怎么改呢?

  • 你好,我替shen回答你第二个问题

    你好,simpleBLECharHdl这个句柄在simpleBLECharHdl = BUILD_UINT16( pMsg->msg.readByTypeRsp.dataList[0],pMsg->msg.readByTypeRsp.dataList[1] );处获取值,具体怎么改呢?

    在simpleBLECentral.c文件中找到simpleBLEGATTDiscoveryEvent函数,这是一个发现特征值的函数,仔细阅读。

    和这个问题相关的一段:

    if ( simpleBLESvcStartHdl != 0 )
    {
    // Discover characteristic
    simpleBLEDiscState = BLE_DISC_STATE_CHAR;

    req.startHandle = simpleBLESvcStartHdl;
    req.endHandle = simpleBLESvcEndHdl;
    req.type.len = ATT_BT_UUID_SIZE;
    req.type.uuid[0] = LO_UINT16(SIMPLEPROFILE_CHAR1_UUID);
    req.type.uuid[1] = HI_UINT16(SIMPLEPROFILE_CHAR1_UUID);

    GATT_ReadUsingCharUUID( simpleBLEConnHandle, &req, simpleBLETaskId );
    }

    修改就可以了 ,与之对应的只有char1有读写权限,如果这个地方改掉之后,从机的特征值的读写权限要改成能读写才行。

  • hua 

    谢谢你!我添加了一个可读写的 SIMPLEPROFILE_CHAR6_UUID,然后在simpleBLECentral里面修改了你说的地方,最后

    在simpleBLEDoWrite里

    req.handle = simpleBLECharHdl;

    req.len = 5;

    req.value[0] = 10;req.value[1] = 11;req.value[2] = 12;req.value[3] = 13;req.value[4] = 14;

    req.sig = 0;

    req.cmd = 0;

    发出数据后出现Write Error 13 .这是怎么回事呢?