小编mkm*_*mkm的帖子

使用udp在java和simulink之间传输双精度数

我需要在Java程序和Simulink模型之间传输十进制值,为此我使用UDP套接字,它们在java方面没有问题.在Simulink中,我能够使用"Stream Output"块发送值,但是从java接收时会出现问题!'Stream input'块没有收到任何东西.我正在使用标准设备UDP protocole,使用正确的本地UDP端口,地址是'localhost.请告诉我如何正确地使用udp在simulink中接收双倍,或者甚至用其他方法,什么是传输数据.提前致谢.这里有一些代码:

localSocket = new DatagramSocket(9010);
Run Code Online (Sandbox Code Playgroud)

...

 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);
}
Run Code Online (Sandbox Code Playgroud)

在主要方法中:

localSend(myMessage, 9005);
Run Code Online (Sandbox Code Playgroud)

"输入流"块的"电路板设置"是Simulink,如下所示: 在此输入图像描述

这是我如何从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;
            }
 }
Run Code Online (Sandbox Code Playgroud)

并在Simulink中设置"输出流"块: 在此输入图像描述

java sockets matlab network-programming simulink

6
推荐指数
1
解决办法
694
查看次数

标签 统计

java ×1

matlab ×1

network-programming ×1

simulink ×1

sockets ×1