我需要在 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 如下:
这是我如何从 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 中的流输入。 只需在来自 java 的每条消息中添加一个终止符“\n”即可。
关于java - 使用udp在java和simulink之间传输 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36311156/