在simulink中打包和解压缩块

时间:2015-08-13 22:54:52

标签: udp block simulink packing

我正在尝试在dspace微型自动装置之间设置UDP通信接口,其间通信接口可以在simulink中播放,而linux机器则使用julia代码接收/发送数据包。通过以太网发送双精度数组需要进行预处理。

enter image description here

我想知道dspace端的'pack'和'unpack'块实际上是这样做的,我可以在linux机器端重新创建相同的块来解码通过局域网发送的数据。

1 个答案:

答案 0 :(得分:0)

可以使用python中的struct模块在​​python中完成pack和unpack函数。以下是在simulink(dspace)端执行与pack和unpack块相同工作的函数。注意:dspace处理器是big endian,它解释了更改endianess块

示例代码:

 import struct as st

def pack_unpack_receive(X,len_data):
    packed_Uint8 = st.pack('B'*len(X),*X)
    unpacked_double = st.unpack('d'*len_data, packed_Uint8)
    return unpacked_double

def pack_unpack_send(X):
    packed_double = st.pack('d'*len(X),*X)
    unpacked_Uint8 = st.unpack('B'*len(X)*8,packed_double)
    return unpacked_double