如何将正确的数据类型放入Byte_t * Data的函数中?

时间:2016-05-20 07:32:46

标签: c

我正在开发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 功能?

3 个答案:

答案 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[]时。