• Lv0
    粉丝1

积分298 / 贡献0

提问41答案被采纳11文章1

从应用层传参给底层api时出错

云端筑梦 显示全部楼层 发表于 2023-10-26 10:40:09
【问题描述】
问题现象和发生的背景
这是底层napi的代码

  1. static napi_value zcwriteserial(napi_env env, napi_callback_info info) {
  2.         size_t argc=1;
  3.         napi_value args[1]={nullptr};
  4.         NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, nullptr, nullptr));
  5.         HDF_LOGE("writeinfo=%{public}s",args[0]);
  6.         char writebuff[1024]={0};
  7.         size_t* result1;
  8.         NAPI_CALL(env,napi_get_value_string_utf8(env,args[0],writebuff,1024,result1));
  9.         HDF_LOGE("writebuff=%{pubkic}s",writebuff);         
  10.         int res=writetest1(writebuff);
  11.         HDF_LOGE("write res= %{public}d",res);
  12.     napi_value result;
  13.         NAPI_CALL(env,napi_create_string_utf8(env,writebuff,512,&result));
  14. }
复制代码
这是我在应用层上的代码,我传递的明明是“123”打印出来却是别的,有大佬知道是为什么吗

fakename.png



我想要达到的结果


【运行环境】
硬件:rk3568
ROM版本:3.2release
DevEvoStudio版本:4.0
SDK版本:9
fakename.png
您尚未登录,无法参与评论,登录后可以:
参与开源共建问题交流
认同或收藏高质量问答
获取积分成为开源共建先驱

精彩评论1

马迪

沙发 发表于 2023-10-26 17:43:56

不能直接打印args[0],需要通过napi_get_value_string_utf8 把napi类型转C/C++数据类型 `` char writebuff[1024] = {0}; size_t s = 0; napi_get_value_string_utf8(env, args[0], writebuff, 1024, &s);

OH_LOG_Print(LOG_APP, LOG_INFO, GLOBAL_RESMGR, TAG, "test res = %{public}s", writebuff);
可以参考
https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/ReadMe.md#/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/napi_data_type.md

Copyright   ©2023  OpenHarmony开发者论坛  京ICP备2020036654号-3 |技术支持 Discuz!

返回顶部