Avatar billede mortvader Nybegynder
22. maj 2015 - 10:11 Der er 7 kommentarer og
1 løsning

Hvordan arbejder jeg med en DLL der er lavet i C(++)?

Jeg har noget dokumentation på en DLL jeg skal snakke med via Delphi XE6:

public static GpioDriver Instance;
The property returns an instance of the GPIO driver.
Example: GpioDriver gpio = GpioDriver.Instance

public ONOFF GetInputPort(IMPUT_PORT inp);
Return the current status of the digital input port.
imp: Port name: GPI_0 (0) .. GPI_3 (3)
Returns: ON (1) of OFF (0)
Example var state = gpio.GetInputPort(INPUT_PORT.GPI_2)


Mit spørgsmål er så: Jeg har aldrig arbejdet med DLL før, kan nogen hjælpe mig med at få noget til at fungere? Jeg har brug for at hente data fra en måler via den her DLL.

Jeg er villig til at betale for at få hurtig hjælp!

/Morten
Avatar billede sonalias Seniormester
22. maj 2015 - 10:34 #1
http://www.drbob42.com/delphi/headconv.htm
En dll er bare en funktion du ikke har source koden til.
Altså vil du (i c#) kunne bruge den som {namespace}.{function} efter at du har linket til den :)
Avatar billede mortvader Nybegynder
22. maj 2015 - 10:49 #2
Ja, jeg har prøvet at google, og har også kigget på den der artikel.

Men jeg har brug for noget lidt mere konkret i forhold til min udfordring:


Jeg skal først kalde "instance" for at returnere en instans hvorigennem jeg skal kalde de øvrige funktioner.


Instance  returnerer en "static GPioDriver", men hvordan refererer jeg lige til den i Delphi?
Avatar billede sonalias Seniormester
22. maj 2015 - 10:57 #3
Konkret:
procedure funktionsnavn; external 'filnavn.dll'

så noget i retning af
procedure GetInputPort(IMPUT_PORT inp); external 'filnavn.dll'

Skal siges jeg ikke selv bruger Delphi så jeg gætter lidt.
Avatar billede mortvader Nybegynder
22. maj 2015 - 10:59 #4
Tak for dit input sonalias, men jeg har også gættet lidt, og sidder altså bare fast :)

Jeg har brug for at nogen der sidder med konkret viden vil/kan hjælpe mig.

Som sagt er jeg klar til at punge ud, for at få noget der virker :)

/Morten
22. maj 2015 - 11:27 #5
HEJ,

Et forståelsesspørgsmål:

Er du ud på at hente en status kode (8/16 bit(s)) fra en inputport ?

Hvis JA, da vil jeg foreslå at du anvender enten en kode jeg jkan hjælpe dig med, eller standard input32 / output32 fra en WINDOWS DLL'er (jeg har ikke navnet her lige nu ) , men det er "bare" et opslag...

ellers er jeg bange for at jeg ikke kan hjælpe dig.

og hvis du insisterer på din egen DLL'er (public ONOFF GetInputPort(IMPUT_PORT inp);  )  (* jeg går ud fra at IMPUT = INPUT) kan jeg heller ikke hjælpe dig.  Beklager...

Kristian
Avatar billede mortvader Nybegynder
06. juni 2015 - 09:07 #6
Hejsa.

Sagen har taget den drejning, at det viser sig at den enhed jeg skal tale med også kan kobles til netværk. Så nu taler vi UDP, hvilket er meget nemmere at ordne. Jeg er allerede godt på vej til at have en færdig løsning.

Men hvis I gutter der har budt ind smider et svar, fordeler jeg points som tak for at i gad bruge tid på mig :)
06. juni 2015 - 15:26 #7
HEJ,

Bare drop mig i pointgivningen.

Kristian
Avatar billede sonalias Seniormester
10. juni 2015 - 12:16 #8
Du lukker bare selv da det ikke direkte fik hjulpet dig på vej, godt du fandt ud af en løsning :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester