您尚未登录。

楼主 #1 2020-05-26 09:13:32

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,204
积分: 1140.5

请教,同一个类里的各函数之间如何传递数据?

请教个问题,我在B线程类里接收can信号,然后将数据封装成QVariant变量发送给A类;
在A类里从QVarinat变量里取出结构体类型struct can_frame,然后根据can_frame.can_id判断帧类型,再分开处理。

我在A类的a()函数作为槽函数,接收的QVariant变量并进行的can_id判断,我想在A类的b(),c(),d()这三个函数里做响应处理。
那么,我如何将a()函数里的can_frame结构体发送给b(),c(),d()这三个函数呢?

1.在a()函数中定义局部结构体变量,作为参数传递给b(),c(),d()。结构体作为参数传递的是指针吧?是引用传递吧?如果a()函数执行事件过长,在a()函数执行过程中,B线程类又发送了多次信号过来,会出现什么情况?

1.在A类里定义一个结构体变量作为类的数据成员吗?但B线程类不停的发数据过来,数据成员会不停地被改变,那么b(),c(),d()是否来得及处理?

2.a()函数再将数据作为信号的参数,发送信号给b(),c(),d()函数?这样是不是有点复杂了?

3.还有其他方法吗?

最近编辑记录 Gentlepig (2020-05-26 09:21:26)

离线

#2 2020-05-26 10:39:34

cgpsky
会员
注册时间: 2017-09-07
已发帖子: 27
积分: 27

Re: 请教,同一个类里的各函数之间如何传递数据?

连接方式分为异步和同步。 A的处理没有跨线程。 不用考虑1。 2.就更不用考虑。 如果时同步连接, 可能会阻塞线程

离线

楼主 #3 2020-05-26 11:05:27

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,204
积分: 1140.5

Re: 请教,同一个类里的各函数之间如何传递数据?

搜到了c++可以用引用参数,打算试一试。

void a()
{
    struct can_fram recvFrame;
    b(recvFrame);
    ...
}

void b(const struct can_frame &recvFrame)
{
    ...
}

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn