[英]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.