none
C# 시리얼통신 SerialDataReceivedEventHandler 두번 호출 문제 RRS feed

  • 질문

  • 안녕하세요.

    현재 시리얼통신으로 데이터를 전송받고 있는 초짜 입니다.

    serialPort1.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(SerialData_Received);

    private void SerialData_Received(object sender, SerialDataReceivedEventArgs e)
            {
                int BytesToRead = serialPort1.BytesToRead;
                char[] array = new char[BytesToRead];
                serialPort1.Read(array, 0, BytesToRead);

                //RxString = serialPort1.ReadExisting();

                RxString = "";
                foreach (char a in array)
                {
                    RxString += a;
                }
                this.Invoke(new EventHandler(Add_Received));
            }


    위 코드를 사용하여 데이터를 받는데 이상하게 이벤트 핸들러가 두번이 호출 됩니다.
    디버깅해보니 총 3000 bytes 전송 데이터 중에서 처음 호출때 BytesToRead가 512로 정해지며, 두번째 호출때는
    3000-512인 2488로 정해집니다.
    한번에 3000 bytes 모두를 받고 싶은데 이유를 잘 모르겠습니다.
    3000 데이터 이상을 전송할때도 마찬가지로 첫 호출때는 BytesToRead는 512, 두번째 호출은 나머지 입니다..

    해결책 아시는분은 조언 부탁드립니다.

    감사합니다.

    2013년 5월 22일 수요일 오전 8:58

답변