从串口读取数据并在C#中进行比较

时间:2017-12-16 10:50:43

标签: c#

我有一个简单的程序来从串口读取数据并将其放在文本框中。之后,我想获取该数据并对其执行其他操作(比较它等)。收到的数据放在文本框中,但是当我使用Convert.Int32(textbox.Text)将其转换为整数时,程序会出错。任何帮助深表感谢。这是我的代码部分:

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

1 个答案:

答案 0 :(得分:0)

你不写

int x=textbox1.Text

因为在字符串和整数之间不能implicitly convert。您有一个未处理的异常,因为您只有一个catch块,只能捕获TimeoutException类型的异常。问题是你有FormatException类型的例外,因为没有catch块可以捕获这种类型的异常,所以异常将上升到堆栈并解除它直到有适当的catch块。

现在对于FormatException:有很多原因可以获得类型FormatException的异常,但一般原因是Convert方法无法将字符串内容转换为整数价值,因为它的格式不正确! Here您可以发现,如果字符串中有小数点,您将收到此类错误。所以你的问题出在你读过的字符串中。