【发布时间】:2013-09-23 00:18:53
【问题描述】:
我通过串口从我的 Arduino 获取一些值。数据具有以下格式:
"value1,value2,value3\r" 作为string。
示例:"4.5,550.0,0.02\r"
我可以接收并分离这些值,但是当我尝试将它们转换为 double 时,我得到以下异常
“输入字符串的格式不正确”`.
double Battery = 0, Voltage = 0, Current = 0;
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string data = serialPort1.ReadLine();
string bv = data.Substring(0, data.IndexOf(",") - 1);
data = data.Substring(data.IndexOf(",") + 1);
string v0 = data.Substring(0, data.IndexOf(",") - 1);
data = data.Substring(data.IndexOf(",") + 1);
string i = data;
double batteryVoltage = Convert.ToDouble(bv);
double V0 = Convert.ToDouble(v0);
double I = Convert.ToDouble(i);
Battery = batteryVoltage;
Voltage = V0;
Current = I;
}
【问题讨论】:
-
你在这里滥用了相当多的 Substring,
string.Split(',')和TryParse有什么问题? -
此代码适用于您的示例数据。请提供导致错误的数据
-
您确定您的输入是
4.5,550.0,0.02\r而不是4.5,550.0,0.02\\r? -
@user2790895 遇到异常时能否给我们
data的值? -
由于有些人没有意识到这一点 - 示例数据在某些区域设置上失败,例如波兰语使用“,”作为小数点,并且不认为“4.5”是要转换的正确字符串。
标签: c# string winforms exception double