⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tryplaying.c

📁 5807收音机模块用于炬力平台
💻 C
字号:
/*
 *******************************************************************************
 *                ACTOS AP
 *        main ap of sdk 3.0
 *
 *        (c) Copyright, Actions Co,Ld.
 *             All Right Reserved
 *
 *******************************************************************************
 */

#pragma codeseg(CODE_2)

#include "ap_radio.h"
#include "actos.h"

extern slider_t slider;
extern comval_t F_comval;
extern WORD FMStationTab[40]; // 前20个是US, 后20个是JP.
extern fm_play_status_t FMStatus;
extern FMRADIO_param_t radio_param;
extern fm_play_status_t m_FMPlaystatus;

extern WORD FMAutoTab[20]; // 全自动收台,预存台.
extern BYTE AutoTabNum; // 预存台数.

void volume_callback2(int Vol) //音量设置的CALLBACK函数
{
    //实时改变音量的值
    FMStatus.vol_display = Vol;
    FMStatus.volume = Vol * 31 / g_comval.VolumeMax;
    fmSendCommand(MC_SETVOLUME, FMStatus.volume);
    if (FMStatus.volume == 0)
        fmSendCommand(MC_MUTE, SetMUTE);
    else
        fmSendCommand(MC_MUTE, releaseMUTE);
}
/*
 ********************************************************************************
 * Description : 试播放5秒钟
 *
 * Arguments   :
 *
 * Returns     : RESULT_RADIO:PLAY和MODE键,  RESULT_IGNORE:NEXT和LAST键
 其它为热键
 *
 * Notes       :
 *
 ********************************************************************************
 */
int TryPlayingHandle(void)
{
    int key, play_time = 12;
    int flash_point = 1;
    bool loop = TRUE;
    int k, i;
    if (FMStatus.mode == 0)
    {
        k = (FMStatus.freq) *100/ 200;
    }
    else
    {
        k = (FMStatus.freq)*100 / 200;
    }
    fmSendCommand(MC_PLAY, 0);
    fmSendCommand(MC_SETVOLUME, FMStatus.volume);

    while (loop)
    {
        key = ap_get_message();
        switch (key)
        {
            case AP_MSG_STANDBY:
            //do nothing
            break;
            case AP_KEY_NEXT | AP_KEY_UP:
            case AP_KEY_PREV | AP_KEY_UP: // 停止试播
            return RESULT_IGNORE;
            case AP_KEY_PLAY | AP_KEY_UP:
            case AP_KEY_MODE | AP_KEY_UP: // 保存电台, 返回播放界面.
            loop = FALSE;
            key = RESULT_RADIO;
            break;
            case AP_MSG_RTC: // 时间记数,闪烁箭头.
            ui_show_batt(GetBattery(), g_comval.BatteryType);
            play_time--;
            if (play_time <= 0)
            {
                loop = FALSE;
                key = 0;
            }
            if (flash_point) // 箭头闪烁
            {
                if (FMStatus.mode == 0)
                {
                    ResShowPic(DWNARROW, 11 - 5 + k, 16); //显示箭头
                    //ResShowPic(FQBAR,0,24);                    //显示US频率条
                }
                else
                {
                    ResShowPic(DWNARROW, 30 - 6 + k, 16); //显示箭头
                    //ResShowPic(FQBAR2,0,24);                    //显示JP频率条
                }
                flash_point = 0;
            }
            else // 清除箭头
            {
                if (FMStatus.mode == 0)
                {
                    SetTextPos(11 - 5 + k, 16);
                }
                else
                {
                    SetTextPos(30 - 6 + k, 16);
                }
                PutS("  ", 2);
                flash_point = 1;
            }
            UpdateScreen(NULL);
            break;
            case AP_KEY_VOLADD: // 音量调节.
            case AP_KEY_VOLSUB:
            ClearScreen(NULL);
            ResShowPic(VOLUMEBK, 0, 0);
            slider.max = g_comval.VolumeMax;
            slider.min = 0;
            slider.step = 1;
            FMStatus.volume = FMStatus.vol_display * 31 / g_comval.VolumeMax;
            slider.value = FMStatus.vol_display;
            key = ui_slider(&slider, volume_callback2); //音量滚动条显示
            m_FMPlaystatus.vol_display = FMStatus.vol_display;
            FMStatus.volume = FMStatus.vol_display * 31 / g_comval.VolumeMax;
            fmSendCommand(MC_GETSTATUS, (int) &FMStatus);
            loop = FALSE;
            break;
            default: //热键处理
            key = ap_handle_hotkey(key);
            if (key != 0)
            {
                loop = FALSE;
            }
        }
    }
    //fmSendCommand(MC_MUTE,SetMUTE);
    fmSendCommand(MC_GETFREQ, (int) &k); // 保存电台
    FMAutoTab[AutoTabNum] = k;
    AutoTabNum++;
    for (i = AutoTabNum; i < 20; i++)
    {
        if (radio_param.param1[i] == k) // 删除重复的电台.
        {
            radio_param.param1[i] = 0;
            //  FMStatus.station_count--;
        }
    }
    return key;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -