在 FM 无线电频率上前进和后退 [英] Go forwards and backwards on FM radio frequency

查看:16
本文介绍了在 FM 无线电频率上前进和后退的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经用 xaml 设计了一个后退按钮和一个前进按钮.当我点击后退按钮时,我的 FM 收音机实例应该开始根据信号强度寻找低于射频的射频.

I have already designed a back button and a forward button with xaml. When I click the back button, my FM radio instance should start looking for a radio frequency below the radio frequency according to signal strength.

推荐答案

有代码可以做到这一点

    private void FastForwardButton_Click(object sender, RoutedEventArgs e)
    { try
        { do
            {
                ManageFrequencyChange(0.1);
            }
            while (FMRadio.Instance.SignalStrength * 100 < 65);
        }
        catch (RadioDisabledException ex)
        {

        }
    }

和参考这些

    private void ManageFrequencyChange(double delta)
    {
        try
        {
            do
            {
                double frequency = FMRadio.Instance.Frequency; 
                frequency += delta;
                switch (wpradio.CurrentRegion)
                {
                    case RadioRegion.Europe:
                        if (frequency < minFrequencyEurope)
                            frequency = maxFrequencyEurope;
                        if (frequency > maxFrequencyEurope)
                            frequency = minFrequencyEurope;
                        break;
                    case RadioRegion.Japan:
                        if (frequency < minFrequencyJapan)
                            frequency = maxFrequencyJapan;
                        if (frequency > maxFrequencyJapan)
                            frequency = minFrequencyJapan;
                        break;
                    case RadioRegion.UnitedStates:
                        if (frequency < minFrequencyUnitedStates)
                            frequency = maxFrequencyUnitedStates;
                        if (frequency > maxFrequencyUnitedStates)
                            frequency = minFrequencyUnitedStates;
                        break;

                    default:
                        //Throw new ArgumentException();                             
                        break;
                }
            }
            while (!IsFrequencyCorrect(frequency));
            wpradio.Frequency = Math.Round(frequency, 1);
        }
        catch { }
    }


    private bool IsFrequencyCorrect(double frequency)
    {
        string separator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator;
        bool isCorrect = false;
        string frequencyAsString = Math.Round(frequency, 1).ToString();
        switch (wpradio.CurrentRegion)
        {
            case RadioRegion.Europe:
                isCorrect = frequencyAsString.EndsWith(string.Format("{0}1", separator)) || 
                    frequencyAsString.EndsWith(string.Format("{0}3", separator)) || 
                    frequencyAsString.EndsWith(string.Format("{0}5", separator)) || 
                    frequencyAsString.EndsWith(string.Format("{0}6", separator)) ||
                    frequencyAsString.EndsWith(string.Format("{0}7", separator)) ||
                    frequencyAsString.EndsWith(string.Format("{0}8", separator)) || 
                    frequencyAsString.EndsWith(string.Format("{0}0", separator));
                break;
            case RadioRegion.Japan:
                //check here the correctness of frequency for this position   
                isCorrect = frequencyAsString.EndsWith(string.Format("{0}1", separator)) ||
                    frequencyAsString.EndsWith(string.Format("{0}2", separator)) ||
                    frequencyAsString.EndsWith(string.Format("{0}3", separator)) ||
                    frequencyAsString.EndsWith(string.Format("{0}5", separator)) ||
                    frequencyAsString.EndsWith(string.Format("{0}6", separator)) ||
                    frequencyAsString.EndsWith(string.Format("{0}7", separator)) ||
                    frequencyAsString.EndsWith(string.Format("{0}8", separator)) ||
                    frequencyAsString.EndsWith(string.Format("{0}9", separator)) ||
                    frequencyAsString.EndsWith(string.Format("{0}0", separator));
                break;
            case RadioRegion.UnitedStates:
                //check here the correctness of frequency for this position                     
                break;
            default:
                throw new ArgumentOutOfRangeException();
        }
        return 
            isCorrect;

并在初始化前定义最小和最大频率

and define min and max frequency before initialize

    public partial class MainPage : PhoneApplicationPage
{              
    private const double minFrequencyEurope = 88;
    private const double maxFrequencyEurope = 108;
    private const double minFrequencyUnitedStates = 88.1;
    private const double maxFrequencyUnitedStates = 107.9;
    private const double minFrequencyJapan = 76;
    private const double maxFrequencyJapan = 90;
    public MainPage()

这篇关于在 FM 无线电频率上前进和后退的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆