여기에 아주 이상한 문제가 있습니다. 어쩌면 저를 도와 줄 수 있습니다. 직렬 포트를 통해 연결된 바코드 카드 판독기를 사용하는 Windows CE 6 장치가 있습니다. 나는 이것을 처리하기 위해 Compact Framework의 (v2.0) SerialPort
클래스를 사용하고 있으며 모든 것이 잘 동작하고 있습니다.데이터가 이전에 수신 된 경우 SerialPort.Open()이 시스템을 고정시킵니다. (Compact Framework)
그러나 한 가지 문제가 있습니다. 직렬 포트가 열리기 전에 카드를 스 와이프하면 Open()
호출에서 전체 시스템이 고정됩니다. 예외도없고, 경고도없고, 아무런 이유없이 시스템이 완전히 멈췄습니다. 포트를 열기 전에 버퍼 지우기를 시도했지만 InvalidOperationException
이있어 포트가 열린 후에 만이 메서드를 사용할 수 있습니다.
복잡성과 관련이 있는지 확인하기 위해 단순화 된 버전의 코드를 만들었지 만 포트를 여는 버튼이있는 간단한 양식은 같은 방식으로 고정됩니다. 여기에 간단한 코드입니다 : 내가 잘못 뭘하는지 볼 수
private void btConnect_Click(object sender, EventArgs e)
{
try
{
this.serialPort = new SerialPort(this.txName.Text, Convert.ToInt32(this.txBaud.Text));
this.serialPort.RtsEnable = this.chRTS.Checked;
this.serialPort.Open(); //it freezes here
this.btConnect.Text = "Disconnect";
this.txName.Enabled = false;
this.txBaud.Enabled = false;
this.chRTS.Enabled = false;
}
catch
{
MessageBox.Show("Failed to open port. Please check your settings and try again.", "Operation failed", MessageBoxButtons.OK, MessageBoxIcon.Hand, MessageBoxDefaultButton.Button1);
}
}
, 나는 그것이 콤팩트 프레임 워크의 버그라고 생각하기 시작하고있다. 카드 판독기는 F03030DKD03003\r\n
과 같은 패킷을 전송합니다. 어떤 아이디어? 미리 감사드립니다.
불행히도 나쁜 가정 - OEM이 직렬 드라이버를 제공합니다. CE는 샘플을 제공하지만 많은 OEM이 이전 버전의 오래된 드라이버를 가져옵니다. – ctacke