我有一個代碼下面,我發送到串行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