簡體   English   中英

通過UDP將數據從Simulink讀入Python

[英]Reading data from Simulink into Python over UDP

我想將數據從Simulink模型(實時運行)發送到Python腳本(實時運行。我正在使用Simulink的內置“ UDP Send”模塊,該模塊可以工作,但是我不知道如何解碼我得到的數據,這就是我的python腳本:

import sys, struct
from socket import *

SIZE = 1024      # packet size

hostName = gethostbyname('0.0.0.0')

mySocket  = socket( AF_INET, SOCK_DGRAM )
mySocket.bind((hostName,5002))

repeat = True
while repeat:
    (data,addr) = mySocket.recvfrom(SIZE)
    data = struct.unpack('d',data)
    print data

我懷疑數據流應該是類似double的東西,但是盡管它給了我數字,但它們沒有意義:

  • 如果simulink發送常數“ 1”,則輸出為“ 3.16e-322”

  • 如果Simulink發送常數“ 2”,則輸出為“ 3.038e-319”

有任何想法嗎?

原來我的網絡正在反轉數據包位。 解決方案是按位反轉方式讀取它:

data = struct.unpack('!d',data)

我不知道為什么這種情況會通過某些網絡而不是其他網絡發生。 有人可以發表評論以告知我是否需要使用位反轉嗎?

當發送方和接收方的字節順序不同時,就會發生此問題。 請參閱sys.byteorder。 最佳實踐應該是在發送時始終轉換為網絡順序,在接收時再次轉換為網絡順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM