|
Packet를 보내는 쪽에서
Packet를 모두 보냈는지(아마도 ComPort1->Write()의) 결과를 확인해 보세요.
linuxman 님이 쓰신 글 :
: 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);
:
: }
|