以下に、シリアル 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));
「データ」文字列の数字の任意の組み合わせで動作する必要があるため、それらを正しいタイプのバイトに変換し、ポートに書き込みます...それは私のコードではなく、よくわかりませんが、まだ修正する必要があります:-)