java - 使用udp在java和simulink之间传输 double

标签 java matlab sockets network-programming simulink

我需要在 Java 程序和 Simulink 模型之间传输十进制值,为此我使用 UDP 套接字,它们在 Java 端没有问题。 在 Simulink 中,我可以使用“Stream Output” block 发送值,但是从 Java 接收时出现问题! “流输入” block 没有收到任何东西。 我使用的是标准设备 UDP 协议(protocol),具有正确的本地 UDP 端口,地址是“本地主机”。 请告诉我如何使用 udp 在 simulink 中正确接收 double 据,或者甚至使用其他方法,传输数据是什么问题。 提前致谢。 这里有一些代码:

localSocket = new DatagramSocket(9010);

...

 public static void localSend(String msg,int PORT) throws Exception{  
    DatagramPacket sendPacket = null,encPacket=null;
    try {
        sendPacket = new DatagramPacket(msg.getBytes(), msg.getBytes().length, InetAddress.getLocalHost(), PORT);
    } catch (Exception e) {
        System.out.printf("Error!");
    }
    localSocket.send(sendPacket);
}

在主要方法中:

localSend(myMessage, 9005);

'Input Stream' block 的'Board setup' 是 Simulink 如下: enter image description here

这是我如何从 Simulink ins Java 接收数据(方法):

    public static String localReceive() throws Exception{                     
     DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
     int count=0;
       try {
           localSocket.receive(receivePacket);
            return new String(receivePacket.getData(),receivePacket.getOffset(),receivePacket.getLength());
            } catch (SocketTimeoutException socketTimeoutException) {
                return defaultValue;
            }
 }

以及 Simulink 中“Output Stream” block 的设置: enter image description here

最佳答案

另一种解决方案,使用 Simulink 中的流输入。 只需在来自 java 的每条消息中添加一个终止符“\n”即可。

关于java - 使用udp在java和simulink之间传输 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36311156/

相关文章:

matlab - 在没有 'ans = ' 的命令窗口中打印 matlab?

python - 如何检测服务器正在关闭UNIX域套接字?

java - 如何在客户端/服务器 Java 应用程序中传输文件

java - Java 中泛型的未知编译错误

j2se 应用程序的监控和警报

java - 告诉 gradle 包含同一工作区中的 Eclipse 项目

java - OptionalInt 和 int 之间的区别?

matlab - Matlab中SVM分类的异常结果

matlab - 如何在matlab if语句中更新向量的长度

iphone - iphone 中的套接字编程示例