2017-05-19 4 views
0

マイコンにいくつかのコマンドを送る必要があります。 RXTXライブラリを使用しています。私は私のマイクロコントローラに接続することができますが、私は右のバイトに私のコマンドを変換するための問題があります。javaのRS232への16進数値の送信方法シリアルポート

例: 0x00の16進値を送信します。

iはバイト

byte a = (byte) 128; 

128整数(0x80の)を変換する場合、私は、Javaバイトから-128

範囲を得るには、-128 - 127

であるが、私はコマンドとして128を送信する必要があります。どうすれば変換できますか?

私も他のコマンドを送信しています。

80 
20 F2 40 F8 3F 
FA 21 40 

いずれかが40ビットである。

byte[]またはintを受け入れることができる出力ストリームに書き込みます。

... 
    static OutputStream out; 
out.write(byte[]); 
out.write(int); 
.. 

ただし、intは40ビットで範囲外です。どのようにして1バイトに40ビットの整数を解析できますか?

This Question helped me

答えて

1

は0x80まだかかわらず、Javaの署名バイト型システムのように、それを示して何の0x80です。

送信してください。

+0

hm大丈夫です。私のマイクロコントローラは私のコマンドに応答していない、私はおそらくこれが問題だと思った:S – Khan

0

あなたは

Byte.parseByte("a", 16); 

を使用することができますが、私はそれを転送することをお勧めしますので、それが原因署名/署名のない問題に、バイトにキャストする必要があります。これは、より高い値127までの値でのみ動作しますint型と、私は長い間戻って、私はそれが重要そうは思いませんliberary RXTXを使用していた

(byte) (Integer.parseInt("ef",16) & 0xff); 
+0

バイトc =(バイト)(Integer.parseInt( "128"、16)&0xff);出力として40を与える – Khan

+0

16進数の値を渡す必要があります。 80 –

1

のバイトに、それをキャスト。単にstring.getBytes()を送信してください

+0

文字列のバイト表現を送信したくない – Khan