|
저속일때는 잘되는데 고속일때 안되는 것은 ..
100% 결선 문제입니다. 노이즈 타거나. 장비 삑사리..
하드웨어 먼저 확인해 보세요~~~
newhuni 님이 쓰신 글 :
: CPort 3.10을 사용하고 있습니다.
: 9600에서는 잘 사용하다 이번에 38400으로 사용하려고 합니다.
:
: 그냥 수신 이벤트 함수에서 Count로 전달된 만큼 버퍼를 파일에 기록해서 보는데
: 데이타 중간 중간에 이상한 값이 나타납니다. 순서가 뒤 바뀌는 것도 같구요.
:
: 그리고 Count만큼 읽어서 보면 데이타가 실제로는 들어오지 않은 경우도 있습니다.
: 만약 수신 버퍼를 0xaa으로 초기화 한뒤 Count만큼 버퍼를 읽어 수신버퍼에 쌓고 보면
: 수신 버퍼에는 기존 초기값 0xaa만 저장되 있습니다.
:
: 혹시 같은 경우 보신분 계시면 조언 부탁드립니다.
: 소스는 아래와 같습니다.
: < Databit : 8 / Stopbit : 1 / Parity : None / 38400bps / Flow Control : None >
:
: void __fastcall TfrmMain::ComPort1RxChar(TObject *Sender, int Count)
: {
: unsigned char Buff[1024] = "";
: AnsiString s, temp;
:
: memset(Buff, 0xaa, 1024); // 버퍼 초기화
: ComPort1->Read(Buff,Count); // 버퍼에 Count만큼 읽어서 저장
:
: for(int i=0;i<Count;i++){ // temp 변수에 데이타 정리
: s.sprintf("%02x",Buff[i]);
: temp = temp + " " + s;
: }
: // 로깅
: }
:
:
|