C语言 如何运行一个周期性的动作,直到按下一个键

pgx2nnw8  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(110)

我正在为一个嵌入式控制器编写一个测试脚本,有些测试需要用户操作才能进行。
我在屏幕上打印一个指令,

printf("Turn switch A to ON position then press any key");

然后,我希望脚本等待,直到用户按下一个键,以进行测试

ExpectedSwitchState = ON;
CheckSwitch(01);

我可以很容易地做到这一点(尽管需要按回车键)

printf("\nPress Enter to continue");
getChar();

我的问题是,我必须确保我的工具每4秒发送一个测试人员存在消息,如果没有其他命令正在传输。我想让它在按下一个键后立即恢复,而不是再等4秒。
我更习惯于嵌入式C比任何使用计算机输入,所以我不确定是否有共同的命令,以实现我想要的。
任何建议将不胜感激。
目前我只找到了暂停程序的方法。不是一种在按下键之前继续做某事的方式。
我可以创建一个while循环,每1ms递增一个计数器,然后每当计数器达到4000时发送测试仪。并在按下某个键时退出while循环。听起来有点复杂。我不知道检测按键的指令。

62lalag4

62lalag41#

我想我找到了解决办法

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);
    }
  }
}

相关问题