|
이벤트를 만들 필요는 없구요..
OnRxChar 이벤트인가 에서 수신된 데이터를 읽으면 되구요..
한 프레임의 데이터가 몇 번에 걸쳐서 나뉘어서 들어올 수 있으니
중간 버퍼에서 한 프레임을 만족할 때까지 읽어서 한 프레임이 만들어지면 처리하면 됩니다.
아마 시리얼로 데이터를 처리하시는 분들은 대부분 한 프레임의 데이터가 만족할 때까지
중간 버퍼에서 저장했다가 프레임을 만족하면 그 이후 처리 로직을 처리한 방식으로
처리했을 겁니다. 저도 그렇게 하구요.
지금 시작 님이 쓰신 글 :
: 그렇군요.. 이벤트로 처리해야하는군요... 그럼 원하는 이벤트를 제가 직업 만들수도 있나요? 이벤트의 경우 메시지가 넘어오면 그 메시지를 잡아서 처리하는걸로 알고 있는데 맞는건지 틀린건지 모르겠내요...
:
: 김종기 님이 쓰신 글 :
: : 저는 주로 산업제어 프로그램을 다루고 있구요
: : Intotheblue님의 답변에 전적으로 동의합니다. 제가 주로 쓰는 방법을 설명하자면
: : onrxchar 이벤트에서 수신처리를 하게 되는데 간혹 전류 메터에서 양식화된 데이타를 보낼때
: : 블록 시작(시작코드)에서 부터 블록 끝(종료코드)까지 한번에 수신되지 않는 경우가 발생합니다.
: : 이럴때는 sleep delay를 사용하는것이아니라 별도 전역변수어레이와 인덱스 변수를 만들어
: : 시작과 종료코드를 분석하여 에레이에 적재하여 종료코드수신시에 해석하여 값을 얻으면 됩니다.
: :
: :
: : Intotheblue 님이 쓰신 글 :
: : : 윈도우에서는..
: : : 명령 -> 대기-> 읽기 식으로 처리하기 보다는..
: : :
: : : 이벤트 형태로 처리해서..
: : : 명령을 주고.. event 가 발생하면 그때 처리하는 형태를 주로 씁니다.
: : : 그래서 대부분의 경우 sleep등을 줄 필요가 없습니다.
: : :
: : : 사람들이 많이 쓰는 cport 같은 경우..
: : : onrxchar 이라는 이벤트 핸들러가 있어서..
: : : 수신 데이터의 처리는 이부분에서 하게됩니다.
: : :
: : : 즉 명령 -> 이벤트 발생 -> 데이터 처리 순이죠.
: : :
: : : 그리고 스레드를 사용해도..
: : : sleep 으로 지정한 시간 만큼은 대기하게 됩니다.
: : :
: : : 스레드에 구체적인 사용법은.. 책을 보시고 연구하셔야 할 내용이고요..
: : : 짦은 답글로 설명하긴 어려운 부분입니다..
: : :
: : :
: : : 지금 시작 님이 쓰신 글 :
: : : : 안녕하세요~
: : : :
: : : : 제가 전류 메타로부터 전류를 읽어 들이는 프로그램을 하고 잇습니다.
: : : :
: : : : 이때 전류 메타가 시리얼 통신으로 타이머를 돌리면서 계속 값을 읽어 뿌려주고 있는데요
: : : :
: : : : 헌데 전류메타가 전류를 읽는데 시간이 필요해서 딜레이를 주려고 합니다.
: : : :
: : : : 그래서 sleep()과 delay()함수중에 하나를 사용해서 딜레이를 주었는데
: : : :
: : : : 이 딜레이되는동안 타이머가 동작을 하지 않는군요....
: : : :
: : : : 즉 딜레이를 주긴하지만 타이머는 그대로 계속 동작을 시키고 싶습니다.
: : : :
: : : : 방법이 있을까요? 쓰레드로 타이머를 돌리면 가능할 것 같은대 쓰레드는 한번도 안써봐서...
: : : :
: : : : 혹시 더 간단한 방법을 알고 계시면 알려주시고 아니면 쓰레드를 사용하여 해당 타이머함수를 돌리는 방법이라도
: : : :
: : : : 알려주시면 감사하겠습니다 ㅠ.ㅠ
: : : :
: : : : 염치없지만 답변 부탁드릴께요...
|