从串口排序数据线

时间:2011-12-21 20:25:44

标签: java

我有一个程序通过串口发送一串数据。

我想将数据字符串排序到不同的数组中,以便我可以显示它们或计算数字的平均值。

数字以逗号分隔。第一个数字始终为0,未使用,*后面的数字相同。 下一个数字是定义逗号后面的下一个数字的数字。

    #0,    1,5.430,    4,-55.3,    5,6.60,    6,151.0,    51,5.500*16
    #0,    1,5.440,    51,5.400*22
    #0,    1,5.480,    4,-55.0,    5,6.50,    6,151.0*37
    #0,    1,5.490,    4,-53.7,    5,6.70,    51,5.500*02

由于我无法插入图片,我添加了[TAB]以显示不同的组不同的组,并添加了[TAB]

程序并不总是发送相同长度的行。

数组“1”包含数字“5.430”  

数组“4”包含数字“-55.3”  

数组“5”包含数字“6.60”

等等。

1 个答案:

答案 0 :(得分:1)

假设你已经通过串口完成了整个通信,并且第二行是一个有效的数据集,我会用Scanner包装你的串行流,并按原样构造它: / p>

String[] arrayAndValue;
int arrayToken;
double arrayValue;
Scanner serScanner = new Scanner(myInputStream);
serScanner.useDelimiter("[\\p{JavaWhiteSpace}+||\*dd]");   
While(serScanner.hasNext()) {
    scannedItem = serScanner.nextString;
    arrayAndValue=scannedItem.split(",");
    arrayToken =Integer.parseInt(arrayAndValue[0]);
    arrayValue =Double.parseDouble(arrayAndValue[1]; 
    //insert a switch statement here, 
    //based on the different values arrayToken could have
}

我所做的是使用Scanner类将myInputStream分别解析为数组标记和值,arrayTokenarrayValue分别为{{1}然后,使用String,后跟两位数的模式拆分该字符串。

这将导致长度为3的String数组,第一个包含*,第二个包含arrayToken,第三个是空字符串(由于尾随逗号而创建)。

然后,您使用arrayValueInteger.parseInt调用来翻译它们,然后将它们添加到Double.parseDouble语句中的相应数组中。 如果您不知道您将接收的每种类型的确切数量,我建议您将这些项目输入switch而不是ArrayLists