我正在研究SUB-GHZ频率范围,以通过无线电板进行发送和接收。
从上表中,如果我选择Flash Channel-1作为输入,它应该将我映射到Rail Channel 16。
如果选择Flash Channel 20,它将自动将我映射到Rail Channel 1。
任何人都可以像一些示例代码一样在这里帮助我解决方法吗?
使用的语言是C。
最佳答案
由于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索引来自
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];
}
因此,
x
的每个条目RAIL2Flash_table
都有一个与索引RAIL
对应的x
通道号。因此,RAIL
通道1在数组条目1中,并且具有Flash
通道号20,以此类推。其他表也一样。关于c - 需要以哪种算法方式解决此问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58237240/