【问题标题】:Simulink doesn't receive data from python tcp serverSimulink 不接收来自 python tcp 服务器的数据
【发布时间】:2020-07-06 11:19:42
【问题描述】:

我正在尝试为 python 和 simulink 之间的通信构建一个非常基本的原型,但我似乎无法将数据正确发送到 simulink。 接收和发送块中的连接检查工作正常,从 simulink 发送工作正常。我试过增加超时时间,但即使是 20 秒也没有什么不同。 我总是收到没有收到数据的错误:“在超时期限内没有返回指定数量的数据。 请确保数据正在发送到指定端口或指定更大的超时值。”

Simulink modelSimulink 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:是的,我知道代码现在不漂亮/优雅,请原谅我稍后会修复它

【问题讨论】:

    标签: python tcp simulink


    【解决方案1】:

    虽然我最初认为这是一个不同的问题,但this fix 竟然解决了这个问题。 Simulink 要求在接收块之前执行发送块,无论您是否为这些块使用不同的套接字。

    【讨论】:

      猜你喜欢
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 2015-05-18
      相关资源
      最近更新 更多