한국어 English Chinese Russian

질문&답변 게시판 / 기술지원



SSL 암호화로 사용자의 입력정보가 보호되고 있습니다.
No. 852 Re: Re: CSE-H53 SW관련 질문건 2011-02-24

파일은 잘 받았습니다.

다만 제가 원하는 것은 어느부분의 데이터가 깨지는지를 확인 하는 것이 아닙니다.


구체적으로 질문 드리면..
1. 언제 "DlgOnReceive" 이 함수가 호출 되는지요?
2. len = m_socket.Receive(buf2, UART_MAX_CNT, 0);
에서 len은 어떻게 결정 되는지요?
3. len = m_socket.Receive(buf2, UART_MAX_CNT, 0);
이 코드 아래에서 buf2의 데이터를 카피하거나 참조 하고 있을때
새로이 들어 오는 데이터와 충돌이 나지는 않는지요?
4. 현재 생태를 보면 40KB의 데이터가 오는 중간에 "DlgOnReceive" 함수에서
제가 buf2안의 데이터를 어세스 하는데,
이런 것이 데이터 깨짐과 관계가 있을까요?
5. "DlgOnReceive"이 함수를 좀더 효율적으로 쓸수 있는 방법을 찾고 있습니다.


제가 PC 프로그램을 잘 몰라 좀 무리한 질문을 드리는지도 모르겠습니다.
모쪼록 너그러이 봐주세요

그럼 수고 하세요




> 솔내시스템(주) wrote:
> ------------------------------------
> 안녕하세요. 솔내시스템입니다.
>
> 첨부 파일을 보시면 클라이언트 샘플인 것을 확인 하실 수 있습니다.
>
> Dump2Notepad 함수를 이용하면 메모장에 데이터를 출력 할 수 있습니다.
>
> Receive 함수를 보시면 Dump2Notepad 함수를 호출하여 받은 데이터를 출력합니다.
>
> 첨부 파일을 참고하셔서 데이터를 메모장에 출력해보면서
>
> 어느 부분에서 깨지는지 확인 하시면 될 것 같습니다.
>
> 감사합니다.
>
> > Anonymous wrote:
> > ------------------------------------
> > 안녕 하세요
> > CSE-H53과 t2s_vc.zip를 다운받아 테스트 중입니다.
> >
> > 저희 프로젝트의 구성도는
> > SET==(UART)==CSEH53==(LAN)==PC
> > 이렇게 되어 있습니다.
> > SET에서 PC로 전송 되는 DATA가 40KB 정도씩 됩니다.
> > PC에서 셋트로 전송 되는 데이터는 20BYTE정도 입니다.
> >
> >
> > 질문 드립니다.
> > 코드를 보면 "DlgOnReceive(int nErrorCode)" 함수 안에서 데이터를 받는데,
> > 40KB를 연속으로 데이터를 보낼 경우 자주 데이터가 깨집니다.
> > 코드는 아래에 있습니다.
> > 좀더 효율적으로 사용할 방법이 있는지요?
> >
> > 코드에 문제점이 있는지 검토 부탁 드립니다.
> > 그럼 수고 하세요
> >
> >
> > =========== 아 래 =====================
> > void Ct2s_vs2008Dlg::DlgOnReceive(int nErrorCode)
> > {
> > int len,count;
> > CString msg;
> > //BYTE buf[1024];
> > unsigned char buf2[UART_MAX_CNT];
> >
> > len = m_socket.Receive(buf2, UART_MAX_CNT, 0);
> > #if 0
> > for(count = 0; count < len; count++)
> > {
> > msg = buf2[count];
> > //m_console.ReplaceSel(msg);
> > }
> > #else
> > count = 0;
> > if (FindStartFlag==0)
> > {
> > for(count = 0; count < len; count++)
> > {
> > //msg = char(buf2[count]);
> > //m_console.ReplaceSel(msg);
> >
> > if (buf2[count]==BK_UART_SB)
> > {
> > W_point = 0;
> > FindStartFlag = 1;
> >
> > //memcpy (buf,&(buf2[len-count]),len-count);
> > memcpy (&(uart_R_data[W_index][W_point]),&(buf2[count]),len-count);
> > W_point += (len-count);
> >
> > break;
> > }
> > }
> > }
> > else
> > {
> > memcpy (&(uart_R_data[W_index][W_point]),buf2,len);
> > W_point += len;
> > if (uart_R_data[W_index][W_point-1]==BK_UART_EB)
> > {
> > length = (uart_R_data[W_index][2]<<24)|(uart_R_data[W_index][3]<<16)|(uart_R_data[W_index][4]<<8)|(uart_R_data[W_index][5]);
> > FindStartFlag = 0;
> > // 이 부분에서 코드를 비교해보면 데이터가 깨진경우가 발생 합니다.
> > }
> > }
> > #endif
> > }

글쓴이 Anonymous 업체명


NO Subject Name Date Read
850 CSE-H53 SW관련 질문건 Anonymous 2011-02-23 4040
851 Re: CSE-H53 SW관련 질문건 솔내시스템(주) 2011-02-24 3981
852 Re: Re: CSE-H53 SW관련 질문건 Anonymous 2011-02-24 3855
853 Re: Re: Re: CSE-H53 SW관련 질문건 솔내시스템(주) 2011-02-24 4091
854 Re: Re: Re: Re: CSE-H53 SW관련 질문건 Anonymous 2011-02-24 4070
855 Re: Re: Re: Re: Re: CSE-H53 SW관련 질문건 솔내시스템(주) 2011-02-25 4170
856 Re: Re: Re: Re: Re: Re: CSE-H53 SW관련 질문건 Anonymous 2011-02-28 3851
857 Re: Re: Re: Re: Re: Re: Re: CSE-H53 SW관련 질문건 솔내시스템(주) 2011-02-28 3956