我正在开发BLE发送/接收数据。我有一些数据类型更改的问题。
BLE发送数据功能的类型如下:
typedef unsigned char Byte_t; /* Generic 8 bit Container. */
static void SPPLEDataIndicationEvent(DeviceInfo_t *DeviceInfo, unsigned int DataLength, Byte_t *Data)
我添加一个char数组并设置如下数据:
#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应用程序未收到任何数据。 (我确信DeviceInfo
在这里没问题。)
SPPLEDataIndicationEvent(DeviceInfo, sizeof(SensorData), SensorData);
如何将正确的数据输入 SPPLEDataIndicationEvent 功能?
答案 0 :(得分:2)
您的指针指向未定义的地址。它是Undefined Behavior
你必须初始化你的指针
Byte_t *SensorData = malloc(requested_size);
if (SensorData != NULL)
{
// your stuff
}
free(SensorData);
或者将其声明为数组
static Byte_t SensorData[requested_size];
答案 1 :(得分:0)
SensorData
只是一个指针,它没有任何价值。你需要为它实际分配内存。
将SensorData
的定义更改为:
static Byte_t SensorData[5];
将解决您的问题。
您的程序确实运行了,您正在访问您不应该访问的数据。
答案 2 :(得分:0)
我认为你应该添加以下行来为你的SensorData
数组分配内存:
SensorData=malloc(sizeof(Byte_t)*5);
或者你会得到"分段错误"当您尝试访问SensorData[]
时。