카운터를 만들고 싶습니다. 10 초마다 스위치의 상태를 확인하고 싶습니다. 예를 들어 스위치가 닫히면 10 초 카운터가 증가합니다. 열린 상태이면 다시 잠들고 10 초 후에 다시 깨어나 스위치 상태를 확인합니다. 카운트가 100에 도달하면 무언가를하십시오. 나는이카운터 용 C 프로그램
내 시도를하고 가겠어요 어떻게 :
for(int i=0;i<100;i++){
if(SW=1) {
i++;
}
else
i=0;
}
카운터를 만들고 싶습니다. 10 초마다 스위치의 상태를 확인하고 싶습니다. 예를 들어 스위치가 닫히면 10 초 카운터가 증가합니다. 열린 상태이면 다시 잠들고 10 초 후에 다시 깨어나 스위치 상태를 확인합니다. 카운트가 100에 도달하면 무언가를하십시오. 나는이카운터 용 C 프로그램
내 시도를하고 가겠어요 어떻게 :
for(int i=0;i<100;i++){
if(SW=1) {
i++;
}
else
i=0;
}
: 스위치 인 경우
int sw = 0;
#define MAX 100
#define gotosleep sleep(10)
int main(void)
{
int num = 0;
while(1) {
gotosleep;
if(sw)
num++;
else
num = 0;
if(num == MAX) {
//do something
printf("Done\n");
num = 0;
break;
}
}
return 0;
}
10
초num
, 그렇지 않으면 reset num to 0 and go to sleep
num
이 MAX
값에 도달했는지 확인한 다음 MAX
과 같으면 무언가를 수행하고 break
을 입력하십시오. (사이클 주석을 계속하려면 코드를 중단하십시오.) 다시. 스위치가 열릴 때마다 카운터를 재설정하려는 것 같습니다. 그게 틀림 없습니까? 여기 어쨌든
, 당신은
#include <stdio.h>
#include <time.h>
struct tm tm;
time_t start,enxd;
double sec;
int counter;
int main(){
int switchCounter = 0;
int checkSwitch;
checkSwitch = 1; // I put this in purpose since I have no idea how you're going to read the switch.
// Thus, this assumes the switch is always closed.
while(switchCounter != 100){
// 1. Wait for 10 seconds
sec = 0;
time(&start);
while(sec !=10){
++counter;
time(&enxd);
sec=difftime(enxd,start);
}
// 2. Read the state of the switch here.
// ..............
// 3. Simple if-else
if (checkSwitch == 1){ //switch is closed
switchCounter++;
printf("Counter incremented. Current = %i \n", switchCounter);
}
else //if switch is open
{
switchCounter = 0 ;// Iam confused here, is this what you want ?
printf("Switch is open \n");
}
}
// 4. Finally when your counter reaches 100, you wanna do something here
// ............................
return 0;
}
내가 정확하게 문제를 이해 한 경우가 :)
내가 아주 확실하지 않다 희망이 도움이 원하는 아마,하지만 당신은 다음 코드를 확인하실 수 있습니다 몇 가지 아이디어. 그것은 자기 설명입니다.
참고 : 로컬 기능을 테스트 할 수 있도록하십시오 테스트 코드
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define MAXVAL 100
#define SLEEPTIME 10
//extern int switchSet; //if defined in some other file
int switchSet;
int main()
{
int counter = 0;
int toSleep = 0;
#if 0
//for testing
switchSet = MAXVAL;
#endif
while (1)
{
toSleep = switchSet? SLEEPTIME:0; //check for the switch state, 0 = open, 1 = closed
if (toSleep)
{
printf("Going to sleep for %d sec\n", SLEEPTIME);
sleep(toSleep);
}
else
{
counter++;
printf ("No sleeping, counter is %d\n", counter);
}
if (counter == MAXVAL)
break;
#if 0
//for testing
switchSet--;
if (switchSet < 0) switchSet = 0;
#endif
}
printf("Do Something... Did, Done !!\n");
return 0;
}
당신은 텍스트 편집기와 컴파일러가 필요합니다. –
사실상 의사 코드를 알려 주셨으므로 구현이 쉽습니다. 시도 해봐. – bitcell
그래서 루프 내에서 루프 변수를 수정 하시겠습니까? – urzeit