栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

实习任务2

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实习任务2

了解配置(Protobuf)的获取和设置功能,明白序列化与反序列化的意义(2天)

  • Protobuf是Google开源的一种可用于结构化数据串行化(序列化)的数据缓存格式,适用于数据存储以及RPC数据交换格式。上网查询Protobuf相关资料后再进行下面过程。我司使用的是proto3。
  • 相关官方文档:
    • Language Guide (proto3)
    • Protocol Buffer Basics: C++
  • 输入IP地址登陆IE端,在设备信息->版本信息内,将系统版本的显示字符串改成显示数字。调用函数为main.cpp中的xxxx()。
  • 数字默认从0开始,每调用一次函数自加1(即每点击一次设备信息)。
  • 实现文本框中值的保存,设备重启后要从上次的值继续。(全局可能有多个地方调用此函数,不需要保证值的精确)。
    • 提示:在xxxx/xxxx/下创建一个新的proto文件,在其中增加一项新的配置。在xxxx/xxxx/xxxx.mk中的xxxx链入新的proto文件。配置使用可以参考xxxx/xxxx/xxxx/xxxx/xxxx/xxxx.cc。
  • 要求:必须使用抽象类xxxx提供的接口来实现,头文件位于xxxx/xxxx/xxxx/xxxx/xxxx.h。
//.proto代码    //后面的是.proto 大概的意思,各个参数不一样  这样助于理解 
//cyf就是个变量名,知道我的懂得都懂
syntax              = "proto3";
option optimize_for = CODE_SIZE;

package motupb.config;

message Cyf{
  int32 click_num = 1;
  bool local = 2;
}

message NumCyf{
  Cyf cyf_1 = 1;
//  Cyf cyf_2 = 2;
}

//class NumCyf{
//  class Cyf(){
//    int32 click_num = 0;
//  }cyf_1;
//  class Cyf{
//    int32 click_num = 0;
//  }cyf_2;
//}
//main.cc下的  要求在这里写的代码  
std::string GetSoftwareVersion() {
  release_version_t version;
  motupb::config::Cyf cyf_1;
  static bool is_first = true;
  if(is_first){
  if(!g_ConfigInterface.SetDefault("NumCyf.cyf_1",cyf_1))
    printf("设置默认配置失败!n");
  // if(!g_ConfigInterface.GetDefault("NumCyf.cyf_1", cyf_1))
  //   printf("获取默认配置失败!n");
  }
  g_ConfigInterface.GetConfig("NumCyf.cyf_1", cyf_1);
  cyf_1.set_click_num(cyf_1.click_num() + 1);
  if(cyf_1.click_num()>=100)
  cyf_1.clear_click_num();
  release_get_version(&version);
  char softversion[64]{};
  snprintf(softversion, sizeof(softversion), "%d",cyf_1.click_num());
  if(!g_ConfigInterface.SetConfig("NumCyf.cyf_1",cyf_1))
    printf("设置本地配置失败!n");
  is_first = false;

  return softversion;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395992.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号