希望得到大家的帮助 关于串口读取数据后处理问题(Java)

最近做到一个东西,采用Java串口通信,读取到一串十进制的数据 如下:36.536.236.436.1,实际我想要其显示的是
36.5 36.2 36.4 36.1,然后再对这四个数值进行平均取值处理显示,由于初学JAVA,所以希望能得到论坛朋友的帮助,我的相关程序如下,不知道该怎么改。我的QQ是330598852

byte[] readBuffer = new byte[20];
int numBytes=0;
String readStr="";
try {
inputStream = serialPort.getInputStream();
} catch (IOException e) {
}
try {

        while (inputStream.available() > 0) {
           numBytes = inputStream.read(readBuffer);
        } //while end
        str = new String(readBuffer);
        for(int iii=0;iii<numBytes;iii++){  
          readStr=readStr + Byte.toString(readBuffer[iii]);                 
        }

        recText.append(str + "\n");
        recText.append(readStr+"\n");
        recText.append(readBuffer+"\n");
    } catch (IOException e) {
    }
}

3个回答

[size=x-large][color=red]我看你是要小数点后一位小数,是吧....

下面的代码jdk1.5运行OK...[/color][code="java"][/size]
package com.test;
/**

  • ClassName:Test2
  • Function: TODO ADD FUNCTION
  • Reason: TODO ADD REASON *
  • @author 田志超
  • @version
  • @since Ver 1.1
  • @Date Apr 14, 2010 1:22:12 PM */ public class Test2 { public static void main(String[] args) { String src = "36.536.236.436.1"; String[] tmpArr = src.split("\."); for (String string : tmpArr) { System.out.println(string); } String[] resultArr = new String[tmpArr.length-1]; resultArr[0] = tmpArr[0]+"."+tmpArr[1].charAt(0); for(int i=1; i<tmpArr.length-1; i++){ resultArr[i] = tmpArr[i].substring(1)+"."+tmpArr[i+1].charAt(0); } for (String string : resultArr) { System.out.println(string); } } }

[/code]

[size=large][color=red]希望对你有所帮助..[/color][/size]

然串口的数据格式变化一下,每个数字之间用逗号分割,这样你就可以解析了。

另外,如果串口的数据格式不可变化,那需要确认单元数据的长度或者特征,比如只允许小数点后面一位等,这样也可以实现解析。
假设只允许小数点后面一位:
[code="java"]
int next = Integer.MAX_VALUE;
String src = "36.536.236.436.1";
ArrayList result = new ArrayList();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < src.length(); i++) {
char ch = src.charAt(i);
if(ch == '.'){
next = 1;
}
sb.append(ch);
if(next > 0){

next -- ;
}
else{

result.add(sb.toString());

sb.setLength(0);
next = Integer.MAX_VALUE;
}
}
for (String string : result) {
System.out.println(string);
}
[/code]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐