2017-12-16 2 views
-3

직렬 포트에서 데이터를 읽고 텍스트 상자에 배치하는 간단한 프로그램이 있습니다. 그 후 그 데이터를 가져 와서 다른 작업을 수행하고 싶습니다 (비교하는 등 ...). 받은 데이터는 텍스트 상자에 배치되지만 Convert.Int32 (textbox.Text)를 사용하여 정수로 변환하면 프로그램에서 오류가 발생합니다. 어떤 도움이라도 대단히 감사합니다. 여기에 내 코드의 일부입니다 :직렬 포트에서 데이터를 읽고 C에서 비교 #

try 
{ 
    textBox1.Text = serialPort1.ReadExisting(); 
    int x = Convert.ToInt32(textBox1.Text); 

    switch (x) 
    { 
     case 1: textBox17.Text = "Received Number is 1"; break; 
     case 2: textBox18.Text = "Received Number is 2"; break; 
     case 3: textBox19.Text = "Received Number is 3"; break; 
    } 
} 
catch (TimeoutException) 
{ 
    label1.Text = "Timeout Exception"; 
} 

I 유형 FormatException의 예외를 가지고있다가,이 예외 메시지에 대한 스크린 샷입니다 :
enter image description here

+0

예외를 작성하십시오. –

+0

'TimeoutException'을 잡을 뿐이지 만 변환 예외와 같은 다른 유형의 예외는 catch하지 않습니다. 오류 세부 정보와 정수로 변환하려고 시도한 문자열을 제공해야합니다. – Mahmoud

+0

@Mahmoud Convert.ToInt32에 오류가 있습니다. PIC에서받는 문자열은 숫자입니다. 문제가 어떻게 해결 될 수 있는지 알 수 있습니까? – Fawaz

답변

0

당신은 쓰지 않는다는

int x=textbox1.Text 

문자열과 정수 사이에 implicitly convert을 사용할 수 없기 때문에. 유형의 예외 만 캐치하는 catch 블록이 있기 때문에 처리되지 않은 예외가 있습니다. 문제는 유형이 FormatException이고 예외 유형을 catch 할 수있는 catch 블록이 없으므로 예외가 스택을 올라가서 적절한 catch 블록이있을 때까지 풀어 낼 수 있기 때문입니다.

FormatException 지금

: 하나의 유형 FormatException의 예외가 있지만 일반적인 이유는 Convert 방법이 잘못된 형식이기 때문에 정수 값으로 문자열의 내용을 변환 실패 이유는 여러 가지 이유가 있습니다! Here 문자열에 소수점이 있으면이 유형의 오류가 발생한다는 것을 알 수 있습니다. 문제는 당신이 읽은 문자열에 있습니다.

관련 문제