-2

我正在研究通过无线电板发送和接收的 SUB-GHZ 频率范围。

在此处输入图像描述

从上表中,如果我选择 Flash Channel-1 作为输入,它应该将我映射到 Rail Channel 16。

如果我选择 Flash Channel 20,它应该会自动将我映射到 Rail Channel 1。

任何人都可以在这里帮助我如何处理它,比如一些示例编码?

使用的语言是 C。

4

1 回答 1

0

由于 RAIL 通道和 Flash 通道之间似乎没有关系,因此您需要一个可以按 RAIL 通道索引的表。

您已经更新了您的问题,也需要反向查找。这可以使用辅助表将闪存映射到 raid,然后(如果需要)在 Raid 表中查找详细信息,例如频率和单词:

struct {
    int Flash;
    double freq;
    DWORD ChannelID;
    //...
} myTable[] = {     // table indexed by RAIL channel number
    {0, 0.0, 0},
    {20, 340.04, 0x0CCC0CCC},
    {25, 340.40, 0x07C707C7}
    //...
};
int getFlashFromRAIL(int RAIL)
{
    return myTable[RAIL].Flash;
}

// table of RAIL channel numbers, indexed by Flash channel number
int myTableInv[] = { 0, 16, 18 /*...*/ };

double getFreqFromFlash(int Flash) // return frequency for Flash channel number
{
    return myTable[myTableInv[Flash]].freq;
}
int getRAILFromFlash(int Flash) // return RAIL channel number for Flash channel number
{
    return myTableInv[Flash];
}

注意:由于 RAIL 和 Flash 通道号都从 1 开始,但 C 索引是 from 0..n-1,因此每个表中都添加了第一个条目,因此通道号可用于索引数组。

编辑

鉴于我们在评论中的讨论,以下是简化的解决方案:

int RAIL2Flash_table[] = {0, 20, 25, 19 /*...*/};
int Flash2RAIL_table[] = {0, 16, 18, 20 /*...*/};

int RAIL2Flash(int RAIL)
{
    return RAIL2Flash_table[RAIL];
}
int Flash2RAIL(int Flash)
{
    return Flash2RAIL_table[Flash];
}

所以 的每个条目都有一个对应于 index 的通道x号。所以通道 1 位于数组条目 1 中,通道号为 20,依此类推。另一张桌子也一样。RAIL2Flash_tableRAILxRAILFlash

于 2019-10-04T13:25:25.363 回答