2017-12-26 28 views
-1
private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) 
{ 
    if (Clos_flag) return; 
    try 
    { 
     Listening = true; 
     if (serialPort.IsOpen) 
     { 
      this.txt_weight.Invoke(new MethodInvoker(delegate 
      { 
       serialPort.NewLine = "\r"; 
       string weight = serialPort.ReadLine(); 
       weight = weight.Trim(); 
       MessageBox.Show(weight); 
       if (weight.IndexOf("i") > 0) 
       { 
        weight = weight.Substring(3, 8); 
        txt_weight.Text = weight.Substring(0, weight.LastIndexOf("0") + 1); 
       } 
      })); 
     } 
    } 
    catch (Exception eg) 
    { 
     MessageBox.Show(eg.ToString()); 
    } 
    finally 
    { 
     Listening = false; 
    } 
} 

위의 코드를 사용하여 저울을 읽지 만 프롬프트의 시간 초과 오류가 계속 발생합니다. 코딩의 어느 부분이 잘못된 것인지 잘 모르겠습니다.시리얼 포트 유지 프롬프트 시간 초과 오류

+1

프롬프트 무엇을 "시간 초과 오류"

당신은 코드를 참조 할 수 있습니다? 문제가 확실하게 재현되는 좋은 [mcve]와 코드가 수행하는 작업에 대한 자세한 설명, 오류 메시지의 _ 텍스트 _ 및 예외의 전체 스택 추적을 포함하도록 질문을 수정하십시오. 그리고 당신이 기대하거나 원하는 것의 설명. –

답변

0

구성 직렬 포트를 확인하십시오. 코드 serialPort.Open()을 실행하는 동안 오류가 발생할 수 있습니다.

void InitialComport1() 
{ 
    mySerialPort1 = new SerialPort(Temp._comport1); 

    if (mySerialPort1.IsOpen) 
    { 
     mySerialPort1.Close(); 
    } 

    mySerialPort1.BaudRate = Temp._baudRate1; 
    mySerialPort1.Parity = Parity.None; 
    mySerialPort1.StopBits = StopBits.One; 
    mySerialPort1.DataBits = Temp._dataBit1; 
    mySerialPort1.Handshake = Handshake.None; 
    mySerialPort1.RtsEnable = true; 
    mySerialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler1); 

    try 
    { 
     mySerialPort1.Open(); 
    } 
    catch 
    { 
     Messagebox.Show("Error myserialPort1") 
    } 
} 

private void DataReceivedHandler1(object sender, SerialDataReceivedEventArgs e) 
{ 
    try 
    { 
     string indata = mySerialPort1.ReadLine(); 
     try 
     { 
      string mass = indata.Substring(7, 7); 
      SetText1((Convert.ToInt32(mass)).ToString()); 
     } 
     catch 
     { 
      string mass = indata.Substring(3, 7); 
      SetText1((Convert.ToInt32(mass)).ToString()); 
     } 
    } 
    catch (Exception eg) 
    { 
     MessageBox.Show(eg.ToString()); 
    } 
}