2016-08-19 15 views
0

I持って、次のデータPyserial - Pythonの作成バイト配列

A1 = 0x5A - ヘキサ

A2 = 0x01の - ヘキサ

A3 = 12 - 小数

A4 = 28 -

A5進=(A1乃至A4)の合計

は私が送ることができるはずですこの情報をバイト配列に格納し、一度にser.writeコマンドを使用して送信します。現在

は私が手動でA3とA4はHexに変換していると私は、このser.writeのようなものを使用しています( '\ X5A \ X01 \ X ... \ X ... \ X ...)

私は、単一のバイト配列にすべての変数をパックし、ser.write(ByteArrayの)

SERを言うことができる、方法をしたいと思います---私のserial.Serial(「COM1」)Serに

同じです.read - 私が得た情報はバイト配列になっています - デシマルと16進数にデコードするにはどうすればいいですか?

バイト配列に変換してからバイト配列に戻すためのbinascii関数の例

答えて

2

16進値の文字列が必要ですか?理解していない。

a1 = 0x5A # hex 
a2 = 0x01 # hex 
a3 = 12 # decimal 
a4 = 28 # decimal 
a5 = sum((a1, a2, a3, a4)) 

int_array = [a1, a2, a3, a4, a5] 
print(int_array) 

hex_array = "".join(map(hex, int_array)) 
print(hex_array) 

あなたは得られます。

arrayクラスを使用して
[90, 1, 12, 28, 131] 
0x5a0x10xc0x1c0x83 

import array 

byte_array = array.array('B', int_array) 
print(byte_array) 
print(byte_array.tostring()) 

あなたが得られます。

array('B', [90, 1, 12, 28, 131]) 
b'Z\x01\x0c\x1c\x83' 
+0

ない進値の文字列が、BYTEをアレイ。 ser.write(bytearray)を使ってコマンドを送るのに使えるもの –

+0

'' sum''は1バイトサイズでオーバーフローします。必ずしも可能ではありません。 –

+0

0x5Aは1バイトである必要があります。 0x01は1バイト、12は1バイト...などです。私は和関数を使用する必要はありません –

関連する問題