我想将Visual Components 软件中的 MATLAB / Simulink 和 Python API连接在一起。我想在运行时/逐步更新中共享信息。有某种连接,但它会突然发生并停止,它也不是一步一步的,而且端口的地址与给定的地址不同。
可以看到Simulink屏幕截图here。虽然Python代码如下
#!/usr/bin/env python
from vcScript import *
import socket
import sys
import time
# start simulation
# -init TCP-Server
# -wait for connection
def createTCPIPServer(TCP_IP, TCP_PORT):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(30)
s.bind((TCP_IP, TCP_PORT))
s.listen(20)
conn, addr = s.accept()
print('Connection address:', addr)
conn.setblocking(1)
return conn
# at each simulation step
# read and write to TCP
def readTCP(conn):
BUFFER_SIZE = 1 # Normally 1024
data = conn.recv(BUFFER_SIZE)
return data
def writeTCP(conn,data):
conn.sendall(data) # echo
# end simulation
# close connection
def closeTCP(conn):
print("Close connection in 5 sec")
time.sleep(10)
conn.close()
print("connection closed")
def OnSignal( signal ):
pass
def OnRun():
#createTCPIPClient(4112)
conn = createTCPIPServer('127.0.0.1', 5005)
while 1:
data = readTCP(conn)
if not data: break
print("received data:", data)
writeTCP(conn,data)
closeTCP(conn)
pass
在Simulink中,取消注释 TCP / IP接收块:双方运行,Python端等待,超时后失败。 See here.
在Simulink中, TCP / IP接收块被注释:双方都在运行,Python端等待,超时后它会突然显示所有收到的值。 See here.
我希望在运行时/逐步中与输出正确连接,以便在Visual Components中处理它。如何获得所需的稳定输出?