我正在为嵌入式控制器编写测试脚本,某些测试需要用户执行操作才能继续。
我在屏幕上打印一条指令,例如 printf("将开关 A 转到 ON 位置,然后按任意键");
然后我希望脚本等待,直到用户按下某个键才能进行测试 预期开关状态=开; 检查开关(01);
我可以很容易地做到这一点(尽管需要按下回车键 打印(“ 按 Enter 键继续”); getChar();
我遇到的问题是,如果没有传输其他命令,我必须确保我的工具每 4 秒发送一条测试仪存在消息。我希望它一按下键就恢复,而不是再等 4 秒。
我更习惯于嵌入式 C,而不是使用计算机输入的任何东西,所以不确定是否有通用命令来实现我想要的。
如有任何建议,我们将不胜感激。
目前我只找到了暂停程序的方法。在按下某个键之前,这不是继续做某事的方法。
我可以创建一个 while 循环,每 1ms 增加一个计数器,然后每当计数器达到 4,000 时就传输测试人员的信息。如果按下某个键,则退出 while 循环。看起来有点绕。而且我不知道检测按键被按下的命令。
我相信我已经找到解决方案了
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);
}
}
}