|
시리얼 통신으로 통신을 하고 있는데 컴퓨터에서 통신으로 받은 데이터를
처리해서 화면에 뿌려주고 있는데 데이터처리 속도에 비해 통신으로 들어오는
데이터가 너무 많은 것 같아서 어느정도의 시간이 지난 후에 버퍼가 모두 차서
컴터가 멈추는 현상이 일어나거든여... 문제는 데이터 보내는 속도를 줄이면 되지
않겠냐? 하시겠지만 지금 현재는 그렇게 할 수는 없다는게 문제입니다.
//---------------------------------------------------------------------
if(Frame_count >=200)
{
for(i=0;i<2;i++)
{
if(Comm_Handle[i]!=NULL)
PurgeComm(Comm_Handle[i],PURGE_RXCLEAR|PURGE_TXCLEAR);
memset(Auto_In_Buffer[i],NULL,sizeof(Auto_In_Buffer[i]));
memset(Auto_Out_Buffer[i],NULL,sizeof(Auto_Out_Buffer[i]));
}
Frame_count=0;
}
//----------------------------------------------------------------------
현재는 이렇게 들어오는 프레임을 카운트해서 200개(약13K)정도 이상 되면 버퍼에
어느 정도 데이터가 쌓여있는지 모르는 상태에서 걍
PurgeComm(Comm_Handle[i],PURGE_RXCLEAR|PURGE_TXCLEAR);
요 명령을 써서 Tx, Rx를 모두 클리어하고 있는데 실제 위에 있는 함수도 어케 동작
하는지 모름다... 걍 쓰는건데요...
시스템 버퍼를 클리어하는 방법하고 제 프로그램이 더욱 안전하게 작동할 수 있는
방법을 제시해 주시면 감사하겠습니다.
장문의 글을 읽어주셔서 감사합니다.
모두 즐건 하루되세요....
|