2017-12-16 9 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"; 
} 

私はタイプFormatExceptionの例外を持っているが、これは例外メッセージのスクリーンショットです:
enter image description here

+0

例外を書いてください –

+0

あなたは 'TimeoutException'をキャッチしますが、変換例外のような他の型のExceptionは捕まえません。エラーの詳細と、Integerに変換しようとしていた文字列を提供する必要があります。 – Mahmoud

+0

@Mahmoud Convert.ToInt32にエラーがあります。私がPICから受け取っている文字列は数字です。問題をどのように解決できるか知ることができますか? – Fawaz

答えて

0

あなたが書いていないが

int x=textbox1.Text 

文字列と整数の間にimplicitly convertを入れることができないためです。 の例外のみがキャッチされるcatchブロックが1つあるため、処理されない例外があります。問題は、タイプFormatExceptionの例外があり、このタイプの例外をキャッチできるブロックがcatchでないため、例外がスタックを上って、適切なキャッチブロックがあるまで巻き戻します。

FormatExceptionのための今

:1のタイプFormatExceptionの例外を取得しますが、一般的な理由はConvert方法は、それが間違った形式でありますので、整数値に文字列のコンテンツを変換するために失敗したことがある多くの理由があります! Here文字列に小数点があった場合、このタイプのエラーが発生することがあります。あなたの問題はあなたが読んだ文字列にあります。

関連する問題