Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将正确的数据类型放入字节数据的函数中?_C - Fatal编程技术网

C 如何将正确的数据类型放入字节数据的函数中?

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

我正在为BLE发送/接收数据进行开发。我对数据类型更改有一些问题

BLE发送数据功能的类型如下所示:

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[]
时,会出现“分段错误”