De TiePie engineering callback-adapter is een universele callback naar COM-event-adapter. Deze kan gebruikt worden in situaties waar een callback-routine gebruikt moet worden in een omgeving die geen callbacks ondersteunt, maar wel COM-events. Een voorbeeld van zo'n omgeving is Matlab.
Matlab ondersteunt het doorgeven van een pointer naar een callback-routine niet. Volgens de Mathworks website is er geen manier om in Matlab met callback-routines te werken:
De mogelijkheid om gedeelde library-functies met functie-pointer-parameters te gebruiken is niet aanwezig in Matlab. Het is niet mogelijk een functie in Matlab te schrijven die compatibel is met een C-functie-pointer.
De oplossing die met de callback-adapter geboden wordt is een COM-object te maken die fungeert als omzetter van een callback naar een COM-event. Omdat Matlab kan reageren op een COM-event door een script uit te voeren, is dit een bruikbare oplossing.
TiePie engineering USB oscilloscopen ondersteunen continu ononderbroken streaming meten. Iedere keer dat een blok meetwaarden is vastgelegd, kan het programma deze ophalen, terwijl het instrument door blijft meten. De instrument-DLL gebruikt een callback-functie om het programma deze waarden te laten ophalen en verwerken. Omdat Matlab geen callback-functies ondersteunt, is de callback-adapter nodig om de callback om te zetten naar een COM-event. Omdat Matlab kan reageren op een COM-event door een script uit te voeren, kan Matlab de waarden ophalen en verwerken.
Het gebruik van de callback-adapter is niet gelimiteerd tot uitvoeren van streaming metingen met een TiePie engineering instrument in Matlab. Het kan gebruikt worden in iedere situatie waar een callback-functie nodig is en de programmeeromgeving geen callback-functies ondersteunt maar wel COM-events.
Het zip-bestand bevat een TPCallback.DLL en twee batch-bestanden voor het registreren en uitschrijven van de DLL. Plaats deze bestanden in een map op de computer, de exacte locatie is niet belangrijk, maar de bestanden moeten na installatie wel op die plaats blijven staan. Voer daarna het batch-bestand TPCallback_Register.bat in die map uit. Dit registreert het COM-object 'TPCallback.TiePieCallbackAdapter' wat daarna klaar is voor gebruik.
In Matlab wordt dit gedaan met:
hCallBackAdapter = actxserver('TPCallback.TiePieCallbackAdapter');
hCallBackAdapter.registerevent( {'OnCallbackCalled' 'CallbackScript'} );
calllib('DLL' , 'SetDataReadyCallback', hCallBackAdapter.CallbackPointer);
Het COM-event OnCallbackCalled wordt nu iedere keer opgewekt wanneer de callback-routine van het adapter-object wordt aangeroepen.
Om de callback-adapter weer uit het systeem te verwijderen moet naar de map met de callback-adapter-DLL gegaan worden en daar het batch-bestand TPCallback_Unregister.bat uitgevoerd worden. Nadat de DLL uitgeschreven is kan de map met alle inhoud verwijderd worden.