开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 1 Fork 0

Schips/quick-cpp

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
quick-cpp
/
example
/
inih.example.cpp
quick-cpp
/
example
/
inih.example.cpp
inih.example.cpp 3.77 KB
一键复制 编辑 原始数据 按行查看 历史
Schips 提交于 2023年08月29日 15:26 +08:00 . example : demo for inih
#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
using std::vector;
using std::string;
#include <iostream>
using std::ios;
using std::cout;
using std::endl;
#ifdef __cplusplus
extern "C"{
#endif
// C code...
#include "ini.h"
#include <string.h>
#ifdef __cplusplus
}
#endif
#define BUILD_IN_INI_SECTION_NAME "GLOBAL"
#define CONFIG_BUFF_MAX_SIZE 64
struct global_setting
{
int timeout_s;
string bus;
string file;
string bus_arg;
};
struct global_setting g_setting;
struct configuration
{
int send_buff_cnt;
unsigned char send_buff[CONFIG_BUFF_MAX_SIZE];
int recv_buff_cnt;
unsigned char recv_buff[CONFIG_BUFF_MAX_SIZE];
} ;
//创建并初始化一个 unordered_map 容器,其存储的 <string, struct configuration> 类型的键值对
std::unordered_map<std::string, struct configuration> my_uMap;
static int cfg_handler(void* user, const char* section, const char* name,
const char* value)
{
//struct configuration* pconfig = (struct configuration*)user;
string temp_str;
int ret;
unsigned char *p;
int *pi;
#define MATCH(s, n) strcmp(section, s) == 0 && strcmp(name, n) == 0
#define MATCH_SECTION(s) strcmp(section, s) == 0
#define MATCH_NAME(s) strcmp(name, s) == 0
// 这个inih 做了ini 头、键值对的判断、赋值。
// 全局配置
if (MATCH_SECTION(BUILD_IN_INI_SECTION_NAME))
{
if(MATCH_NAME("bus"))
{
g_setting.bus = value;
}
if(MATCH_NAME("file"))
{
g_setting.file = value;
}
if(MATCH_NAME("bus_arg"))
{
g_setting.bus_arg = value;
}
if(MATCH_NAME("timeout_s"))
{
g_setting.timeout_s = atoi(value);
}
//printf("Par : [%s] [%s] [%s]\n", section, name, value);
//pconfig->ip_addr = strdup(value);
}
// 命令操作
else
{
//printf("Par : [%s] [%s]\n", name, value);
if(MATCH_NAME("send_buff"))
{
p = my_uMap[section].send_buff;
pi = &my_uMap[section].send_buff_cnt;
} else if(MATCH_NAME("recv_buff"))
{
p = my_uMap[section].recv_buff;
pi = &my_uMap[section].recv_buff_cnt;
}else
{
printf("Skip\n");
return 0;
}
temp_str = string(value);
temp_str = subreplace(temp_str, "'", "");
ret = str_to_byte(temp_str, p, CONFIG_BUFF_MAX_SIZE);
*pi = ret;
for(int i = 0; i < ret ; i++)
{
printf(" 0x%02x ", p[i]);
}
printf("\n");
printf("\n");
}
return 1;
}
int load_config(const char * ini_file)
{
if(ini_file == NULL)
{
return -1;
}
//struct configuration config;
//if (ini_parse(ini_file, cfg_handler, &config) < 0)
if (ini_parse(ini_file, cfg_handler, NULL) < 0)
{
printf("Can't load '%s'\n", ini_file);
return -1;
}
return 0;
}
#if 0
[GLOBAL]
bus = uart
file = /dev/ttyS3
bus_arg = 115200
timeout=1
; 保存当前配置
[save_config]
send_buff = 'AA 04 00 11 01 C0 EB AA'
recv_buff = '55 05 00 11 33 01 9F EB AA'
; 恢复出厂设置
[reset_as_factory]
send_buff = 'AA 04 00 12 02 C2 EB AA'
recv_buff = '55 05 00 12 33 01 A0 EB AA'
#endif
int main(int argc, char* argv[])
{
int ret;
string ini_file("test.ini");
string action;
char *tmp;
unsigned char *send_buff, *recv_buff;
int send_buff_cnt, recv_buff_cnt;
// 参数1 : 指定发送的串口命令
if( argc >= 2 )
{
action = argv[1];
}
if(action == BUILD_IN_INI_SECTION_NAME)
{
printf("[%s] is NOT FOR USE.\n", action.c_str());
return -1;
}
ret = load_config(ini_file.c_str());
return ret;
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

快速地创建C++工程
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/schips/quick-cpp.git
git@gitee.com:schips/quick-cpp.git
schips
quick-cpp
quick-cpp
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /