Ich muss Dezimalwerte zwischen Java-Programm und einem Simulink-Modell zu übertragen, um dies zu tun, verwende ich UDP-Sockets, sie sind kein Problem in der Java-Seite. In Simulink kann ich die Werte senden mit 'Stream Output' Block, aber das Problem stellt sich beim Empfang von Java! der 'Stream-Eingang' Block erhält keine Sache. Ich verwende Standardgeräte UDP-Protokoll, mit dem richtigen lokalen UDP-Port und die Adresse ist 'localhost. Bitte sagen Sie mir, wie man ein Double in Simulink mit UDP oder sogar mit anderen Methoden korrekt erhält, was ist die Übertragung der Daten. danke im voraus. hier sind einige Code:Transfer verdoppelt zwischen Java und Simulink mit UDP
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);
}
und im Hauptverfahren:
localSend(myMessage, 9005);
der 'Vorstand Setup' des 'Input Stream' Block ist Simulink ist wie folgt:
hier ist, wie ich d ata aus Simulink ins Java (das Verfahren):
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;
}
}
und die Einrichtung von "Output Stream" Block in Simulink:
Sie müssen uns Ihre Blockparametereinstellungen mitteilen, sind Sie sicher, dass der Port/die Adresse alle korrekt sind? – GameOfThrows
ok, ich werde die Frage bearbeiten – mkm
@ nuser1955419 - Zeigen Sie uns, wie senden Sie Daten aus Simulink, und die entsprechenden Java-Code --- so viel ist nicht genug, um eine Antwort abzuleiten! –