HarmonyOS C++调TS函数的时候怎么传byte数组参数过去
这是我现在的方式:现在能正确的调用,但是无法ts侧无法使用传过来的数组,提示为数组长度为undefined
ts侧:
function sendData(uiContext: UIContext, data: Uint8Array): void {
// TODO:知识点:使用对应UIAbility的UIContext.runScopedTask来执行方法,确保多实例情况下,事件在正确的窗口/UIAbility内发生
uiContext.runScopedTask(() => {
bleManager.sendData(data)
})
}
c++侧:
void EtsWrapper::TSFn::CallJSSendData(napi_env env, napi_value jscb, void *context, void *data) {
napi_status status;
DataPackage *param = (DataPackage *)data;
uint16_t length = param->length;
const char *dataToSend = param->data;
char *dataPtr = nullptr;
napi_value dataCovered = nullptr;
napi_create_buffer(g_uniContext->pickerEnv, length, reinterpret_cast<void **>(&dataPtr), &dataCovered);
napi_create_buffer_copy(g_uniContext->pickerEnv, length, dataToSend, reinterpret_cast<void **>(&dataPtr),
&dataCovered);
auto it = g_uniContext->uiContextMap.find(g_uniContext->topAbilityID);
if (it == g_uniContext->uiContextMap.end()) {
OH_LOG_ERROR(LOG_APP, "key error: %{public}s", g_uniContext->topAbilityID.c_str());
delete param;
return;
}
napi_value uiContext = FNS::ParseNapiRef(env, it->second);
napi_value argv[] = {uiContext, dataCovered};
status = napi_call_function(env, nullptr, jscb, 2, argv, nullptr);
if (status != napi_ok) {
OH_LOG_ERROR(LOG_APP, "call select failed");
}
delete param;
{ // NOTE:仅用于用返回值的场景,当jscb有返回值时,上面napi_call_function之后,即可获得其返回值,然后可将其返回值设置到全局
// 并notify等待返回值的线程
std::lock_guard<std::mutex> guard(g_uniContext->resultWaitUtil.lock);
g_uniContext->resultWaitUtil.isFinished = true;
g_uniContext->resultWaitUtil.cv.notify_all();
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS 基于Navigation的路由管理如何跳转单例页面传递参数过去
1088浏览 • 1回复 待解决
ts给c++传递数组,c++层如何解析
3147浏览 • 1回复 待解决
如何为 C++ 提供回调函数?
3819浏览 • 1回复 待解决
HarmonyOS 网络请求传参直接传Byte数组是否支持
1058浏览 • 1回复 待解决
HarmonyOS popToIndex多级的时候,怎么传参数
1074浏览 • 1回复 待解决
在C++回调时,如何阻塞TS主线程?
1776浏览 • 1回复 待解决
HarmonyOS C++反序列化拿到了ts对象后怎么调对象方法
913浏览 • 1回复 待解决
HarmonyOS 函数方法 多个参数的时候 如何可以选择性传参
895浏览 • 1回复 待解决
PreviewInfo url参数可以传数组吗
510浏览 • 0回复 待解决
如何实现ArkTS与C/C++的数组转换
2273浏览 • 1回复 待解决
有没有从ts设置回调到c++层,然后c++再回调到ts的示例代码?
2063浏览 • 1回复 待解决
HarmonyOS C/C++库开发 C侧和TS之间的数据交互
2358浏览 • 1回复 待解决
HarmonyOS C++函数插桩功能
940浏览 • 1回复 待解决
HarmonyOS BuilderNode在build时,子@Builder函数不能传改变的参数,只能用build函数的参数
1359浏览 • 1回复 待解决
HarmonyOS ArkTS如何调C++的api,或C++如何调用ArkTS的api
1449浏览 • 1回复 待解决
HarmonyOS C++线程调用回调函数返回arkUI时,可以将ArkTS代码的回调处理跑在C++线程吗
878浏览 • 1回复 待解决
HarmonyOS native层C++子线程中回调函数中调用ArkTS层中定义的类的public成员函数
1413浏览 • 1回复 待解决
ArkTS调用C++类中的成员函数
2757浏览 • 1回复 待解决
HarmonyOS ts中继承的类,怎么和C++中的类对象进行绑定
1005浏览 • 1回复 待解决
HarmonyOS 本地文件如何转为byte数组
892浏览 • 1回复 待解决
HarmonyOS 用Navigation打开页面,页面返回的时候,怎么拿到回传参数?
1394浏览 • 0回复 待解决
HarmonyOS 用Navigation打开页面,页面返回的时候,怎么拿到回传参数。
2697浏览 • 1回复 待解决
HarmonyOS IPC异步回调函数中如何能传值给Napi的异步回调函数
1159浏览 • 1回复 待解决
HarmonyOS 如何在ArkTS中向C++层注册回调,C++层如何调用回调方法?
2454浏览 • 1回复 待解决
建议使用napi_create_arraybuffer,可以参考: