hi3861软件

This commit is contained in:
2025-10-18 16:05:39 +08:00
parent 3d7a4dcb4d
commit 30edbda7de
36 changed files with 1888 additions and 1785 deletions

72
json_parser.c Normal file
View File

@@ -0,0 +1,72 @@
#include "json_parser.h"
#include "chinese_char_map.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 简单的JSON解析函数解析格式: {"cmd":1,"text":"hello"}
int ParseJsonCommand(const char* json_str, JsonCommand* command) {
if (!json_str || !command) {
return -1;
}
// 初始化结构体
command->cmd = 0;
memset(command->text, 0, MAX_TEXT_LENGTH);
// 查找cmd字段
const char* cmd_pos = strstr(json_str, "\"cmd\":");
if (cmd_pos) {
cmd_pos += 6; // 跳过"cmd":
// 跳过空格
while (*cmd_pos == ' ') cmd_pos++;
command->cmd = atoi(cmd_pos);
}
// 查找text字段
const char* text_pos = strstr(json_str, "\"text\":");
if (text_pos) {
text_pos += 7; // 跳过"text":
// 跳过空格和引号
while (*text_pos == ' ' || *text_pos == '\"') text_pos++;
// 复制文本直到遇到引号或字符串结束
int i = 0;
while (*text_pos && *text_pos != '\"' && i < MAX_TEXT_LENGTH - 1) {
command->text[i++] = *text_pos++;
}
command->text[i] = '\0';
}
return 0;
}
// 创建IP地址消息格式: {"type":"ip","address":"192.168.1.100"}
int CreateIpMessage(char* buffer, int buffer_size, const char* ip_address) {
if (!buffer || !ip_address || buffer_size < 50) {
return -1;
}
int len = snprintf(buffer, buffer_size,
"{\"type\":\"ip\",\"address\": \"%s\"}",
ip_address);
return (len > 0 && len < buffer_size) ? 0 : -1;
}
// 查找中文字符在fonts3数组中的索引
int FindChineseCharIndex(const char* utf8_char) {
if (!utf8_char) {
return -1;
}
// 遍历映射表查找匹配的字符
for (int i = 0; i < CHINESE_CHAR_MAP_SIZE; i++) {
if (strcmp(utf8_char, chinese_char_map[i].utf8_char) == 0) {
return chinese_char_map[i].font_index;
}
}
// 未找到匹配的字符
return -1;
}