타이머를 사용해서 1초에 한번씩 값 변화시키는 방법 알려주세요

leo~~~~의 이미지

타이머를 사용해서
1초마다 값을 변화시키고 싶은데요..
그니까 i라는 변수에 1이 있다 가정하구요
i의 값을 1초마다 1씩 증가 시키려구요...
그리고 1초에 한번씩 값이 변화하면
그 값이 화면에 나타나게 하고 싶어요....
제가 하려는게 1초마다 값이 변화하면
그 변화한 값을 시리얼을 통해서
전송 하려는 거거든요....
어떻게 하나요???답변 부탁드립니다~~~

sangheons의 이미지

간단하게는 sleep() 함수를 사용하시면 될 것 같습니다. 1초동안 sleep했다가 변수증가, 시리얼 전송하는 루틴을 loop로 돌리면 가장 간단하겠습니다.

문제라면 이 방법으로는 정확히 1초를 지킬수는 없다는 점입니다. 변수증가, 시리얼 전송하는 시간이 회수에 따라 누적되면 오차가 좀 커질수도 있습니다.

다른 방법으로는 시스템 시간을 지속적으로 감시하여 1초 주기로 해당 작업을 수행하는 것인데, 아무래도 단순히 sleep 루프를 돌리는것보다는 복잡해지겠죠.


1초...는 상당히 큰 시간이므로, 특별한 경우가 아니라면 sleep 루프를 돌리는 것으로도 충분하리라고 봅니다.

bus710의 이미지

터보씨에서는 time.h 가 있었는데.

gcc는 어떤지 모르겠네요.

0.1초 간격으로 gettime 같은 걸 해 주시면 괜찮을듯^^

life is only one time

dasomoli의 이미지

akudoku wrote:
터보씨에서는 time.h 가 있었는데.

gcc는 어떤지 모르겠네요.

표준 라이브러리 일겁니다 :D

http://database.sarang.net/study/c/unix_c/17.htm 을 참조해보세요.



dasomoli의 블로그(http://dasomoli.org)
dasomoli = DasomOLI = Dasom + DOLI = 다솜돌이
다솜 = 사랑하옴의 옛 고어.
Developer! ubuntu-ko! 다솜돌이 정석
익명 사용자의 이미지

답변 주신분들 감사합니다~~
근데 제가 완전 초보라.....어렵네요.....^^;;
혹시 예제가 있는곳 아시면.....^^

dasomoli의 이미지

Anonymous wrote:
혹시 예제가 있는곳 아시면.....^^

http://database.sarang.net/study/c/unix_c/21.htm#4.1

alarm 함수의 예제입니다. :D



dasomoli의 블로그(http://dasomoli.org)
dasomoli = DasomOLI = Dasom + DOLI = 다솜돌이
다솜 = 사랑하옴의 옛 고어.
Developer! ubuntu-ko! 다솜돌이 정석
익명 사용자의 이미지

http://bbs.kldp.org/viewtopic.php?t=61285

이건 어떤가요?(며칠 전에 질문과 동일하군요.)

Prentice의 이미지

(같은 분이시네요. 중복질문은 좋지 않습니다.)

익명 사용자의 이미지

아하하....^^;;
저도 중복질문은 하고 싶지 않은데요......ㅡㅡ;;
모르는건 많고 하긴 해야하고.....
죄송합니다......

익명 사용자의 이미지

괜찮습니다^^

다만 한번 질문하신 것에 다시 답글을 다시면 위로 올라와서 사람들의 눈길을 끌게 되므로....

그 동안 시도했던 것을 답글로 달아 주시면 더욱 좋은 답변을 기대하실 수 있으실 겁니다.

leo~~~~의 이미지

그렇게 말씀해주시니...감사합니다~~^^
음...제가 시도했던 것은요.....
제가 하려는게 시리얼 통신 이거든요...
일단 간단하게 송신쪽에서 10부터 100까지
1초에 10씩 늘어나게 했거든요...
그니까 총 10개의 데이터가 수신쪽으로
전송이되는데 문제는 송신쪽에서 sleep()을 사용하니까
10부터 100까지 모두 송신쪽에서 처리한 다음에
한번에 송신하더라구요.....제가 원하는건 하나씩 하나씩
전송되는 거거든요....
10부터 100까지의 데이터가 좌표값이거든요....
그래서 처음에 10 1초후에 20......
이렇게 해서 선이 점점 길어지게 하려구요.....
alarm()과 signal()을 쓰려니까.....어려워서요.....
근데 제가 하려는대로 하려면
sleep() 말고 alarm()과 signal()을 사용해야하나요??

익명 사용자의 이미지

leo~~~~ wrote:
sleep() 말고 alarm()과 signal()을 사용해야하나요??

역시나 gcc 얘기는 아닙니다만;;

delay 함수에 대해 검색해 보시는게 어떨까요?

고등학교 때 선생님께서 delay 는 좋지 않으니 자제하라는 말씀을 듣고 얼마나 상심(? ) 했던지...

1. gcc 에 delay가 포함되는지 확인한다.
2. delay 가 있다면 송신하는 구문 사이에 넣어준다.

정도가 되겠지요;

저도 이젠 프로그래밍을 공부하고 싶어요~;;

익명 사용자의 이미지

답변 주신분들 모두 감사드립니다~~
sleep()함수 이용해서 했습니다.....
근데요....sleep() 함수는 정수만 넣을수 있나요??
0.1초 처럼 float형은 넣을수 없는건가요??

elien의 이미지

손님 wrote:
근데요....sleep() 함수는 정수만 넣을수 있나요??

unsigned int sleep(unsigned int seconds);

훗, 못 믿겠나?

paperplane의 이미지

더 작은 초 단위를 쓰시고 싶으시면 nanosleep() 이나 usleep()을 쓰세요

nanosleep - pause execution for a specified time

int nanosleep(const struct timespec *req, struct timespec *rem);

usleep - suspend execution for microsecond intervals

void usleep(unsigned long usec);

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.