我有一个代码下面,我发送到串行USB端口... 它正在工作,现在它不是! 的akber()
功能死去如果错误的字符串发送...Java写入字节到串口USB
如果我送akber("1.0.0.0.1.5")
- 它完美的作品,
如果我送akber("23.0.128.0.0.5")
- 它不工作...下面
见代码
public static byte[] akber(final String input) {
StringTokenizer tokens = new StringTokenizer(input, ".");
int numberOfArrays = tokens.countTokens();
byte[][] byteArrays;
byteArrays = new byte[numberOfArrays][4];
int i = 0;
int space = 0;
while (tokens.hasMoreTokens()) {
int x = Integer.valueOf(tokens.nextToken());
if (x<256) { space++; } else { space+=2; }
byteArrays[i] = BigInteger.valueOf(x).toByteArray();
i++;
}
final byte[] output = new byte[space];
copySmallArraysToBigArray(byteArrays, output);
return output;
}
public static void copySmallArraysToBigArray(final byte[][] smallArrays, final byte[] bigArray) {
int currentOffset = 0;
for (final byte[] currentArray : smallArrays) {
System.arraycopy(currentArray, 0, bigArray, currentOffset, currentArray.length);
currentOffset += currentArray.length;
}
}
从函数调用:
serialPort.writeBytes(akber(data));
我需要它来处理“数据”字符串中任意数字的组合,因此它将它们转换为正确的字节类型并写入端口...它不是我的代码,牛逼很理解,但仍需要修复它:-)
你说'akber()函数死了'是什么意思?有没有堆栈跟踪? – linski 2013-03-21 11:08:44
如果我做System.out.println(“akberData =”+ akber(“1.0.2.0.0.5”));它返回akberData = [B @ 101e178 ...如果我做System.out.println(“akberData =”+ akber(“1.0.128.0.0.5”)); 它返回null,并且该函数在该点处停止。 ...实际上,它似乎超过128的值,如果低于128,函数不会返回任何结果...? – user2194607 2013-03-21 11:20:18