一、实时时钟
时间戳(实时的时间【单位:s】):
使用"time.h"文件:
mktime() ——得到一个时间戳
localtime() ——得到一个当前时间的结构体(包含:年-月-日 时:分:秒)
eg:
time_t timestamp = mktime(&utc_time); //得到一个时间戳(单位为秒)
struct tm *beijing_time = localtime(×tamp);
- 在window的powershell获取unix时间戳命令:
[int][double]::Parse((Get-Date -UFormat %s))
二、弱函数
想要实现在其他文件中调用该文件函数,可以使用弱函数调用,在相关对应文件中重写
弱函数格式: __weak
eg:回调函数就用的该种形式
__weak void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
三、cjson
cJSON_中Delete与free :
在C语言中,内存的释放主要是通过free
函数完成的,free
是C标准库中的一个函数,用于释放之前通过malloc
、calloc
或realloc
函数分配的内存。
在C语言环境下,如果你使用cJSON
库,当你不再需要一个cJSON
结构体时,你应该使用cJSON_Delete
函数来释放内存。cJSON_Delete
函数不仅释放了由cJSON
创建的结构体本身占用的内存,还会递归地释放结构体中所有嵌套的子结构体所占用的内存。这是因为cJSON
结构体通常包含指向子结构体的指针,如果不递归地释放,会导致内存泄漏。
/* 开源库网站:https://github.com/
(xml 与 json格式)
发送什么形式的数据到数据库:
- xml
- json
{"name": "zs", "age": 10, "sex": "male"}
javascript object notation
json对象
{ } 键值对 key-value
{ key: v , key: v,....}
key: 必须是字符串 ""
v: 可以是任何类型: json值类型, json对象, json数组
{ "name": "zs",
"age": 10,
"sex": "male",
"girl": { name": "zs", "age": 10, "sex": "male" }
}
json数组:
只要是方括号括起来的就是数组 : []
数组中可以存储任意类型 json对象, json值类型
[{ }, { },...]
[1,2,3]
字符串 "abc"
整数 123
浮点数 1.111
布尔值 true/false
空 null
/*使用工具:cjson
* 最终需要得到一个json对象
*/
cJSON *obj = cJSON_CreateObject();
/*添加一个一个的成员*/
cJSON_AddNumberToObject(obj, "lat", uploadData->lat);
cJSON_AddStringToObject(obj, "latDir", (char *)uploadData->latDir); //这只能接收字符串,所以latDir定义的是字符串类型
cJSON_AddNumberToObject(obj, "lon", uploadData->lon);
cJSON_AddStringToObject(obj, "lotDir", (char *)uploadData->lonDir);
cJSON_AddNumberToObject(obj, "speed", uploadData->speed);
cJSON_AddStringToObject(obj, "dateTime", (char *)uploadData->dateTime);
cJSON_AddNumberToObject(obj, "stepNum", uploadData->stepNum);
char *jsonStr = cJSON_PrintUnformatted(obj); //组成输出一个未格式化数据,节省内存
/*释放内存*/
cJSON_Delete(obj);
/*字符串的内存也要释放*/
cJSON_free(jsonStr);
cJSON *obj = cJSON_CreateObject(); //创建 返回了一个字符串结构体指针(相当于一个[void *]类型,
char *jsonStr = cJSON_PrintUnformatted(obj);
内存分配函数 :malloc() 函数用于分配一块连续的内存空间。也是返回一个void指针,指向新分配内存块的地址
动态内存分配指根据需要向系统申请所需大小的空间,由于未在声明部分定义其为变量或者数组,不能通过变量名或者数组名来引用这些数据,只能通过*指针*来引用)
【堆区是 存放malloc()等函数动态分配的数据 内存的总命名】
需要进行下堆内存释放,要不会出现 内存溢出(又名:泄露)的情况
释放内存 :cJSON_Delete(obj); //不仅释放cjson本身所创建结构体占用的内存,也会释放子结构体的
cJSON_free(jsonStr); //该函数比较通用,方便移植
序列化:
把编程语言对应的数据结构转成json格式的字符串
把结构体数据编程json
反序列化(解析):
把json格式的字符串转成编程语言对应的数据结构
把json编程结构体数据
*/
标签:obj,函数,cJSON,实时,uploadData,json,内存,时钟 From: https://www.cnblogs.com/petard/p/18306156