|
안녕하세요...
제가 Async Pro ApdComPort를 이용해서 Terminal을 만들었는데요
사용 중 문제가 있어 질문드립니다.
장비2대가 연결되있고 PC는 한대입니다.
PC에 Terminal창 두개 만들고 ApdComPort도 두개 만들었는데 실행중 문제가
있습니다.
문제1.
처음 실행후 얼마동안은 작동이 잘되다가 어느순간 Terminal화면이 멈춰버리고
키도 입력이 안됩니다. 그러다 끊고 다시 연결하면 또 잘됩니다.
문제2.
어느순간 CPU사용률이 100%되면서 프로그램이 죽어있는것처럼 됩니다.
제 생각에는 콤포넌트 내부Buffer를 사용하면서 지우지 않아서 생기는 현상 같습니다.
혹시 몰라 소스첨부합니다.
//장비1의 TriggerAvail이벤트 함수:
void __fastcall TMrTerminalMainForm::ApdComPort1TriggerAvail(TObject *CP,
WORD Count)
{
char* pBuffer ;
try
{
ReceiveBufLen = Count;
if(ReceiveBufLen <= 0 )
{
ApdComPort1->Open = false;
return;
}
pBuffer = new char[Count] ;
memset(pBuffer, 0, sizeof(pBuffer));
for (int i=0;i<Count;i++)
{
pBuffer[i] = ApdComPort1->GetChar();
}
ReceiveBuf = (char *)pBuffer;
if(ReceiveBuf != "") //if(pBuffer != NULL)
AddToMemo();
}
__finally
{
delete[] pBuffer;
}
}
//---------------------------------------------------------------------------
//장비2의 TriggerAvail이벤트 함수:
void __fastcall TMrTerminalMainForm::ApdComPort2TriggerAvail(TObject *CP,
WORD Count)
{
char* pBuffer2;
try
{
ReceiveBufLen2= Count;
if(ReceiveBufLen2<= 0 )
{
ApdComPort2->Open = false;
return;
}
pBuffer2= new char[Count] ;
memset(pBuffer2, 0, sizeof(pBuffer2));
for (int i=0;i<Count;i++)
{
pBuffer2[i] = ApdComPort2->GetChar();
}
ReceiveBuf2= (char *)pBuffer2;
if(ReceiveBuf2!= "")
AddToMemo2();
}
__finally
{
delete[] pBuffer2;
}
}
//---------------------------------------------------------------------------
|