我在下面有一个代码,我正在发送到串行 USB 端口......它正在工作,现在它没有!akber()
如果发送了错误的字符串,函数就会死掉......
如果我发送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));
我需要它来处理“数据”字符串中的任何数字组合,因此它将它们转换为正确的字节类型并写入端口……这不是我的代码,我不太明白,但是仍然需要修复它:-)