2015-08-13 1 views
1

J'essaie de configurer une interface de communication UDP entre un micro autobox dspace dont l'interface de communication peut être jouée en simulink et une machine Linux où je reçois/envoie des paquets en utilisant le code julia. Il y a ce pré-traitement nécessaire pour envoyer des tableaux de doubles sur ethernet.Pack et décompresser des blocs dans simulink

enter image description here

Je voulais savoir ce que les blocs « pack » et « déballer » du côté dSPACE fait pour que je puisse recréer le même sur le côté de la machine linux pour décoder les données envoyées sur le réseau local.

+0

Pouvez-vous confirmer quelle bibliothèque ces Pack et bloc Déballez viennent? Et montrez-nous les paramètres de dialogue des blocs? – am304

+0

Je pense que le lien suivant a les fonctions qui font les travaux prévus (https://www.mathworks.com/examples/matlab-communications/4726-codegen-of-pack-and-unpack-example) et la boîte à outils avec ces blocs est (http://www.mathworks.com/matlabcentral/fileexchange/50696-pack-and-unpack-data) – nikamanth

Répondre

0

Les fonctions pack et unpack peuvent être effectuées en python en utilisant le module struct en python. Voici les fonctions qui ont fait le même travail que les blocs pack et décompresser du côté simulink (dspace). Remarque: processeur dspace est grand endian ce qui explique le changement de blocs endianess

exemple de code:

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