怎样让alljoyn标准端与瘦客户端通信呢?有招!

技术菌的blog 2014-09-15 11:20:52

比如瘦客户端要发信息给标准端,代码如下:
void MakeMethodCall(AJ_BusAttachment* bus, uint32_t sessionId,const char* temp)
{
AJ_Status status;
AJ_Message msg;

// SEND_TEMP为接口中的方法,携带一个字符串参数
status = AJ_MarshalMethodCall(bus, &msg, SEND_TEMP, ServiceName, sessionId, 0, METHOD_TIMEOUT);

if (status == AJ_OK) {
status = AJ_MarshalArgs(&msg,"s",temp);
}

if (status == AJ_OK) {
status = AJ_DeliverMsg(&msg);//传递消息
}
}


那么标准端该怎么接收呢?
首先必须有相同的方法签名,这好办,用AddInterface即可。然后得创建BusObject继承类对象,为此方法添加方法处理函数,见下图:
const MethodEntry methodEntries[] = {
{ intf->GetMember("sendTemp"), static_cast<MessageReceiver::MethodHandler>(&MyObj::sendTemp) }
};
QStatus status = AddMethodHandlers(methodEntries, sizeof(methodEntries) / sizeof(methodEntries[0]));

void sendTemp(const InterfaceDescription::Member* member, Message& msg)
{
//在这里面处理瘦客户端发来的消息
static int num = 0;
const char* tempstr = msg->GetArg(0)->v_string.str;
printf("\n%dth Receive 'sendTemp' method call:%.4s\n",++num,tempstr);
sendToYeelink(tempstr);
}


这样就完成了消息传递了哦。。
...全文
1809 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
技术菌的blog 2014-09-15
  • 打赏
  • 举报
回复
首页bdbd

2,853

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧