我有一个需要通过串行通信发送字节数组的程序。我不知道如何在python中做出这样的事情。 我找到了一个c / c ++ / java函数,它创建了所需的字节数组:
byte[] floatArrayToByteArray(float[] input)
{
int len = 4*input.length;
int index=0;
byte[] b = new byte[4];
byte[] out = new byte[len];
ByteBuffer buf = ByteBuffer.wrap(b);
for(int i=0;i<input.length;i++)
{
buf.position(0);
buf.putFloat(input[i]);
for(int j=0;j<4;j++) out[j+i*4]=b[3-j];
}
return out;
}
但是如何将其转换为python代码。 编辑:将串行数据发送到设备。我无法更改固件的地方。 感谢
答案 0 :(得分:2)
将数据放入数组(此处为[0,1,2]),并使用:serial.write()发送。我假设您已正确打开串口。
curl -skA "Mozilla/5.0" https://www.facebook.com/idorecall/ | grep -oE "fb://[^\"]+"
使用:Binary data with pyserial(python serial port) 而这:pySerial write() won't take my string
答案 1 :(得分:0)
这取决于您是否发送有符号或无符号和其他参数。有很多关于此的文档。这是我过去使用过的一个例子。
x1= 0x04
x2 = 0x03
x3 = 0x02
x4 = x1+ x2+x3
input_array = [x1, x2, x3, x4]
write_bytes = struct.pack('<' + 'B' * len(input_array), *input_array)
ser.write(write_bytes)
要理解为什么我使用'B'和'&lt;'你必须参考pyserial文档。