Estoy tratando de escribir una GUI de MATLAB que utiliza la interfaz XBee-API para hablar con una radio inalámbrica XBee a bordo de un Arduino. La GUI principalmente hace la recopilación de datos y analiza los paquetes entrantes.Implementación de la interfaz Java en MATLAB
Quiero hacer un addPacketListener
como se define en the Developer's Guide (see section "Receiving Packets") para esperar a que los paquetes se procesen. En Java, esto es la forma en que se llevaría a cabo:
xbee.addPacketListener(new PacketListener() {
public void processResponse(XBeeResponse response) {
// handle the response
}
});
en MATLAB, me gustaría hacer una addlistener()
y establecer su devolución de llamada para hacer mi procesamiento.
Yo no sé mucho de todo acerca de Java, así que me preguntaba si es posible establecer el código processResponse
a la MATLAB: puedo hacer algo como la siguiente:
function processResponse
#% do response here
end
>> xbee.addPacketListener(@processResponse)
estoy no estoy seguro si esto tiene sentido completo; Básicamente, lo que intento lograr es ejecutar una devolución de llamada una vez que haya nuevos paquetes disponibles para mi XBee (que en Java se maneja con addPacketListener
).
No entiendo completamente lo que está preguntando. Cuando llamas al método addPacketListener como se ilustra arriba, pasas un nuevo objeto (una clase interna anónima), cuyo método processResponse se llamará cuando lleguen los paquetes. Esta es la devolución de llamada: solo complete la parte "manejar la respuesta" usted mismo. – cutchin
@cutchin para que pueda escribir una clase MATLAB separada que exporte un método 'processResponse' y pasar una instancia de esa clase a' addPacketListener'? Intenté pasar un objeto MATLAB con un método 'processResponse' y obtuve el siguiente error:' XB.addPacketListener (testclass) Ningún método 'addPacketListener' con la firma correspondiente encontrada para la clase 'com.rapplogic.xbee.api.XBee'' –
No soy un experto en la integración de MATLAB, pero creo que estás haciendo esto al revés. Escriba su código java para iniciar la interfaz XBee y recibir paquetes primero. Asegúrate de que funcione desde la línea de comando y puedes ver los paquetes que llegan. A partir de ahí, escriba una biblioteca (un archivo .jar) que importará en matlib y haga que recupere datos de su clase como se describe [aquí] (http://www.mathworks.com/help/techdoc/matlab_external/f6671). .html). – cutchin