delay 함수 자체가 불필요하며,
GetTickCount() 함수가 어떤 역할을 하는지 모르는거나
Timer를 쓸줄 모르는것 같네요.
매우 정확히 1초 간격으로 점멸할 필요가 없다면,
Timer의 Interval을 1000으로 하고, 아래처럼 수정해보세요.
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if (Timer1->Tag) {
VrUserLed1->PaletteEx->Low2 = clLime;
Timer1->Tag=0;
}else {
VrUserLed1->PaletteEx->Low2 = clRed;
Timer1->Tag=1;
}
}
쿼드콥터헬기 님이 쓰신 글 :
: delay함수에 timer를 써서 led 조명을 깜박거리게 해놨습니다.
: 다만 실행 도중 win창을 이동을 시키면 매우 매끄럽지가 않던데 혹시 다른 방법이 없나요?
: void __fastcall TForm1::delay(int n)
: {
: DWORD nStartTM;
: nStartTM = GetTickCount();
: while(true)
: {
: if(nStartTM + n < GetTickCount())
: return;
: }
:
: }
: void __fastcall TForm1::Timer1Timer(TObject *Sender)
: {
: int i;
:
: for(i=0; i<GetTickCount(); i++)
: {
: VrUserLed1->PaletteEx->Low2 = clRed;
: delay(1000);
: VrUserLed1->PaletteEx->Low2 = clLime;
: delay(1000);
: return;
: }
:
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::RadioButton1Click(TObject *Sender)
: {
: if(RadioButton1->Checked == true)
: Timer1->Enabled = true;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::RadioButton2Click(TObject *Sender)
: {
: if(RadioButton2->Checked == true)
: Timer1->Enabled = false;
: }
: //---------------------------------------------------------------------------