我决定在使用Python几年后接受C ++的投入。现在,我正在尝试制作一个程序,每60分钟闪烁一次键盘上的LED,以提醒我使用键盘SDK进行拉伸。闪烁和计时工作,但问题是当你不想要或打开它时关闭程序。
我可以在第一次调用alarm()
函数之前退出程序。在我调用alarm
函数后,我得到Windows pop说我可以使用代码R6010中止,忽略或重试。
我目前已经设置了尝试捕获Ctrl-C事件并结束while循环,但无论如何都以相同的错误结束。
#include "stdafx.h"
#include <iostream>
#include "Windows.h"
#include "SDKDLL.h"
#include <string>
#include <chrono>
#include <thread>
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctime>
using namespace std;
using namespace std::this_thread;
using namespace std::chrono;
BYTE r = 0;
BYTE g = 0;
BYTE b = 0;
bool exiter = false;//Exit variable
void my_handler(int s){// Tells me when CTRL C was pressed
printf("Caught signal %d\n", s);
::exiter = true;
}
void alarm(){
//Basically turns on and off LEDs 5 times
for (int x = 1; x < 5; x++){
Sleep(500);
r = 255;
g = 255;
b = 255;
SetFullLedColor(r, g, b);
Sleep(500);
r = 0;
g = 0;
b = 0;
SetFullLedColor(r, g, b);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
signal(SIGINT, my_handler);//Trying to find a way for the program to exit nicely, this way uses CTRL C
SetControlDevice(DEV_MKeys_M_White);
while (::exiter == false){
sleep_until(system_clock::now() + seconds(4));//waits X seconds to do the sequence again
EnableLedControl(true);//Allows for control of LED
alarm();//Turns off and on the LEDS
EnableLedControl(false);//Disables the LEDs
}
return 0;
}
我一直在研究这个错误几个小时没有解决方案。任何帮助将不胜感激!