|
CPORt 2.64를 사용하고 있습니다.
상대쪽 장비에서 약 250~300밀리초 단위로 약 100 byte정도의 완전한 프레임(임의로 정의한 Soh ~ EOT 까지) 을 계속 writing 하고 있습니다.
ComPort1RxChar 에서 읽어 보면 frame이 통째로 빠지는 느낌이 듭니다.
중간에 rxbuffer 에서 하나의 프레임이 완전히 사라지는 느낌입니다. ( 즉 100 byte의 프레임을 100번 보내면, 80번정도는 못 받는 그런현상 )
이런 현상이 왜 일어나나요?
(그런데..시간을 약 300밀리초 ~ 500밀리초로 writing 하면 100번 보내면, 100번 수신합니다)
rx,tx buffer는 4096으로 설정하였습니다.
ComPort1 ==>
BaudRate = br19200
Port = 'COM1'
Parity.Bits = prNone
StopBits = sbOneStopBits
DataBits = dbEight
Events = [evRxChar, evTxEmpty, evRxFlag, evRing, evBreak, evCTS, evDSR, evError, evRLSD, evRx80Full]
Buffer.InputSize = 4096
Buffer.OutputSize = 4096
FlowControl.OutCTSFlow = False
FlowControl.OutDSRFlow = False
FlowControl.ControlDTR = dtrDisable
FlowControl.ControlRTS = rtsDisable
FlowControl.XonXoffOut = False
FlowControl.XonXoffIn = False
OnRxChar = ComPort1RxChar
그런데..CPort의 void __fastcall TForm1::ComPort1RxChar(TObject *Sender, int Count) ..
{
BYTE recvBuf[512];
int iLen,i;
memset(recvBuf,'\0',sizeof(recvBuf));
iLen=ComPort1->Read(recvBuf,Count);
}
|