보통 돌아다니는 시리얼 포트 관련 소스들을 보면..
serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived);
와 같은 방식으로 되어 있습니다.
serialPort.ErrorReceived += new SerialErrorReceivedEventHandler(serialPort_ErrorReceived);
와 같이 정상적인 데이터를 수신 하지 못하였을 경우의 처리도 같이 해주면 좋을 것 같은데 말입니다..
아래는 발생하는 에러의 종류와 원인(?) 정도를 출력합니다.
void serialPort_ErrorReceived(object sender, SerialErrorReceivedEventArgs e)
{
SerialError err = e.EventType;
string strErr = "";
switch (err)
{
case SerialError.Frame:
strErr = "HardWare Framing Error";
break;
case SerialError.Overrun:
strErr = "Charaters Buffer Over Run";
break;
case SerialError.RXOver:
strErr = "Input Buffer OverFlow";
break;
case SerialError.RXParity:
strErr = "Founded Parity Error";
break;
case SerialError.TXFull:
strErr = "Write Buffer was Fulled";
break;
default:
break;
}
// 생략....
}
}
출처
http://www.hoons.kr/Board.aspx?Name=cshaptip&Mode=2&BoardIdx=30099&Key=&Value=