Ho bisogno di trasferire valori decimali tra il programma Java e un modello Simulink, per farlo uso i socket UDP, non sono un problema nel lato java. In Simulink sono in grado di inviare i valori usando il blocco 'Stream Output', ma il problema si presenta durante la ricezione da java! il blocco 'Stream input' non riceve nulla. Sto usando il protocollo standard UDP, con la porta UDP locale corretta e l'indirizzo è 'localhost'. Per favore dimmi come ricevere correttamente un doppio in simulink con udp, o anche con altri metodi, che importa trasferire i dati. grazie in anticipo. qui sono un certo codice:trasferimento doppio tra java e simulink usando 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);
}
e nel metodo principale:
localSend(myMessage, 9005);
'setup Board' del blocco del 'Input flusso' è Simulink è come qui sotto:
ecco come ricevo d ata da Simulink ins Java (il metodo):
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;
}
}
e la configurazione di blocco "Uscita Stream" in Simulink:
è necessario dirci le impostazioni dei parametri di blocco, sei sicuro che la porta/indirizzo sono tutti corretti? – GameOfThrows
ok, modifico la domanda – mkm
@ nuser1955419 - Mostraci come stai inviando dati da Simulink e il codice Java pertinente --- questo è insufficiente per dedurre una risposta! –