This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我希望在 enet_weather,以便我在特定时间后刷新数据,例如60秒,现在它只是在开始时更新一次,我想在60秒后刷新网站数据,请建议我最好的方法来做, 我需要在现有示例中进行哪些更改。
请帮助。
我今天无法运行该示例(现在仍是星期日)、但明天我将有人进行响应。 我认为该示例已经有60秒的更新。
您好!
如果查看 UpdateUART()函数,您将看到以下代码片段。 请参阅以红色突出显示的、其中仅在 每个 CYCLE 延迟周期刷新终端窗口。 cycle_delay 在 enet_weather.h 文件中使用的值定义 3000000。您可以使用此值调整所需的刷新。 或者、您可以使用计时器创建60s 超时、以便 UART 仅在计时器超时时时更新终端窗口。
//
//检查我们是否应该滚动城市。
//
IF (g_ui32UARTDelay = 0 && g_ui32ShowCities)
{
//
//清除终端。 打印横幅和 IP 占位符。
//
UARTprintf ("\033[2J\033[H");
UARTprintf ("以太网天气示例\n");
UARTprintf ("IP:");
//
//打印 IP 地址。
//
PrintIPAddress (g_pipAddr、ui32IPaddr);
UARTprintf ("\n");
UARTprintf ("hit 'enter' to exit \n"\});
//
//打印当前城市信息。
//
UpdateCity (ui32City、true);
//
//“更新”横幅。
//
UARTprintf ("\n\n____________________________ \n\n 更新:");
if (g_ui32Cycles >= update_cycles)
{
//
//重置城市,使其更新。
//
for (ui32Idx = 0;ui32Idx < NUM_Cities;ui32Idx++)
{
ResetCity (ui32Idx);
}
//
//表示我们已重置所有城市。
//
G_ui32Cycles = 0;
}
//
//重置延迟。
//
G_ui32UARTDelay = cycle_delay;
您好、Charles、
做得好-我们想知道海报"怎么"错过了这个。 (他的"想"是否有理由(有些)进行计划调查?)
我们是否可以轻度地"浪费"使用 "UARTDelay (UARTDelay)"的"过于精确"的测试?
IF (g_ui32UARTDelay = 0 && g_ui32ShowCities)
我们怀疑"<="是"更宽容"的操作员(因此更安全)-同时实现相同的代码目标...
您好 CB1、
g_ui32UARTDelay 是无符号整型。 我做了一个快速实验。 两个=和<=生成的反汇编代码与编译器将使用 BNE 进行分支相同。 如果我将 g_ui32UARTDelay 更改为有符号整数类型、则==将编译相同的代码、而<=将使用 BGT。 在所有情况下、不会以某种方式影响代码大小。
您好、Charles、
是-正常-但是"可能"(任何)干扰或中断可能会导致(严格)"="运算符丢失?
也许-甚至更好-与"<=3"的比较:
在我们(长期)的设计/开发控制系统工作中、采用了此类"放弃"测试、从而使系统更加稳健! (即过于精确的测试会导致漏洞-(真正的)不需要!)
谢谢 Charles。
掌聲決、
再次感谢。