사용자 도구

사이트 도구

English

moacon:comgetinterval:index

comGetInterval

u8 comGetInterval (u8 comCh)

comCh : 통신채널번호 (0 ~ 2)
리턴값 : 0 부터 0xff 사이의 값

설명

바로 이전에 수신된 데이터와의 간격을 알 수 있는 함수입니다. 이 함수가 왜 필요한지 이해하려면 패킷통신에 대해서 알아야 합니다.

RS232 통신에서는 패킷통신을 주로 사용합니다. 의미있는 여러 개의 데이터를 모아서 하나의 데이터집합을 구성합니다. 이것을 패킷이라고 부릅니다.

패킷을 보내거나 받을 때, 무엇보다도 중요한 것은 패킷의 시작과 끝을 판단하는 것입니다. 시작코드와 종료코드를 앞뒤로 감싸서 보내는 방법도 있습니다.이 방법은 시작코드와 종료코드를 DATA 필드에서 사용할 수 없다는 불편함이 있습니다.

그래서 프레임과의 간격을 두어 구분하는 방법이 자주 쓰입니다. (MODBUS RTU 에서도 이 방법을 사용합니다.)

comGetInterval 함수는 바로 이런 패킷통신을 구현하기 위해서 필요한 함수입니다. 바로 앞에서 수신한 데이터와의 간격을 mS 단위로 알 수 있습니다. 연속해서 오는 데이터라면 간격이 매우 작은값이 됩니다.

바로 앞의 데이터와 간격이 벌어져 있다면, 큰 값이 들어 있습니다. 최대 255 까지 저장됩니다. 255 밀리초 이상의 큰 간격은 더 이상 측정하지 않습니다.

이 정보를 가지고 프레임의 시작과 끝을 구분할 수 있습니다.

가까운 데이터의 간격은 5 미만의 작은 값으로 랜덤하게 나올수 있습니다. (보레이트에 따라 달라질 수 있음)

사용예

// 수신되는 데이터의 인터벌 정보와 수신값을 LCD 상에 표시
#include "moacon500.h"
void cmain(void)
{
 int i=0;
 clcdI2cInit(0);
 clcdPower(1);
 delay(100);
 clcdCsr(0);
 openCom(1,115200,C8N1);
 while(1) {
 if (comLen(1) > 0) {
 clcdPrint(0,0,"%2X",comGetInterval(1));
 clcdPrint(5,0,"%2X",comGet(1));
 }
} 

comGet 함수를 수행하기 전에 comGetInterval 함수를 사용하십시오. ComGetInterval 함수는 바로 다음에 comGet 함수로 읽어낼 데이터의 Interval 정보를 알려줍니다.

주의사항 : 이 방법은 MOACON 과 타기기 사이에 어떠한 버퍼링 장치가 없어야 사용가능합니다. 중간에 다른 콘트롤러 ( 컨버터류 : 예를들면 USB-TO-RS232 컨버터 )가 개입하게 된다면, 프레임 간 간격이 재조정될 수 있기 때문입니다.

목록으로 가기

moacon/comgetinterval/index.txt · 마지막으로 수정됨: 2016/04/14 09:50 (바깥 편집)