|
몇가지 의심나는 부분을 적어봅니다.
1. 무선모뎀을 무엇 쓰세요?
SerialPort의 Bardrate와 와 실제 속도와는 전혀 다르다는것 아시죠?
br 112500 bps 로 설정해 놓았다고 해서 실제 무선으로 그런 속도로 나가지는 않습니다.
단지 모뎀과 pc(노트북)과의 통신속도 일분입니다.
개인적으로 cdma를 이용해서 해보니 1KByte/Sec 정도가 안정적으로 나올뿐 그이상은
잘 안나오더라구요
HSDPA나 와이브로는 좀더 나오겠죠
50Byte를 초당 50번이면 20000bps인데 모뎀이 그정도 되는지 확인을 먼저 해보시는것이 좋을것 같습니다.
2. 대개 pc에서 cpu자원을 가장 많이 먹는것이 화면처리입니다.
data수신이벤트에서는 버퍼에 저장만 하고..
초당 10번씩 버퍼에서 가져와서 처리한후 화면에 반영한다고 하셨는데..
처리루틴이 얼마나 복잡한지 모르겠지만...
처리한후에 전체가 repaint된다면 .. 초당 10번 화면전체가 repaint될것이구..
ListView나 Grid 같은데 item을 하나 추가하는 수준이면 별것 아니지만
처리한 정보로 화면에 꽉찬 그래프를 전체 새로 그린다던가한다면....
여기서는 pc사양에 따라 성능이 다르게 보일수도 있을것 같습니다.
화면 처리루틴을 빼버리고
수신이벤트와 수신데이타수만 Label에 표시해보세요
데이타가 제대로 들어오면
Data처리 루틴에서
int itic1=GetTickCount();
Data처리루틴
int itic2=GetTickCount();
Label1->Caption="처리시간 : "+ IntToStr(itic2-itic1)+" ms"
이런식으로 하놓으면 하번의 데이타를 처리하는 시간을 대충 알수 있습니다.
주의
GetTickCount() 는 1ms 단위의 값을 return하지만 정확도는 15ms이상입니다.
그럼..
이준석 님이 쓰신 글 :
: 현재 보레이트는 112500으로 설정되어있구요..
:
: 외부 MCU와 50바이트정도의 데이터를 주고받고 있습니다.
:
: 그런데...
:
: 속도에서 문제가 생기는데요...
:
: 프로그램을 하는 데스크탑컴퓨터에서는 처리가 원만하게 잘 이루어지는데
:
: 무선통신을 위해 노트북에 프로그램을 설치하고 통신을 하게되면 노트북이 처리를 못하는 현상이 발생합니다.
:
: 50바이트의 데이터를 초당 50번 전송하는데요...
:
: 데이터를 받고나서 다른 처리를 하는부분도 없구요
:
: 단순히 String변수에 받은 버퍼를 저장하는 이벤트만 발생시키고
:
: 타이머를 사용해서 받은 데이터를 초당 10번 처리하고 디스플레이 하도록 구성이 되어있습니다.
:
: 이정도 처리가 안되는게 단순히 노트북의 사양때문일까요??
:
: 그리고...혹시...빌더로 작성한 프로그램의 구간구간의 처리시간을 알수있는 방법은 없을까요??
:
: 스코프로 찍어볼수도 없고.....뭔가 방법이 있다면 조언좀 부탁드려요...
|