Skip to content

库中的seekStationProgress函数实现有缺陷:它没有正确等待搜台完成就检查状态 #45

Description

@win-ds

库中的seekStationProgress函数实现有缺陷:它没有正确等待搜台完成就检查状态

应该要修改为:
void SI4735::seekStationProgress(void (*showFunc)(uint16_t f), uint8_t up_down)
{
si47x_frequency freq;
long elapsed_seek = millis();

// seek command does not work for SSB
if (lastMode == SSB_CURRENT_MODE)
    return;
    
// 只调用一次搜台命令
seekStation(up_down, 0);
delay(100); // 等待搜台开始

// 等待搜台完成
do
{
    delay(200); // 增加延时
    getStatus(0, 0); // 获取状态但不清除中断
    
    // 获取当前频率
    freq.raw.FREQH = currentStatus.resp.READFREQH;
    freq.raw.FREQL = currentStatus.resp.READFREQL;
    currentWorkFrequency = freq.value;
    
    if (showFunc != NULL)
        showFunc(freq.value);
        
    // 检查超时
    if ((millis() - elapsed_seek) > maxSeekTime) {
        break;
    }
        
} while (!currentStatus.resp.STCINT); // 等待搜台完成中断

// 清除中断标志并获取最终结果
getStatus(1, 0);
freq.raw.FREQH = currentStatus.resp.READFREQH;
freq.raw.FREQL = currentStatus.resp.READFREQL;
currentWorkFrequency = freq.value;

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions