Browse Source

串口接收并cjson解析后返回实现

master
sc 19 hours ago
parent
commit
43f2057b44
  1. 435
      applications/DATA/DATA_comm.c
  2. 4
      applications/DATA/DATA_comm.h
  3. 2
      applications/DATA/DATA_uart.c
  4. 4
      applications/DATA/Variable.c

435
applications/DATA/DATA_comm.c

@ -13,7 +13,6 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include "string.h"
#include "data_comm.h" #include "data_comm.h"
#include "language.h" #include "language.h"
#include "Variable.h" #include "Variable.h"
@ -21,42 +20,8 @@
rt_mq_t proc_mq; rt_mq_t proc_mq;
void proc_thread_entry(void *parameter) char cjson_falg=0;//是否解析cjson
{
struct proc_request *req;
while (1)
{
// 接收请求指针
if (rt_mq_recv(proc_mq, &req, sizeof(req), RT_WAITING_FOREVER) == RT_EOK)
{
if (!req) continue;
rt_kprintf("Processing: %.*s\n", req->input_len, req->input);
rt_kprintf("Processing: %d\n", req->input_len);
rt_kprintf("Processing: %s\n", req->input);
memcpy(DATA_api,req->input,5);
//DATA_api[5]="\0";
rt_kprintf("DATA_api: %s\n", DATA_api);
extract_between(req->input, "[", "]", machine_ID, sizeof(machine_ID));
rt_kprintf("machine_ID: %s\n", machine_ID);
// 示例处理:回显
req->output_len = rt_snprintf(req->output, sizeof(req->output),
"Echo: %.*s", req->input_len, req->input);
// 通知 UART 线程可以发送了
if (req->sem)
{
rt_sem_release(req->sem);
}
}
}
}
// 变量
char *json_buffer=NULL; char *json_buffer=NULL;
uint8_t cjson_falg=0;//是否解析cjson
/** /**
* *
* @param src * @param src
@ -85,7 +50,6 @@ int extract_between(const char *src, const char *start, const char *end, char *b
return 0; return 0;
} }
// 提取字符串并安全拷贝 // 提取字符串并安全拷贝
#define GET_STRING(dst, obj, key, size) do { \ #define GET_STRING(dst, obj, key, size) do { \
cJSON* _item = cJSON_GetObjectItem(obj, key); \ cJSON* _item = cJSON_GetObjectItem(obj, key); \
@ -94,227 +58,262 @@ int extract_between(const char *src, const char *start, const char *end, char *b
(dst)[(size) - 1] = '\0'; \ (dst)[(size) - 1] = '\0'; \
} \ } \
} while(0) } while(0)
// 提取浮点数 // 提取浮点数
#define GET_FLOAT_VAR(var, obj, key, default_val) do { \ #define GET_FLOAT_VAR(var, obj, key, default_val) do { \
cJSON* _item = cJSON_GetObjectItem(obj, key); \ cJSON* _item = cJSON_GetObjectItem(obj, key); \
(var) = cJSON_IsNumber(_item) ? (float)_item->valuedouble : (default_val); \ (var) = cJSON_IsNumber(_item) ? (float)_item->valuedouble : (default_val); \
} while(0) } while(0)
// 提取整数(int 类型) // 提取整数(int 类型)
#define GET_INT_VAR(var, obj, key, default_val) do { \ #define GET_INT_VAR(var, obj, key, default_val) do { \
cJSON* _item = cJSON_GetObjectItem(obj, key); \ cJSON* _item = cJSON_GetObjectItem(obj, key); \
(var) = cJSON_IsNumber(_item) ? (int)_item->valueint : (default_val); \ (var) = cJSON_IsNumber(_item) ? (int)_item->valueint : (default_val); \
} while(0) } while(0)
// ===== cJSON分析 ===== // ===== cJSON分析 =====//
void pasre_DAT(const char *api, const char *json_str) void pasre_DAT(const char *api, const char *json_str)
{ {
cJSON *root=cJSON_Parse(json_str); cJSON *root=cJSON_Parse(json_str);
cJSON *dat=cJSON_CreateObject(); cJSON *dat=cJSON_CreateObject();
if(json_buffer){ if(json_buffer)
free(json_buffer); {
free(json_buffer);
json_buffer=NULL; json_buffer=NULL;
} }
if(strlen(json_str)>4){ if(strlen(json_str)>4)
{
cjson_falg=1; cjson_falg=1;
//判断json解析是否成功 //判断json解析是否成功
if(!root) if(!root)
{ {
printf("JSON parse error :%s\n",cJSON_GetErrorPtr()); rt_kprintf("JSON parse error :%s\n",cJSON_GetErrorPtr());
cJSON_Delete(root); cJSON_Delete(root);
// return "JSON parse error\n"; // return "JSON parse error\n";
}} }
}
if (strcmp(api, "SC800") == 0) {
// 处理 SC800
cJSON_AddItemToObject(dat,"Name",cJSON_CreateString(machine_name));
cJSON_AddItemToObject(dat,"Station",cJSON_CreateString(machine_ID));
cJSON_AddItemToObject(dat,"SYSKEY",cJSON_CreateString(machine_ID));
cJSON_AddItemToObject(dat,"Groups",cJSON_CreateString(machine_ID));
}
else if (strcmp(api, "SC810") == 0) {
//工单明细
// === 解析整数变量 StepN ===
GET_INT_VAR(StepN, root, "StepN", 0);
// 字符串赋值
GET_STRING(Work, root, "Work", sizeof(Work));
GET_STRING(Dye, root, "Dye", sizeof(Dye));
GET_STRING(StepID, root, "StepID", sizeof(StepID));
GET_STRING(SIDS1, root, "SIDS1", sizeof(SIDS1));
GET_STRING(SIDS2, root, "SIDS2", sizeof(SIDS2));
GET_STRING(SIDS3, root, "SIDS3", sizeof(SIDS3));
// 浮点数赋值
GET_FLOAT_VAR(P1, root, "P1", 0.0f);
GET_FLOAT_VAR(P2, root, "P2", 0.0f);
GET_FLOAT_VAR(P3, root, "P3", 0.0f);
GET_FLOAT_VAR(P4, root, "P4", 0.0f);
GET_FLOAT_VAR(P5, root, "P5", 0.0f);
GET_FLOAT_VAR(P1S1, root, "P1S1", 0.0f);
GET_FLOAT_VAR(P2S1, root, "P2S1", 0.0f);
GET_FLOAT_VAR(P3S1, root, "P3S1", 0.0f);
GET_FLOAT_VAR(P4S1, root, "P4S1", 0.0f);
GET_FLOAT_VAR(P5S1, root, "P5S1", 0.0f);
GET_FLOAT_VAR(P1S2, root, "P1S2", 0.0f);
GET_FLOAT_VAR(P2S2, root, "P2S2", 0.0f);
GET_FLOAT_VAR(P3S2, root, "P3S2", 0.0f);
GET_FLOAT_VAR(P4S2, root, "P4S2", 0.0f);
GET_FLOAT_VAR(P5S2, root, "P5S2", 0.0f);
GET_FLOAT_VAR(P1S3, root, "P1S3", 0.0f);
GET_FLOAT_VAR(P2S3, root, "P2S3", 0.0f);
GET_FLOAT_VAR(P3S3, root, "P3S3", 0.0f);
GET_FLOAT_VAR(P4S3, root, "P4S3", 0.0f);
GET_FLOAT_VAR(P5S3, root, "P5S3", 0.0f);
cJSON_AddItemToObject(dat,"Work",cJSON_CreateString(Work)); if (strcmp(api, "SC800") == 0)
cJSON_AddItemToObject(dat,"ReDye",cJSON_CreateNumber(Redye)); {// 处理 SC800
} cJSON_AddItemToObject(dat,"Name",cJSON_CreateString(machine_name));
else if (strcmp(api, "SC811") == 0) { cJSON_AddItemToObject(dat,"Station",cJSON_CreateString(machine_ID));
printf("Processing:SC811\n"); cJSON_AddItemToObject(dat,"SYSKEY",cJSON_CreateString(machine_ID));
} cJSON_AddItemToObject(dat,"Groups",cJSON_CreateString(machine_ID));
else if (strcmp(api, "SC812") == 0) { }
else if (strcmp(api, "SC810") == 0)
{//工单明细
// === 解析整数变量 StepN ===
GET_INT_VAR(StepN, root, "StepN", 0);
// 字符串赋值
GET_STRING(Work, root, "Work", sizeof(Work));
GET_STRING(Dye, root, "Dye", sizeof(Dye));
GET_STRING(StepID, root, "StepID", sizeof(StepID));
GET_STRING(SIDS1, root, "SIDS1", sizeof(SIDS1));
GET_STRING(SIDS2, root, "SIDS2", sizeof(SIDS2));
GET_STRING(SIDS3, root, "SIDS3", sizeof(SIDS3));
// 浮点数赋值
GET_FLOAT_VAR(P1, root, "P1", 0.0f);
GET_FLOAT_VAR(P2, root, "P2", 0.0f);
GET_FLOAT_VAR(P3, root, "P3", 0.0f);
GET_FLOAT_VAR(P4, root, "P4", 0.0f);
GET_FLOAT_VAR(P5, root, "P5", 0.0f);
GET_FLOAT_VAR(P1S1, root, "P1S1", 0.0f);
GET_FLOAT_VAR(P2S1, root, "P2S1", 0.0f);
GET_FLOAT_VAR(P3S1, root, "P3S1", 0.0f);
GET_FLOAT_VAR(P4S1, root, "P4S1", 0.0f);
GET_FLOAT_VAR(P5S1, root, "P5S1", 0.0f);
GET_FLOAT_VAR(P1S2, root, "P1S2", 0.0f);
GET_FLOAT_VAR(P2S2, root, "P2S2", 0.0f);
GET_FLOAT_VAR(P3S2, root, "P3S2", 0.0f);
GET_FLOAT_VAR(P4S2, root, "P4S2", 0.0f);
GET_FLOAT_VAR(P5S2, root, "P5S2", 0.0f);
GET_FLOAT_VAR(P1S3, root, "P1S3", 0.0f);
GET_FLOAT_VAR(P2S3, root, "P2S3", 0.0f);
GET_FLOAT_VAR(P3S3, root, "P3S3", 0.0f);
GET_FLOAT_VAR(P4S3, root, "P4S3", 0.0f);
GET_FLOAT_VAR(P5S3, root, "P5S3", 0.0f);
cJSON_AddItemToObject(dat,"Work",cJSON_CreateString(Work));
cJSON_AddItemToObject(dat,"ReDye",cJSON_CreateNumber(Redye));
}
else if (strcmp(api, "SC811") == 0) {
printf("Processing:SC811\n");
}
else if (strcmp(api, "SC812") == 0) {
printf("Processing:SC812\n"); printf("Processing:SC812\n");
} }
else if (strcmp(api, "SC813") == 0) { else if (strcmp(api, "SC813") == 0) {
printf("Processing:SC813\n"); printf("Processing:SC813\n");
} }
else if (strcmp(api, "SC820") == 0) { else if (strcmp(api, "SC820") == 0) {
printf("Processing:SC820\n"); printf("Processing:SC820\n");
} }
else if (strcmp(api, "SC821") == 0) { else if (strcmp(api, "SC821") == 0) {
printf("Processing:SC821\n"); printf("Processing:SC821\n");
} }
else if (strcmp(api, "SC822") == 0) { else if (strcmp(api, "SC822") == 0) {
printf("Processing:SC822\n"); printf("Processing:SC822\n");
} }
else if (strcmp(api, "SC827") == 0) { else if (strcmp(api, "SC827") == 0) {
printf("Processing:SC827\n"); printf("Processing:SC827\n");
} }
else if (strcmp(api, "SC828") == 0) { else if (strcmp(api, "SC828") == 0) {
printf("Processing:SC828\n"); printf("Processing:SC828\n");
} }
else if (strcmp(api, "SC829") == 0) { else if (strcmp(api, "SC829") == 0) {
printf("Processing:SC829\n"); printf("Processing:SC829\n");
} }
else if (strcmp(api, "SC830") == 0) { else if (strcmp(api, "SC830") == 0) {
//当前信息 //当前信息
cJSON_AddItemToObject(dat,"ERR",cJSON_CreateBool(MACHINE_ERR)); cJSON_AddItemToObject(dat,"ERR",cJSON_CreateBool(MACHINE_ERR));
cJSON_AddItemToObject(dat,"LOCK",cJSON_CreateBool(MACHINE_LOCK)); cJSON_AddItemToObject(dat,"LOCK",cJSON_CreateBool(MACHINE_LOCK));
cJSON_AddItemToObject(dat,"Status",cJSON_CreateString(Message)); cJSON_AddItemToObject(dat,"Status",cJSON_CreateString(Message));
cJSON_AddItemToObject(dat,"Work",cJSON_CreateString(Work)); cJSON_AddItemToObject(dat,"Work",cJSON_CreateString(Work));
cJSON_AddItemToObject(dat,"ReDye",cJSON_CreateNumber(Redye)); cJSON_AddItemToObject(dat,"ReDye",cJSON_CreateNumber(Redye));
cJSON_AddItemToObject(dat,"Process",cJSON_CreateString(Process)); cJSON_AddItemToObject(dat,"Process",cJSON_CreateString(Process));
cJSON_AddItemToObject(dat,"Step",cJSON_CreateString(Step)); cJSON_AddItemToObject(dat,"Step",cJSON_CreateString(Step));
cJSON_AddItemToObject(dat,"User",cJSON_CreateBool(MACHINE_USER)); cJSON_AddItemToObject(dat,"User",cJSON_CreateBool(MACHINE_USER));
cJSON_AddItemToObject(dat,"InfoS",cJSON_CreateNumber(UserInfoStart)); cJSON_AddItemToObject(dat,"InfoS",cJSON_CreateNumber(UserInfoStart));
cJSON_AddItemToObject(dat,"Info",cJSON_CreateString(Info)); cJSON_AddItemToObject(dat,"Info",cJSON_CreateString(Info));
cJSON_AddItemToObject(dat,"RUN",cJSON_CreateNumber(RUN)); cJSON_AddItemToObject(dat,"RUN",cJSON_CreateNumber(RUN));
cJSON_AddItemToObject(dat,"STEPID",cJSON_CreateNumber(STEPID)); cJSON_AddItemToObject(dat,"STEPID",cJSON_CreateNumber(STEPID));
cJSON_AddItemToObject(dat,"CALL",cJSON_CreateBool(MACHINE_CALL)); cJSON_AddItemToObject(dat,"CALL",cJSON_CreateBool(MACHINE_CALL));
cJSON_AddItemToObject(dat,"MST",cJSON_CreateNumber(MST));
cJSON_AddItemToObject(dat,"MST",cJSON_CreateNumber(MST)); cJSON_AddItemToObject(dat,"MTT",cJSON_CreateNumber(MTT));
cJSON_AddItemToObject(dat,"MTT",cJSON_CreateNumber(MTT)); cJSON_AddItemToObject(dat,"MTL",cJSON_CreateNumber(MTL));
cJSON_AddItemToObject(dat,"MTL",cJSON_CreateNumber(MTL)); cJSON_AddItemToObject(dat,"MTH",cJSON_CreateNumber(MTH));
cJSON_AddItemToObject(dat,"MTH",cJSON_CreateNumber(MTH)); cJSON_AddItemToObject(dat,"MUT",cJSON_CreateNumber(MUT));
cJSON_AddItemToObject(dat,"MUT",cJSON_CreateNumber(MUT)); cJSON_AddItemToObject(dat,"STTA",cJSON_CreateNumber(STTA));
cJSON_AddItemToObject(dat,"STTA",cJSON_CreateNumber(STTA)); cJSON_AddItemToObject(dat,"STLA",cJSON_CreateNumber(STLA));
cJSON_AddItemToObject(dat,"STLA",cJSON_CreateNumber(STLA)); cJSON_AddItemToObject(dat,"STTB",cJSON_CreateNumber(STTB));
cJSON_AddItemToObject(dat,"STTB",cJSON_CreateNumber(STTB)); cJSON_AddItemToObject(dat,"STLB",cJSON_CreateNumber(STLB));
cJSON_AddItemToObject(dat,"STLB",cJSON_CreateNumber(STLB)); cJSON_AddItemToObject(dat,"STTC",cJSON_CreateNumber(STTC));
cJSON_AddItemToObject(dat,"STTC",cJSON_CreateNumber(STTC)); cJSON_AddItemToObject(dat,"STLC",cJSON_CreateNumber(STLC));
cJSON_AddItemToObject(dat,"STLC",cJSON_CreateNumber(STLC)); }
} else if (strcmp(api, "SC831") == 0)
else if (strcmp(api, "SC831") == 0) { {//当前步骤信息
//当前步骤信息 cJSON_AddItemToObject(dat,"Work",cJSON_CreateString(Work));
cJSON_AddItemToObject(dat,"Work",cJSON_CreateString(Work)); cJSON_AddItemToObject(dat,"ReDye",cJSON_CreateNumber(Redye));
cJSON_AddItemToObject(dat,"ReDye",cJSON_CreateNumber(Redye)); }
} else if (strcmp(api, "SC832") == 0)
else if (strcmp(api, "SC832") == 0) { {//当前细节信息
//当前细节信息 cJSON_AddItemToObject(dat,"Pump",cJSON_CreateNumber(Pump));//泵
cJSON_AddItemToObject(dat,"Pump",cJSON_CreateNumber(Pump));//泵 cJSON_AddItemToObject(dat,"TC",cJSON_CreateNumber(TC));//温度比例
cJSON_AddItemToObject(dat,"TC",cJSON_CreateNumber(TC));//温度比例 cJSON_AddItemToObject(dat,"Fan",cJSON_CreateNumber(Fan));//风机
cJSON_AddItemToObject(dat,"Fan",cJSON_CreateNumber(Fan));//风机 cJSON_AddItemToObject(dat,"Pull",cJSON_CreateNumber(Pull));//提布
cJSON_AddItemToObject(dat,"Pull",cJSON_CreateNumber(Pull));//提布 cJSON_AddItemToObject(dat,"Swing",cJSON_CreateNumber(Swing));//摆布
cJSON_AddItemToObject(dat,"Swing",cJSON_CreateNumber(Swing));//摆布 cJSON_AddItemToObject(dat,"STA",cJSON_CreateNumber(STA));//料1
cJSON_AddItemToObject(dat,"STA",cJSON_CreateNumber(STA));//料1 cJSON_AddItemToObject(dat,"STB",cJSON_CreateNumber(STB));//料2
cJSON_AddItemToObject(dat,"STB",cJSON_CreateNumber(STB));//料2 cJSON_AddItemToObject(dat,"STC",cJSON_CreateNumber(STC));//料3
cJSON_AddItemToObject(dat,"STC",cJSON_CreateNumber(STC));//料3 }
} else if (strcmp(api, "SC833") == 0)
else if (strcmp(api, "SC833") == 0) { {//当前领料单信息
//当前领料单信息 cJSON_AddItemToObject(dat,"Work",cJSON_CreateString(Work));
cJSON_AddItemToObject(dat,"Work",cJSON_CreateString(Work)); cJSON_AddItemToObject(dat,"ReDye",cJSON_CreateNumber(Redye));
cJSON_AddItemToObject(dat,"ReDye",cJSON_CreateNumber(Redye)); }
} else if (strcmp(api, "SC851") == 0)
else if (strcmp(api, "SC851") == 0) { {//创建数组
//创建数组 cJSON *Dev = cJSON_CreateArray();
cJSON *Dev = cJSON_CreateArray(); for (int i = 0; i < DIO_TABLE_SIZE; i++) {
// cJSON* item = cJSON_CreateObject();
for (int i = 0; i < DIO_TABLE_SIZE; i++) {
cJSON* item = cJSON_CreateObject();
// 添加 IO 编号 // 添加 IO 编号
cJSON_AddItemToObject(item, "P", cJSON_CreateNumber(dio_table[i].pin)); cJSON_AddItemToObject(item, "P", cJSON_CreateNumber(dio_table[i].pin));
// 添加默认值 // 添加默认值
cJSON_AddItemToObject(item, "D", cJSON_CreateNumber(dio_table[i].current_state)); cJSON_AddItemToObject(item, "D", cJSON_CreateNumber(dio_table[i].current_state));
// 添加枚举名称(字符串形式) // 添加枚举名称(字符串形式)
//cJSON_AddStringToObject(item, "str_enum_name", lang_get_str(dio_table[i].name)); //cJSON_AddStringToObject(item, "str_enum_name", lang_get_str(dio_table[i].name));
// 将当前项添加到数组中 // 将当前项添加到数组中
cJSON_AddItemToArray(Dev, item); cJSON_AddItemToArray(Dev, item);
} }
cJSON_AddItemToObject(dat,"DIO",Dev); cJSON_AddItemToObject(dat,"DIO",Dev);
} }
else if (strcmp(api, "SC852") == 0) { else if (strcmp(api, "SC852") == 0)
//创建数组 {//创建数组
cJSON *Dev = cJSON_CreateArray(); cJSON *Dev = cJSON_CreateArray();
for (int i = 0; i < AIO_TABLE_SIZE; i++) { for (int i = 0; i < AIO_TABLE_SIZE; i++) {
cJSON* item = cJSON_CreateObject(); cJSON* item = cJSON_CreateObject();
// 添加 IO 编号 // 添加 IO 编号
cJSON_AddNumberToObject(item, "P", aio_table[i].pin); cJSON_AddNumberToObject(item, "P", aio_table[i].pin);
// 添加默认值 // 添加默认值
cJSON_AddNumberToObject(item, "A", aio_table[i].current_Value); cJSON_AddNumberToObject(item, "A", aio_table[i].current_Value);
// 将当前项添加到数组中 // 将当前项添加到数组中
cJSON_AddItemToArray(Dev, item); cJSON_AddItemToArray(Dev, item);
} }
cJSON_AddItemToObject(dat,"A",Dev); cJSON_AddItemToObject(dat,"A",Dev);
} }
else if (strcmp(api, "SC853") == 0) { else if (strcmp(api, "SC853") == 0)
//创建数组 {//创建数组
cJSON *Dev = cJSON_CreateArray(); cJSON *Dev = cJSON_CreateArray();
for (int i = 0; i < DATA_TABLE_SIZE; i++) { for (int i = 0; i < DATA_TABLE_SIZE; i++) {
cJSON* item = cJSON_CreateObject(); cJSON* item = cJSON_CreateObject();
// 添加 IO 编号 // 添加 IO 编号
cJSON_AddNumberToObject(item, "P", data_table[i].pin); cJSON_AddNumberToObject(item, "P", data_table[i].pin);
// 添加默认值 // 添加默认值
cJSON_AddNumberToObject(item, "M", data_table[i].current_data); cJSON_AddNumberToObject(item, "M", data_table[i].current_data);
// 将当前项添加到数组中 // 将当前项添加到数组中
cJSON_AddItemToArray(Dev, item); cJSON_AddItemToArray(Dev, item);
} }
cJSON_AddItemToObject(dat,"M",Dev); cJSON_AddItemToObject(dat,"M",Dev);
} }
else if (strcmp(api, "SC854") == 0) { else if (strcmp(api, "SC854") == 0) {
printf("Processing:SC854\n");
} printf("Processing:SC854\n");
else if (strcmp(api, "SC855") == 0) {
}
else if (strcmp(api, "SC855") == 0) {
printf("Processing:SC855\n"); printf("Processing:SC855\n");
}
else if (strcmp(api, "SC859") == 0) { }
else if (strcmp(api, "SC859") == 0) {
printf("Processing:SC859\n"); printf("Processing:SC859\n");
}
else if (strcmp(api, "SC861") == 0) { }
else if (strcmp(api, "SC861") == 0) {
printf("Processing:SC861\n"); printf("Processing:SC861\n");
}
else if (strcmp(api, "SC862") == 0) { }
else if (strcmp(api, "SC862") == 0) {
printf("Processing:SC862\n"); printf("Processing:SC862\n");
}
else {
memcpy(DATA_api,"SC999",5);
}
json_buffer=cJSON_PrintUnformatted(dat);
cJSON_Delete(root);
cJSON_Delete(dat);
}
void proc_thread_entry(void *parameter)
{
struct proc_request *req;
while (1)
{
// 接收请求指针
if (rt_mq_recv(proc_mq, &req, sizeof(req), RT_WAITING_FOREVER) == RT_EOK)
{
if (!req) continue;
memcpy(DATA_api,req->input,5);
extract_between(req->input, "[", "]", machine_ID, sizeof(machine_ID));
char *p=strstr(req->input,"]");
if(!p){cjson_falg=0;}
else {
p += strlen("]");
}
//处理指令分析
pasre_DAT(DATA_api,p);
// 回复
int16_t total_len = strlen(machine_ID) + strlen(json_buffer) + 8;
char t_buffer[total_len];
snprintf(t_buffer,total_len,"%s[%s]%s",DATA_api,machine_ID,json_buffer);
req->output_len = rt_snprintf(req->output, sizeof(req->output),t_buffer);
// 通知 UART 线程可以发送了
if (req->sem)
{
rt_sem_release(req->sem);
}
} }
else {} }
//printf(dat);
json_buffer=cJSON_PrintUnformatted(dat);
cJSON_Delete(root);
cJSON_Delete(dat);
// return json_buffer;
} }
int data_comm_init(void) int data_comm_init(void)
@ -327,7 +326,7 @@ int data_comm_init(void)
} }
rt_thread_t tid = rt_thread_create("data_comm", proc_thread_entry, RT_NULL, rt_thread_t tid = rt_thread_create("data_comm", proc_thread_entry, RT_NULL,
1024*16, 20, 10); 1024*5, 20, 10);
if (tid != RT_NULL) if (tid != RT_NULL)
{ {
rt_thread_startup(tid); rt_thread_startup(tid);

4
applications/DATA/DATA_comm.h

@ -11,8 +11,8 @@
#define APPLICATIONS_DATA_COMM_H_ #define APPLICATIONS_DATA_COMM_H_
// 最大输入/输出长度 // 最大输入/输出长度
#define MAX_INPUT_LEN 512 #define MAX_INPUT_LEN 1024
#define MAX_OUTPUT_LEN 1024 #define MAX_OUTPUT_LEN 1024*3
// 请求结构体 // 请求结构体
struct proc_request { struct proc_request {

2
applications/DATA/DATA_uart.c

@ -155,7 +155,7 @@ static int get_line(char *buf, int maxlen)
int start_uart_thread(void) int start_uart_thread(void)
{ {
rt_thread_t tid = rt_thread_create("data_uart", uart_thread_entry, RT_NULL, rt_thread_t tid = rt_thread_create("data_uart", uart_thread_entry, RT_NULL,
4096, // 栈大小:4KB 1024*2, // 栈大小:3KB
25, // 优先级 25, // 优先级
10); // 时间片 10); // 时间片
if (tid != RT_NULL) if (tid != RT_NULL)

4
applications/DATA/Variable.c

@ -4,8 +4,8 @@
// ===== 实际定义 ===== // ===== 实际定义 =====
// 动态数据缓冲区(初始化为 NULL,后续分配) // 动态数据缓冲区(初始化为 NULL,后续分配)
char *DATA_dat = NULL; char *DATA_dat;
char *DATA_machins = NULL; char *DATA_machins;
char DATA_api[5]; char DATA_api[5];
char *machine_name = "Q109"; char *machine_name = "Q109";
char machine_ID[3] = "23"; char machine_ID[3] = "23";

Loading…
Cancel
Save