본문 바로가기

Language/MFC

MFC RS232통신 실시간 read 병목현상

Rs232 통신을 하기 위해서 어쩌다 보니 스레드를 배웠는데.....

아직도 작업스레드랑 머...유저 스레드 이건 모르겠다.ㅠ;;

걍 CThread 상속받아서 하는방법만.ㅠ;;

통신중...
실시간으로 데이터를 받으면서 다시 모듈로 명령을 날리면 명령어가 씹히는 현상이 발생하여 이덕에 꽤 애를 먹었다.

물론 Full로 해결을 다 한건 아니지만 매우 희망적인건....명령이 날라가는것.ㅋㅋㅋ

우리나라 윈도우 프로그래밍 쪽으로 갓 코더가 꽤 모여있는 devpia 에 결국 조언을 구하였는데...

스레드를 read만 하고 write 할때는 메인에서 날려라...라는 (mater level의 재우님 께서 조언하신 내용..) 말에 한방에 해결.!!

처음엔..

MainDlg -> 통신Thread -> CComm
    draw <- read & write <-> CComm
방식으로 하였다

결국 매인에서 커멘드는 통신Thread로 메시지를 보낸 후 CComm으로 보내고, 읽을때는 역시 역으로 통신 Thread를 거치고 매인으로 뿌려줬는데....이때 postMessage든 SendMessage든 상관없이 실시간 read를 하게 되면 통신Thread에 부하가 생겨서 걍 매시지가 씹혀버린다는 것이다.

ㅠㅠ 이것때문에 얼마나 고생을 했는지....

물론 받아온 데이터가 값이 심하게 튀고 있어서 이것도 해결해야하며, 제대로 데이터를 파싱하든 noise를 잡든 해서 가져와도 엄청난 식을 통해서 매인으로 들고 와야한다는 문제가 남아있지만...단순한 통신을 하기 위해서 한다면 거든하다는 거~~ㅋㅋㅋ