【发布时间】:2020-07-06 11:19:42
【问题描述】:
我正在尝试为 python 和 simulink 之间的通信构建一个非常基本的原型,但我似乎无法将数据正确发送到 simulink。 接收和发送块中的连接检查工作正常,从 simulink 发送工作正常。我试过增加超时时间,但即使是 20 秒也没有什么不同。 我总是收到没有收到数据的错误:“在超时期限内没有返回指定数量的数据。 请确保数据正在发送到指定端口或指定更大的超时值。”
Simulink model 和 Simulink TCP-Receive block contents Python代码:
#!/usr/bin/env python3
import socket
import struct
HOST = 'localhost'
PORT_IN = 65430
PORT_OUT = 6902
s_in = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s_out = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s_in.bind((HOST, PORT_IN))
s_out.bind((HOST, PORT_OUT))
s_in.listen()
s_out.listen()
conn_in, addr_in = s_in.accept()
conn_out,addr_out = s_out.accept()
data = struct.pack('!d', 3.1415)
with conn_in:
print('Connected for input by', addr_in)
print('Connected for output by',addr_out)
while True:
data_in = conn_in.recv(16)
if not data_in:
break
print("Received data:",data_in)
conn_out.sendall(data_in)
s_in.close()
s_out.close()
PS:是的,我知道代码现在不漂亮/优雅,请原谅我稍后会修复它
【问题讨论】: