键盘中断例程visual studio C++控制台应用程序



我正在使用VS 2022 Preview编写一个C++控制台应用程序。我希望检测到键盘敲击,并调用我的中断处理程序函数。我希望快速检测按键,以防main处于长循环中,因此不使用kbhit((。

我找到了signal((,但当检测到Control-C时,调试器停止了。也许这是IDE的一个特点。是否有我应该使用的函数或系统调用?

编辑:我隐约意识到线程。我可以生成一个只监视kbd的线程,然后让它在按键时引发(?(中断吗?

我可以通过添加一个线程来完成。在目标上,我会有真正的中断来触发我的ISR,但这对于算法开发来说已经足够近了。终止线程似乎比它的价值更麻烦,所以我合理地认为我正在模拟一个不需要花哨关闭的嵌入式系统。

我决定在伪ISR中一次只接受一个字符,然后当我看到CR(一个头脑简单的命令行处理器(时,我可以缓冲它们,等待并处理整个字符串。

// Scheduler.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <Windows.h>
#include <iostream>
#include <thread>
#include <conio.h>
void phonyISR(int tbd)
{
char c;
while (1)
{
std::cout << "nphonyISR() waiting for kbd input:";
c = _getch();
std::cout << "nGot >" << c << "<";
}
}
int main(int argc, char* argv[])
{
int tbd;
std::thread t = std::thread(phonyISR, tbd);
// Main thread doing its stuff
int i = 0;
while (1)
{
Sleep(2000);
std::cout << "nMain: " << i++;
}
return 0;
}

相关内容

  • 没有找到相关文章

最新更新