我在做一个蓝牙点灯的小实验,具体思路是:主机注册按键事件,然后通过发送按键sw1/sw2不同的特征值uuid来控制从机小灯的亮灭。但是事实上小灯并没有反应,是我的数据没有发送过去还是我的程式有问题呢?麻烦大家帮我看看,类似一个无线开关功能的东西。
主机:uint8 gStatus;
static void simpleBLECentral_HandleKeys( uint8 shift, uint8 keys ){(void)shift; // Intentionally unreferenced parameterif ( keys & HAL_KEY_SW_1 ){NPI_WriteTransport("KEY K1\n",7);// Do a writeattWriteReq_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 writeattWriteReq_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;
各位帮帮我看看,或者给我出出主意改怎么弄一个无线的控制端
Barbara Wu:
看起来有两部分可能会导致点灯失败。
建议首先判断一下是否特征值有根据操作改变,如果这部分没有问题就再判断一下是否是开关灯的代码有误。
把BLE的操作和LED的操作剥离开会比较容易定位问题