如何运行周期性操作直到按下某个键

问题描述 投票:0回答:1

我正在为嵌入式控制器编写测试脚本,某些测试需要用户执行操作才能继续。

我在屏幕上打印一条指令,例如 printf("将开关 A 转到 ON 位置,然后按任意键");

然后我希望脚本等待,直到用户按下某个键才能进行测试 预期开关状态=开; 检查开关(01);

我可以很容易地做到这一点(尽管需要按下回车键 打印(“ 按 Enter 键继续”); getChar();

我遇到的问题是,如果没有传输其他命令,我必须确保我的工具每 4 秒发送一条测试仪存在消息。我希望它一按下键就恢复,而不是再等 4 秒。

我更习惯于嵌入式 C,而不是使用计算机输入的任何东西,所以不确定是否有通用命令来实现我想要的。

如有任何建议,我们将不胜感激。

目前我只找到了暂停程序的方法。在按下某个键之前,这不是继续做某事的方法。

我可以创建一个 while 循环,每 1ms 增加一个计数器,然后每当计数器达到 4,000 时就传输测试人员的信息。如果按下某个键,则退出 while 循环。看起来有点绕。而且我不知道检测按键被按下的命令。

c pause
1个回答
0
投票

我相信我已经找到解决方案了

void UserPause(void)
{
  printf("Press any key to continue\n");  // Print message to user
  while (!_kbhit())  // Loop while the keyboard is not hit
  {

    if (b_TesterPresentEnabled == 1)  
    // Only do tester present if functionality is enabled
    {
        TestTXMsg[0] = 0x3e;  // Set up the message bytes
        TestTXMsg[1] = 0x00;
        TxMsgLen = 2;  // Define the message length
        MsgTest();  // Function to send the message to the ECU
        Sleep(4000);
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.