C 如何将正确的数据类型放入字节数据的函数中?
我正在为BLE发送/接收数据进行开发。我对数据类型更改有一些问题 BLE发送数据功能的类型如下所示:C 如何将正确的数据类型放入字节数据的函数中?,c,C,我正在为BLE发送/接收数据进行开发。我对数据类型更改有一些问题 BLE发送数据功能的类型如下所示: typedef unsigned char Byte_t; /* Generic 8 bit Container. */ static void SPPLEDataIndicationEvent(DeviceInfo_t *DeviceInfo, unsigned int DataLength, Byte_t *Data) #define Reserve
typedef unsigned char Byte_t; /* Generic 8 bit Container. */
static void SPPLEDataIndicationEvent(DeviceInfo_t *DeviceInfo, unsigned int DataLength, Byte_t *Data)
#define ReservedCode 0x01
#define Sensor_TypeCode 0xEA
static Byte_t *SensorData;
SensorData[0]=ReservedCode;
SensorData[1]=ReservedCode;
SensorData[2]=Sensor_TypeCode;
SensorData[3]=Sensor_TypeCode;
SensorData[4]=Sensor_TypeCode;
我添加了一个char数组,并按如下方式设置数据:
typedef unsigned char Byte_t; /* Generic 8 bit Container. */
static void SPPLEDataIndicationEvent(DeviceInfo_t *DeviceInfo, unsigned int DataLength, Byte_t *Data)
#define ReservedCode 0x01
#define Sensor_TypeCode 0xEA
static Byte_t *SensorData;
SensorData[0]=ReservedCode;
SensorData[1]=ReservedCode;
SensorData[2]=Sensor_TypeCode;
SensorData[3]=Sensor_TypeCode;
SensorData[4]=Sensor_TypeCode;
我尝试了以下方法,但似乎不起作用。BLE应用程序未收到任何数据。(我确信设备信息
在这里没有问题。)
如何将正确的数据放入SPPLEDataIndicationEvent函数中?
SensorData
只是一个指针,它没有值。您需要为它实际分配内存
将传感器数据的定义更改为:
static Byte_t SensorData[5];
会解决你的问题
奇怪的是,您的程序居然运行了,您正在访问不应该访问的数据。您的指针指向未定义的地址。是的 必须初始化指针
Byte_t *SensorData = malloc(requested_size);
if (SensorData != NULL)
{
// your stuff
}
free(SensorData);
或者将其声明为数组
static Byte_t SensorData[requested_size];
我认为您应该添加以下行来为
SensorData
阵列分配内存:
SensorData=malloc(sizeof(Byte_t)*5);
或者,当您尝试访问SensorData[]
时,会出现“分段错误”