HMI-59-【多媒体】收音机 2

简介: 今天接着搞收音机,今天我们将把控制台的模拟中控旋钮信号引进到收音机里面来,来控制我们收音机调频。

头图

其实文章更新到这里,我感觉当网友第一次看到这个文章的时候,应该是云里雾里的,但是目前我也没有一个很好的方法来展示当前的逻辑及进度,也没有逻辑,除了4大模块之外,好多东西将受限美术资源,硬件资源等,可能没法开发,所以有兴趣的网友,可以在博文下方联系我,获取源码直接观看。

HMI-59-【多媒体】收音机 2

​ 今天接着搞收音机,今天我们将把控制台的模拟中控旋钮信号引进到收音机里面来,来控制我们收音机调频。

☑当前进度

​ 今天主要工作就是把控制台的模拟中控旋钮信号引入到收音机里面,实现中控旋钮调节收音机频道功能。


[toc]

关键字: HMIMultifunctionQtQMediaPlayer收音机

1 界面实现

​ 收音机界面相对简单,上上篇我们已经实现了部分功能,但是在上一篇中,我们重构了部分功能,所以今天这里的代码可能和上上篇有点出入,详细可以看源码内容。

​ 今天主要是实现了 频道数字显示和仪表显示,以及频道信息,是否是搜藏的频道,和上一个频道,下一个频道的界面布局。如下图所示

image-20220428225105893

2 实现指针绘制

​ 指针绘制没有太多技术含量,还是在QLabel上绘制QPixmap,代码如下:

void MFD_Radio::drawMeterPointer()
{

    QPainter painter (ui->label_meter_pointer);
    painter.setRenderHint((QPainter::SmoothPixmapTransform));
    painter.setRenderHint(QPainter::HighQualityAntialiasing);
    painter.translate(271,251);
    painter.save();
    painter.rotate(mPointerAngle);         //FM最小值 -112.8 最大值112.5
    painter.drawPixmap(-63,-264,QPixmap(":/Radio/Resources/MultifunctionDisplay/Radio/pointer.png"));
    painter.restore();
}

3 引入控制台旋钮信号

​ 这里需要说明一点,就是我们的控制天旋钮是在不同的功能模式下,有不同的作用。所以这里就需要根据当前功能类型,来传入多媒体,还记得我们原来这个信号的处理方式吗,看下

3.1 原来旧的信号处理

​ 这里我们由于开始只是对开始菜单有用,所以这里对控制台传入的中控旋钮信号没有做任何处理,直接传给了菜单界面,但是现在我们需要对这个信号做处理,就是到底这个信号需要传给那个模块来处理,是音乐,还是导航,还是收音机。

void MultifunctionDisplay::inputControlDialValue(int value)
{
    if(m_menuDisplay)
        m_menuDisplay->inputControlDialValue(value);
}

3.2 新的信号

​ 这里我们暂时使用switch case来处理输入信号,暂时我们还是只用到了菜单和收音机,所以我们暂时只写了这两个,后面根据开发进度完善,或采用更为合适的方式来处理控制台出入信号,代码如下:

void MultifunctionDisplay::inputControlDialValue(int value)
{

    switch (ui->tabWidget_mainFrame->currentIndex()) {
    case MainType::menu:
        if(m_menuDisplay)
            m_menuDisplay->inputControlDialValue(value);
        break;
    case MainType::airConditioner:

        break;
    case MainType::drivingRecorder:

        break;
    case MainType::radio:
        if(m_Radio)
            m_Radio->inputControlDialValue(value);
        break;
    case MainType::multimedia:

        break;
    case MainType::navigation:

        break;
    case MainType::phone:

        break;
    case MainType::m360Panorama:

        break;
    case MainType::mobileConnect:

        break;
    case MainType::internetofVehicles:

        break;
    case MainType::setUp:

        break;
    default:
        break;
    }

}

3.3 传入信号处理

​ 在主框架中是初步的信号处理,具体到对应模块中,还应该有更详细的信号处理。这里我们可以先看下收音机模块中,初步的信号处理。

void MFD_Radio::inputControlDialValue(int value)
{
    if(value>0)
    {
        mChannel += 0.1;
    }
    else
    {
        mChannel -= 0.1;
    }

    if(mChannel< 87.0)
        mChannel = 87.0;

    if(mChannel > 108.0)
        mChannel = 108.0;

    mPointerAngle = -112.8 + (mChannel-87.0) / 21.0 * 225.3;
    ui->label_channel_number->setText(QString::number(mChannel,'f',1));


    update();
}

​ 这里我们首先是对信号做了左右旋转判断处理,右转,也就是顺时针旋转,这频道加 0.1 反之则减0.1,然后我们对频道进行阈值判断,保证在FM下频道值在 87.0-108.0范围内,完成后,我们通过频道值和仪表显示范围,换算成指针角度,完了顺表更新一下频道的文字显示。

​ 这个代码仅仅是当前代码,后期肯定会更改,不过大致逻辑都是一致的。


☞第三阶段成果展示

​ 目前已完成液晶仪表三种模式的初步显示,小模块后期根据精力更新了,主要还得找美术来搞资源,自己能力不够。暂未跟新计划。展示如下:

[video(video-yznBr6e3-1648369267384)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=679609061)(image-https://ucc.alicdn.com/images/user-upload-01/img_convert/4d157e1cb316b007a2cb9790cb2dbfde.png)(title-基于Qt的汽车仪表模拟 3.0)]

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

视频不足以展示全部,感兴趣联系作者


☞第二阶段成果展示

​ 目前以完成HUD界面及接口开发,液晶仪表舒适模式和运动模式的开发。视频展示如下:

[video(video-2AqJ88TY-1645273728489)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=594179292)(image-https://ucc.alicdn.com/images/user-upload-01/img_convert/e75563c3ce68bc980547dde8f6e265ba.png)(title-基于Qt的汽车仪表模拟 2.0)]

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

视频不足以展示全部,感兴趣联系作者


☞第一阶段成果展示

​ 目前以完成HUD界面及接口开发,液晶仪表舒适模式开发。展示如下:

[video(video-ArCvRvBQ-1642664938100)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=77197267)(image-https://ucc.alicdn.com/images/user-upload-01/img_convert/ccddd04e0cef191fd33d7f58d41adb24.png)(title-基于Qt的汽车仪表模拟 1.0))]

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

视频不足以展示全部,感兴趣联系作者


说明:

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

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

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

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

本项目代码暂时不会开源,有需要的源码的可与我联系,左上角二维码加微信。

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


博客签名2021

相关文章
|
应用服务中间件 nginx
流媒体技术学习笔记之(十四)FFmpeg进行笔记本摄像头+麦克风实现流媒体直播服务
FFmpeg推送视频流,Nginx RTMP模块转发,VLC播放器播放,实现整个RTMP直播 查看本机电脑的设备 ffmpeg -list_devices true -f dshow -i dummy 红色标记表示视频设备和麦克风设备 看到乱码了吧!来这里查看哦   FFmpeg编码推送到R...
3442 0
HMI-57-【多媒体】收音机 1
前面几篇已经音乐播放器简单搞了一下,可以放音乐了。今天艺术家发来了收音机的界面,今天先搞搞。
|
9月前
|
索引
HMI-62-【多媒体】空调部分 3
今天接着昨天的思路来搞,实现空调数字模块,因为素材里面的空调是双区空调,所以我还是自定义了一个模块,这个实现不难,可以参考上一篇自定义个按钮。
|
9月前
|
索引
HMI-63-【多媒体】空调部分 4
其实呢,写到这里,如果是第一次点击进来这个系列的文章,那你一定是在想着傻子在干嘛,写的啥玩意,所以呢,我还是建议你看看整个系列[Qt 汽车 HMI 仪表](https://dreamlife.blog.csdn.net/category_9146909_2.html),毕竟写到这里,我有时候会迷糊,尤其是变量命名上,真的不知道以前的规则了,好多时候都是写到差不多了,回去一看,我曹,偏离了以前的风格,于是又花大量的时间去修改变量名,这个项目呢,持续的时间是在太久了,从之前整个`UI`练练手的想法,到现在想把它做成一个完成度较高的`“产品”`它已经已经跟着我走过三家公司了,不是说我工作换的,只是想
HMI-60-【多媒体】空调部分 1
今天我们搞空调的按钮,今天这里我们不会堆砌大量的素材,而是用一个自定义的Button来实现这些,可以看到我们这次的空调按钮有以下元素
|
9月前
|
索引
HMI-61-【多媒体】空调部分 2
昨天我们已经实现了自定义的按钮了,今天我们把已经定义好的按钮和我们的控制台联动起来,使我们的多媒体部分不仅可以触屏控制,可一个使用控制台的旋钮来控制。演示如下
HMI-52-【多媒体】音乐播放器 1
今天我们搞音乐播放器,哎嗨,这个东西要是往细碎了搞,事情还真不少,今天就先努力实现面上的内容。
HMI-56-【多媒体】音乐播放器 5
上一篇中实现了音乐播放的后台线程,夜里睡觉也没有睡踏实,总是感觉不合适,所以今天还是决定重新搞一下。
HMI-54-【多媒体】音乐播放器 3
今天我们接着搞音乐播放器,今天我们实现这个中心的音乐播放器。也就是这个歌曲信息,上一曲下一曲暂停,播放进度啥的。
HMI-53-【多媒体】音乐播放器 2
今天我们接着搞我们的音乐播放器,今天我把们昨天剩下的那些布局搞一搞,后面再实现细节,今天我们把下面的菜单和逻辑实现了,以及上次漏掉的右上角的子菜单按钮。