Hier in het bedrijf waar ik werk hebben we apparatuur die over TCP/IP te benaderen en aan te sturen is. Commando's voor dit apparaat en reacties van het apparaat worden eerst op een apparaat specifieke wijze versleuteld en daarna over UDP verstuurd.
Een van mijn taken is het schrijven van kleine besturingstools voor deze apparaten. Vandaar dat ik ooit een .pas bestandje heb geschreven waarmee het mogelijk is om een procedure aan te roepen die vervolgens het commando versleuteld, verstuurd en vervolgens de ontvangen data terug geeft aan de host applicatie door een functie daarin aan te roepen. De functie in de host applicatie die de gedecodeerde data ontvangt wordt meegegeven in de parameters van de verzend procedure (callback). Deze methode werkte altijd erg goed en is in een tiental tooltjes van mij verwerkt.
Nu, echter, bestaat de behoefte om deze verzend en ontvangst procedure in een DLL te stoppen zodat deze gemakkelijker uitgeleverd kan worden aan klanten voor custom oplossingen. Dit leek mij geen probleem, aangezien ik de .pas ook op een soort gelijke manier gebruikte. Echter, op het moment dat het een DLL is, reageert de code niet meer op het OnUDPRead Event. Events die heb gedefinieerd voor timers worden wel gewoon aangeroepen, maar zodra er een UDP pakket binnen komt reageert de code daar niet op. De code verstuurd wel gewoon de data.
Alles is volledig form-loos. TCP/IP communicatie gebeurd via Indy9. Alle componenten worden met de hand gemaakt en uiteindelijke ge-free-ed.
Zie ik nou iets over het hoofd? In principe moet code die in een EXE werkt toch ook zo in een DLL moeten kunnen werken?
Een van mijn taken is het schrijven van kleine besturingstools voor deze apparaten. Vandaar dat ik ooit een .pas bestandje heb geschreven waarmee het mogelijk is om een procedure aan te roepen die vervolgens het commando versleuteld, verstuurd en vervolgens de ontvangen data terug geeft aan de host applicatie door een functie daarin aan te roepen. De functie in de host applicatie die de gedecodeerde data ontvangt wordt meegegeven in de parameters van de verzend procedure (callback). Deze methode werkte altijd erg goed en is in een tiental tooltjes van mij verwerkt.
Nu, echter, bestaat de behoefte om deze verzend en ontvangst procedure in een DLL te stoppen zodat deze gemakkelijker uitgeleverd kan worden aan klanten voor custom oplossingen. Dit leek mij geen probleem, aangezien ik de .pas ook op een soort gelijke manier gebruikte. Echter, op het moment dat het een DLL is, reageert de code niet meer op het OnUDPRead Event. Events die heb gedefinieerd voor timers worden wel gewoon aangeroepen, maar zodra er een UDP pakket binnen komt reageert de code daar niet op. De code verstuurd wel gewoon de data.
Alles is volledig form-loos. TCP/IP communicatie gebeurd via Indy9. Alle componenten worden met de hand gemaakt en uiteindelijke ge-free-ed.
Zie ik nou iets over het hoofd? In principe moet code die in een EXE werkt toch ook zo in een DLL moeten kunnen werken?