HMI-66-MeterDisplay for Arm Linux液晶仪表Arm Linxu迁移

Posted DreamLife.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HMI-66-MeterDisplay for Arm Linux液晶仪表Arm Linxu迁移相关的知识,希望对你有一定的参考价值。

HMI-66-【MeterDisplay for Arm Linux】液晶仪表Arm Linxu迁移

文章目录

关键字: MeterDisplayLinuxDebianQtArm

摘要

先说结论,虽然移植成功,但是显示效果不理想,可以直接看和面的视频。先说说做了什么吧。

修改Pro文件

因为之前我的Pro文件是自己手撸的,所以好多Qt默认的都没有写,开始在Win平台下是没有问题的,但是在Linux 下,确实可以编译,但是不可以运行,这明显就是链接不到库文件,所以应该是程序默认的路径没有搞好,于是在Linx下新建了一个工程,对比一下,需要在Pro文件中加入以下代码

# Default rules for deployment.
qnx: target.path = /tmp/$$TARGET/bin
else: unix:!android: target.path = /opt/$$TARGET/bin
!isEmpty(target.path): INSTALLS += target

这样可以保证程序可以编译,并且在板子上运行了。但是呢,很卡。

设置CPU亲缘性

根据之前的经验,可以尝试手动控制程序中每个线程使用对应的CPU内核,所以在这个项目中,任然直接尝试手动控制内核。代码如下,

注意,这个代码智能在Linux下编译通过,每个平台设置内核绑定的接口不一样,所以要对应平台。

    cpu_set_t mask;
    CPU_ZERO(&mask);
    CPU_SET(5,&mask);
    if(sched_setaffinity(0,sizeof(cpu_set_t),&mask) < 0)
        qDebug() << "False:" << "sched_setaffinity(0,sizeof(cpu_set_t),&mask)";

完成了以上尝试,发现还是很卡,真的很卡,可以看视频,暂时呢,无解了。

后面的解决思路

因为我的代码里面会有大量的painter函数,这会浪费大量CPU资源,所以我会尝试一下两个路子。

1 只用大量属性动画,替换部分效果,现在使用了定时器

属性动画用的基本很好,属于边写边摸索,所以进度不能保证,下一篇啥时候出来,完全看天意。

2 使用新的框架,就是那个QGraphics

据说这个可是使用GPU,从而解放CPU性能,这个也是,基本没有啥大规模使用过,也是得边摸索边写。结果看天意。

◕目前项目进展

Linux 实机测试

基于Qt的汽车仪表-Linux迁移最近进展

▶第三阶段 液晶仪表节能模式

✈B站链接:https://www.bilibili.com/video/BV1WS4y137y1/

▶第二阶段 液晶仪表运动模式

✈B站链接:https://www.bilibili.com/video/BV1aq4y1t7H7/

▶第一阶段 HUD和液晶仪表舒适模式

✈B站链接:https://www.bilibili.com/video/BV1qJ411X7Gs/

重大说明

这个项目开始的日期是在19年吧,那时的自己年少无知,也没有实际的硬件测试,在代码好多方面,都没有一个明确的构架,以及在开发过程中,尽管尽量写了笔记,但是还是不能很好的描述具体的工作。

今天做了实机移植测试,但是效果并不理想,所以目前这个项目暂停更新,感兴趣的小伙伴,可以尝试使用属性动画和QGraphics来修改测试一下。不过工作量应该不会小,所以对于我来说,这个项目的目的已经达到,后面可能会有其他相关的内容输出到这个项目专栏里面,但是界面相关的代码应该不会再更新了。

不过最新的HMI项目已经在考虑了,到时会全面拥抱QML。敬请期待吧。

©说明:

☑ 本项目中所使借鉴原型来自:[吉利] 博瑞GE | 仪表HMI设计吉利汽车HMI项目

☑ 多媒体部分是来自吉利博瑞2017旗舰版界面所有权和解释权都归吉利汽车所有。

☑ 设计图的所有权和解释权都归吉利汽车所有。

☑ 本项目所有资源文件均由**打不死的小海**复刻制作。

☑ 本项目代码暂时不会开源,有需要的源码的可与我联系(博文结尾有我微信)。

☑ 本项目仅限学习交流、禁止商业使用。


以上是关于HMI-66-MeterDisplay for Arm Linux液晶仪表Arm Linxu迁移的主要内容,如果未能解决你的问题,请参考以下文章

for循环中,为啥不执行循环?

for 循环 以及 for 循环的嵌套

python 双层for循环,在第二层的for循环中的else中的continue,会退出到第一层for循环继续执行

javaScript的for of和for in 的区别总结

Python之for循环

Python之for循环