定义按键发送特征不能识别的到问题
时间:10-02
整理:3721RD
点击:
我在做一个蓝牙点灯的小实验,具体思路是:主机注册按键事件,然后通过发送按键sw1/sw2不同的特征值uuid来控制从机小灯的亮灭。但是事实上小灯并没有反应,是我的数据没有发送过去还是我的程式有问题呢?麻烦大家帮我看看,类似一个无线开关功能的东西。
主机:uint8 gStatus;
static void simpleBLECentral_HandleKeys( uint8 shift, uint8 keys ){
(void)shift; // Intentionally unreferenced parameter
if ( keys & HAL_KEY_SW_1 )
{ NPI_WriteTransport("KEY K1\n",7); // Do a write
attWriteReq_t req;
req.handle = simpleBLECharHdl;
req.len = 1;
req.value[0] = 0x00;
req.sig = 0;
req.cmd = 0;
GATT_WriteCharValue( simpleBLEConnHandle, &req, simpleBLETaskId );
}
if ( keys & HAL_KEY_SW_2 )
{ NPI_WriteTransport("KEY K2\n",7); // Do a write
attWriteReq_t req;
req.handle = simpleBLECharHdl;
req.len = 1;
req.value[0] = 0xff;
req.sig = 0; req.cmd = 0;
GATT_WriteCharValue( simpleBLEConnHandle, &req, simpleBLETaskId );
}}
从机我用CHAR1来接收主机发送过来的特征值:
case SIMPLEPROFILE_CHAR1:
SimpleProfile_GetParameter( SIMPLEPROFILE_CHAR1, &newValue );
#if (defined HAL_LCD) && (HAL_LCD == TRUE)
HalLcdWriteStringValue( "Char 1:", (uint16)(newValue), 10, HAL_LCD_LINE_3 );
#endif
// (defined HAL_LCD) && (HAL_LCD == TRUE)
if(newValue) {
HalLedSet(HAL_LED_1, HAL_LED_MODE_ON );
}
else {
HalLedSet(HAL_LED_1, HAL_LED_MODE_OFF );
} break;
各位帮帮我看看,或者给我出出主意改怎么弄一个无线的控制端
看起来有两部分可能会导致点灯失败。
建议首先判断一下是否特征值有根据操作改变,如果这部分没有问题就再判断一下是否是开关灯的代码有误。
把BLE的操作和LED的操作剥离开会比较容易定位问题