既に Python で開発された Android アプリの移植に取り組んでいます。Python プログラムには、完全に理解しようとしている次の行があります。
self.comfd = Serial(...) # from the pySerial API
....
self.buffer = list(struct.unpack('192H', self.comfd.read(384)))
私が理解していることから、self.comfd.read(384)
384 バイトを読み取ってunpack('192H'
いて、そのデータから 192 の署名なしのショートをアンパックしています。これは正しいです?
Javaでは、次を使用してバッファを読み取ることができました
SerialPort device = SerialPort(file, baud, flags);
InputStream in = device.getInputStream();
私の質問は、入力ストリームを取得したので、Python プログラムが行っているように、署名されていない short を作成するにはどうすればよいですか?
私が試したこと(正しい値を生成していない):
byte[] buffer = new byte[384];
in.read(buffer);
ByteBuffer bb = ByteBuffer.allocate(2);
for (int i = 0; i < buffer.length / 2; i++) {
bb.put(buffer[i]);
bb.put(buffer[i + 1]);
short val = bb.getShort(0);
System.out.println(val);
bb.clear();
}
私は何を間違っていますか?助けてくれてありがとう!
編集:ジェイソン C の回答を組み込みましたが、間違ってループしていました。に変更することで
for (int i = 0; i < buffer.length; i=i+2)
それは私の問題を解決しました。